diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 0000000..cfa9c21 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,55 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "contributorsPerLine": 7, + "projectName": "al-folio", + "projectOwner": "alshedivat", + "repoType": "github", + "repoHost": "https://github.com", + "badgeTemplate": "[core_contributors]: https://img.shields.io/badge/core_contributors-<%= contributors.length %>-orange.svg 'Number of core contributors'", + "contributorTemplate": "\">\" width=\"<%= options.imageSize %>px;\" alt=\"\"/>
<%= contributor.name %>
", + "skipCi": true, + "contributors": [ + { + "login": "alshedivat", + "name": "Maruan", + "avatar_url": "https://avatars.githubusercontent.com/u/2126561?v=4", + "profile": "http://maruan.alshedivat.com", + "contributions": [ + "design", + "code" + ] + }, + { + "login": "rohandebsarkar", + "name": "Rohan Deb Sarkar", + "avatar_url": "https://avatars.githubusercontent.com/u/50144004?v=4", + "profile": "http://rohandebsarkar.github.io", + "contributions": [ + "code" + ] + }, + { + "login": "pourmand1376", + "name": "Amir Pourmand", + "avatar_url": "https://avatars.githubusercontent.com/u/32064808?v=4", + "profile": "https://amirpourmand.ir", + "contributions": [ + "code" + ] + }, + { + "login": "george-gca", + "name": "George", + "avatar_url": "https://avatars.githubusercontent.com/u/31376482?v=4", + "profile": "https://george-gca.github.io/", + "contributions": [ + "code" + ] + } + ], + "commitConvention": "angular" +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7e82674 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +_site/ +.git/ +assets/ diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..511f585 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Acknowledge the following** +- [ ] I carefully read and followed the [Getting Started](https://github.com/alshedivat/al-folio#getting-started) guide. +- [ ] I read through [FAQ](https://github.com/alshedivat/al-folio#faq) and searched through the [past issues](https://github.com/alshedivat/al-folio/issues), none of which addressed my issue. +- [ ] The issue I am raising is a potential bug in al-folio and not just a usage question.
[For usage questions, please post in the [Discussions](https://github.com/alshedivat/al-folio/discussions) instead of raising an issue.] + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**System (please complete the following information):** + - OS: [e.g. iOS] + - Browser (and its version) [e.g. chrome, safari] + - Jekyll version [e.g. 3.8.7] +- Ruby version [e.g. 2.6.5] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..11fc491 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..4fdc27e --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,14 @@ +changelog: + exclude: + labels: + - ignore-for-release + categories: + - title: new features 🚀 + labels: + - enhancement + - title: bug fixes and improvements ✨ + labels: + - bug-fix + - title: other changes 🛠️ + labels: + - "*" diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..8ec2004 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,18 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security + - enhancement +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.github/workflows/deploy-docker-tag.yml b/.github/workflows/deploy-docker-tag.yml new file mode 100644 index 0000000..db9f8fc --- /dev/null +++ b/.github/workflows/deploy-docker-tag.yml @@ -0,0 +1,45 @@ +name: Docker Image CI (Upload Tag) + +on: + push: + tags: + - 'v*' + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Buildx + uses: docker/setup-buildx-action@v2 + + - + name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: amirpourmand/al-folio + + - name: Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64,linux/arm64/v8 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + diff --git a/.github/workflows/deploy-image.yml b/.github/workflows/deploy-image.yml new file mode 100644 index 0000000..3582c4e --- /dev/null +++ b/.github/workflows/deploy-image.yml @@ -0,0 +1,36 @@ +name: Docker Image CI + +on: + push: + branches: [ master ] + +jobs: + + build: + + runs-on: ubuntu-latest + if: github.repository_owner == 'alshedivat' + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64/v8 + tags: amirpourmand/al-folio diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..ba61f8a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,49 @@ +name: deploy + +on: + push: + branches: + - master + - main + pull_request: + branches: + - master + - main + workflow_dispatch: + +permissions: + contents: write + +jobs: + deploy: + # available images: https://github.com/actions/runner-images#available-images + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v3 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.2.2' + bundler-cache: true + - name: Update _config.yml ⚙️ + uses: fjogeleit/yaml-update-action@v0.13.1 + with: + commitChange: false + valueFile: '_config.yml' + propertyPath: 'giscus.repo' + value: ${{ github.repository }} + - name: Install and Build 🔧 + run: | + pip3 install --upgrade jupyter + npm install -g mermaid.cli + npm install -g purgecss + export JEKYLL_ENV=production + bundle exec jekyll build --lsi + purgecss -c purgecss.config.js + - name: Deploy 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: _site + diff --git a/.github/workflows/docker-slim.yml b/.github/workflows/docker-slim.yml new file mode 100644 index 0000000..54a3c19 --- /dev/null +++ b/.github/workflows/docker-slim.yml @@ -0,0 +1,51 @@ +name: Docker Slim + +#Only trigger, when the build workflow succeeded +on: + workflow_run: + workflows: ["Docker Image CI"] + types: + - completed + +# on: +# push: +# branches: +# - 'master' + +jobs: + build: + runs-on: ubuntu-latest + if: github.repository_owner == 'alshedivat' + + defaults: + run: + working-directory: ${{ github.workspace }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: update docker-compose + shell: bash + run: | + sed -i "s|\.:|${{ github.workspace }}:|g" ${{ github.workspace }}/docker-compose.yml + cat ${{ github.workspace }}/docker-compose.yml + + - uses: kitabisa/docker-slim-action@v1.0.3 + env: + DSLIM_PULL: true + DSLIM_COMPOSE_FILE: ${{ github.workspace }}/docker-compose.yml + DSLIM_TARGET_COMPOSE_SVC: jekyll + DSLIM_CONTINUE_AFTER: signal + with: + target: amirpourmand/al-folio + tag: "slim" + + # Push to the registry + - run: docker image push amirpourmand/al-folio:slim diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b97cf91 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +_site +.bundle +.sass-cache +.jekyll-cache +.jekyll-metadata +.DS_store +.ruby-version +.tweet-cache +Gemfile.lock +vendor + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..ca7e465 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,10 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files diff --git a/404.html b/404.html new file mode 100644 index 0000000..2b454ca --- /dev/null +++ b/404.html @@ -0,0 +1,9 @@ +--- +layout: page +permalink: /404.html +title: "Page not found" +description: "Looks like there has been a mistake. Nothing exists here." +redirect: true +--- + +

You will be redirected to the main page within 3 seconds. If not redirected, please go back to the home page.

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..349456b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,25 @@ +# Contributing to al-folio +Thank you for considering to contribute to al-folio! + + +## Pull Requests +We welcome your pull requests (PRs). +For minor fixes (e.g., documentation improvements), feel free to submit a PR directly. +If you would like to implement a new feature or a bug, please make sure you (or someone else) has opened an appropriate issue first; in your PR, please mention the issue it addresses. + + +## Issues +We use GitHub issues to track bugs and feature requests. +Before submitting an issue, please make sure: + +1. You have read [the FAQ section](https://github.com/alshedivat/al-folio#faq) of the README and your question is NOT addressed there. +2. You have done your best to ensure that your issue is NOT a duplicate of one of [the previous issues](https://github.com/alshedivat/al-folio/issues). +3. Your issue is either a bug (unexpected/undesirable behavior) or a feature request. +If it is just a question, please ask it in the [Discussions](https://github.com/alshedivat/al-folio/discussions) forum. + +When submitting an issue, please make sure to use the appropriate template. + + +## License +By contributing to al-folio, you agree that your contributions will be licensed +under the LICENSE file in the root directory of the source tree. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e55a99f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM ubuntu:latest +ENV DEBIAN_FRONTEND noninteractive + +Label MAINTAINER Amir Pourmand + +RUN apt-get update -y && apt-get install -y --no-install-recommends \ + locales \ + imagemagick \ + ruby-full \ + build-essential \ + zlib1g-dev \ + jupyter-nbconvert \ + inotify-tools procps && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* + + +RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ + locale-gen + + +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US:en \ + LC_ALL=en_US.UTF-8 \ + JEKYLL_ENV=production + +# install jekyll and dependencies +RUN gem install jekyll bundler + +RUN mkdir /srv/jekyll + +ADD Gemfile /srv/jekyll + +WORKDIR /srv/jekyll + +RUN bundle install --no-cache +# && rm -rf /var/lib/gems/3.1.0/cache +EXPOSE 8080 + +COPY bin/entry_point.sh /tmp/entry_point.sh + +CMD ["/tmp/entry_point.sh"] diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..522f335 --- /dev/null +++ b/Gemfile @@ -0,0 +1,27 @@ +source 'https://rubygems.org' +group :jekyll_plugins do + gem 'classifier-reborn' + gem 'jekyll' + gem 'jekyll-archives' + gem 'jekyll-diagrams' + gem 'jekyll-email-protect' + gem 'jekyll-feed' + gem 'jekyll-get-json' + gem 'jekyll-imagemagick' + gem 'jekyll-jupyter-notebook' + gem 'jekyll-link-attributes' + gem 'jekyll-minifier' + gem 'jekyll-paginate-v2' + gem 'jekyll-scholar' + gem 'jekyll-sitemap' + gem 'jekyll-toc' + gem 'jekyll-twitter-plugin' + gem 'jemoji' + gem 'mini_racer' + gem 'unicode_utils' + gem 'webrick' +end +group :other_plugins do + gem 'feedjira' + gem 'httparty' +end diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f2b8681 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2022 Maruan Al-Shedivat. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ad624d8 --- /dev/null +++ b/README.md @@ -0,0 +1,737 @@ +# al-folio + +[maintainers]: https://img.shields.io/badge/maintainers-4-success.svg 'Number of maintainers' + + +[![deploy](https://github.com/alshedivat/al-folio/actions/workflows/deploy.yml/badge.svg)](https://github.com/alshedivat/al-folio/actions/workflows/deploy.yml) +[![demo](https://img.shields.io/badge/theme-demo-brightgreen.svg)](https://alshedivat.github.io/al-folio/) +[![GitHub contributors](https://img.shields.io/github/contributors/alshedivat/al-folio.svg)](https://github.com/alshedivat/al-folio/graphs/contributors/) +[![Maintainers][maintainers]](#maintainers) +[![GitHub release](https://img.shields.io/github/v/release/alshedivat/al-folio)](https://github.com/alshedivat/al-folio/releases/latest) +[![GitHub license](https://img.shields.io/github/license/alshedivat/al-folio?color=blue)](https://github.com/alshedivat/al-folio/blob/master/LICENSE) +[![GitHub stars](https://img.shields.io/github/stars/alshedivat/al-folio)](https://github.com/alshedivat/al-folio) +[![GitHub forks](https://img.shields.io/github/forks/alshedivat/al-folio)](https://github.com/alshedivat/al-folio/fork) + +[![Docker Image Version](https://img.shields.io/docker/v/amirpourmand/al-folio?sort=semver&label=docker%20image&color=blueviolet)](https://hub.docker.com/r/amirpourmand/al-folio) +[![Docker Image Size](https://img.shields.io/docker/image-size/amirpourmand/al-folio?sort=date&label=docker%20image%20size&color=blueviolet)](https://hub.docker.com/r/amirpourmand/al-folio) +[![Docker Pulls](https://img.shields.io/docker/pulls/amirpourmand/al-folio?color=blueviolet)](https://hub.docker.com/r/amirpourmand/al-folio) + +A simple, clean, and responsive [Jekyll](https://jekyllrb.com/) theme for academics. +If you like the theme, give it a star! + +[![Preview](https://raw.githubusercontent.com/alshedivat/al-folio/master/assets/img/al-folio-preview.png)](https://alshedivat.github.io/al-folio/) + +## User community + +The vibrant community of **al-folio** users is growing! +Academics around the world use this theme for their homepages, blogs, lab pages, as well as webpages for courses, workshops, conferences, meetups, and more. +Check out the community webpages below. +Feel free to add your own page(s) by sending a PR. + + + + + + + + + + + + + + + + + + +
Academics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Labs + + + + + + + +
Courses +CMU PGM (S-19)
+CMU DeepRL (F-19, S-20, F-20, S-21, F-21, S-22)
+CMU MMML (F-20, F-22)
+CMU AMMML (S-22, S-23)
+CMU ASI (S-23)
+CMU Distributed Systems (S-21) +
Conferences & workshops +ICLR Blog Post Track (2023, 2024)
+ML Retrospectives (NeurIPS: 2019, 2020; ICML: 2020)
+HAMLETS (NeurIPS: 2020)
+ICBINB (NeurIPS: 2020, 2021)
+Neural Compression (ICLR: 2021)
+Score Based Methods (NeurIPS: 2022)
+Images2Symbols (CogSci: 2022)
+Medical Robotics Junior Faculty Forum (ISMR: 2023)
+Beyond Vision: Physics meets AI (ICIAP: 2023)
+Workshop on Diffusion Models (NeurIPS: 2023) +
+ +## Lighthouse PageSpeed Insights + +[![Google PageSpeed](https://raw.githubusercontent.com/alshedivat/al-folio/master/assets/img/pagespeed.svg)](https://pagespeed.web.dev/report?url=https%3A%2F%2Falshedivat.github.io%2Fal-folio%2F&form_factor=desktop) + +## Table Of Contents + +- [al-folio](#al-folio) + - [User community](#user-community) + - [Lighthouse PageSpeed Insights](#lighthouse-pagespeed-insights) + - [Table Of Contents](#table-of-contents) + - [Getting started](#getting-started) + - [Installation](#installation) + - [Local setup using Docker (Recommended)](#local-setup-using-docker-recommended) + - [Local Setup (Legacy)](#local-setup-legacy) + - [Deployment](#deployment) + - [Upgrading from a previous version](#upgrading-from-a-previous-version) + - [FAQ](#faq) + - [Features](#features) + - [CV](#cv) + - [Publications](#publications) + - [Collections](#collections) + - [Layouts](#layouts) + - [The iconic style of Distill](#the-iconic-style-of-distill) + - [Full support for math \& code](#full-support-for-math--code) + - [Photos](#photos) + - [Other features](#other-features) + - [GitHub's repositories and user stats](#githubs-repositories-and-user-stats) + - [Theming](#theming) + - [Social media previews](#social-media-previews) + - [Atom (RSS-like) Feed](#atom-rss-like-feed) + - [Related posts](#related-posts) + - [Contributing](#contributing) + - [Maintainers](#maintainers) + - [All Contributors](#all-contributors) + - [License](#license) + +## Getting started + +Want to learn more about Jekyll? Check out [this tutorial](https://www.taniarascia.com/make-a-static-website-with-jekyll/). +Why Jekyll? Read [Andrej Karpathy's blog post](https://karpathy.github.io/2014/07/01/switching-to-jekyll/)! + +### Installation + +The recommended approach for using **al-folio** is to first create your own site using the template with as few changes as possible, and only when it is up and running customize it however you like. This way it is easier to pinpoint what causes a potential issue in case of a bug. The minimum steps required to create your own site are: + +1. Create a new repository using this template. For this, click on `Use this template -> Create a new repository` above the file list. If you plan to upload your site to `.github.io`, note that the name of your repository MUST BE `.github.io` or `.github.io`, as stated in the [GitHub pages docs](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites). +2. In this new repository, go to `Settings -> Actions -> General -> Workflow permissions` and give `Read and write permissions` to GitHub Actions. +3. Open file `_config.yml`, set `url` to `https://.github.io` and leave `baseurl` **empty**. +4. Finally, in the repository page go to `Settings -> Pages -> Build and deployment`, make sure that `Source` is set to `Deploy from a branch` and set the branch to `gh-pages` (NOT to master). +5. Wait until the GitHub actions finish, then simply navigate to `https://.github.io` in your browser. At this point you should see a copy of the theme's demo website. + +After everything is set up, you can download the repository to your machine and start customizing it. To do so, run the following commands: + +```bash +$ git clone git@github.com:/.git +``` + +--- + +#### Local setup using Docker (Recommended) + +Using Docker to install Jekyll and Ruby dependencies is the easiest way. + +You need to take the following steps to get `al-folio` up and running on your local machine: + +- First, install [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/). +- Finally, run the following command that will pull the latest pre-built image from DockerHub and will run your website. + +```bash +$ docker compose pull +$ docker compose up +``` + +Note that when you run it for the first time, it will download a docker image of size 400MB or so. To see the template running, open your browser and go to `http://localhost:8888`. You should see a copy of the theme's demo website. + +Now, feel free to customize the theme however you like (don't forget to change the name!). After you are done, you can use the same command (`docker compose up`) to render the webpage with all you changes. Also, make sure to commit your final changes. + +> To change port number, you can edit `docker-compose.yml` file. + +
(click to expand) Build your own docker image: + +> Note: this approach is only necessary if you would like to build an older or very custom version of al-folio. + +Build and run a new docker image using: + +```bash +$ docker compose up --build +``` + +> If you want to update jekyll, install new ruby packages, etc., all you have to do is build the image again using `--force-recreate` argument at the end of the previous command! It will download Ruby and Jekyll and install all Ruby packages again from scratch. + +If you want to use a specific docker version, you can do so by changing `latest` tag to `your_version` in `docker-compose.yaml`. For example, you might have created your website on `v0.10.0` and you want to stick with that. + +- Beta +You can also change the docker image tag to slim! It is a slimmed docker image with a size of below 100MBs (same functionality). + +
+ +--- + +#### Local Setup (Legacy) + +For a hands-on walkthrough of running al-folio locally without using Docker, check out [this cool blog post](https://george-gca.github.io/blog/2022/running-local-al-folio/) by one of the community members! + +Assuming you have [Ruby](https://www.ruby-lang.org/en/downloads/) and [Bundler](https://bundler.io/) installed on your system (*hint: for ease of managing ruby gems, consider using [rbenv](https://github.com/rbenv/rbenv)*), and also [Python](https://www.python.org/) and [pip](https://pypi.org/project/pip/) (*hint: for ease of managing python packages, consider using a virtual environment, like [venv](https://docs.python.org/pt-br/3/library/venv.html) or [conda](https://docs.conda.io/en/latest/). If you will use only `jupyter`, you can use [pipx](https://pypa.github.io/pipx/)*). + +```bash +$ bundle install +# assuming pip is your Python package manager +$ pip install jupyter +$ bundle exec jekyll serve --lsi +``` + +To see the template running, open your browser and go to `http://localhost:4000`. You should see a copy of the theme's demo website. Now, feel free to customize the theme however you like. After you are done, remember to **commit** your final changes. + +--- + +#### Deployment + +Deploying your website to [GitHub Pages](https://pages.github.com/) is the most popular option. +Starting version [v0.3.5](https://github.com/alshedivat/al-folio/releases/tag/v0.3.5), **al-folio** will automatically re-deploy your webpage each time you push new changes to your repository! :sparkles: + +**For personal and organization webpages:** + +1. The name of your repository **MUST BE** `.github.io` or `.github.io`. +2. In `_config.yml`, set `url` to `https://.github.io` and leave `baseurl` empty. +3. Set up automatic deployment of your webpage (see instructions below). +4. Make changes, commit, and push! +5. After deployment, the webpage will become available at `.github.io`. + +**For project pages:** + +1. In `_config.yml`, set `url` to `https://.github.io` and `baseurl` to `//`. +2. Set up automatic deployment of your webpage (see instructions below). +3. Make changes, commit, and push! +4. After deployment, the webpage will become available at `.github.io//`. + +**To enable automatic deployment:** + +1. Click on **Actions** tab and **Enable GitHub Actions**; do not worry about creating any workflows as everything has already been set for you. +2. Go to `Settings -> Actions -> General -> Workflow permissions`, and give `Read and write permissions` to GitHub Actions +3. Make any other changes to your webpage, commit, and push. This will automatically trigger the **Deploy** action. +4. Wait for a few minutes and let the action complete. You can see the progress in the **Actions** tab. If completed successfully, in addition to the `master` branch, your repository should now have a newly built `gh-pages` branch. +5. Finally, in the **Settings** of your repository, in the Pages section, set the branch to `gh-pages` (**NOT** to `master`). For more details, see [Configuring a publishing source for your GitHub Pages site](https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#choosing-a-publishing-source). + +If you keep your site on another branch, open `.github/workflows/deploy.yml` **on the branch you keep your website on** and change on->push->branches and on->pull\_request->branches to the branch you keep your website on. This will trigger the action on pulls/pushes on that branch. The action will then deploy the website on the branch it was triggered from. + +
(click to expand) Manual deployment to GitHub Pages: + +If you need to manually re-deploy your website to GitHub pages, go to Actions, click "Deploy" in the left sidebar, then "Run workflow." + +
+ +
(click to expand) Deployment to another hosting server (non GitHub Pages): + +If you decide to not use GitHub Pages and host your page elsewhere, simply run: + +```bash +$ bundle exec jekyll build --lsi +``` + +which will (re-)generate the static webpage in the `_site/` folder. +Then simply copy the contents of the `_site/` directory to your hosting server. + +If you also want to remove unused css classes from your file, run: + +```bash +$ purgecss -c purgecss.config.js +``` + +which will replace the css files in the `_site/assets/css/` folder with the purged css files. + +**Note:** Make sure to correctly set the `url` and `baseurl` fields in `_config.yml` before building the webpage. If you are deploying your webpage to `your-domain.com/your-project/`, you must set `url: your-domain.com` and `baseurl: /your-project/`. If you are deploying directly to `your-domain.com`, leave `baseurl` blank. + +
+ +
(click to expand) Deployment to a separate repository (advanced users only): + +**Note:** Do not try using this method unless you know what you are doing (make sure you are familiar with [publishing sources](https://help.github.com/en/github/working-with-github-pages/about-github-pages#publishing-sources-for-github-pages-sites)). This approach allows to have the website's source code in one repository and the deployment version in a different repository. + +Let's assume that your website's publishing source is a `publishing-source` subdirectory of a git-versioned repository cloned under `$HOME/repo/`. +For a user site this could well be something like `$HOME/.github.io`. + +Firstly, from the deployment repo dir, checkout the git branch hosting your publishing source. + +Then from the website sources dir (commonly your al-folio fork's clone): + +```bash +$ bundle exec jekyll build --lsi --destination $HOME/repo/publishing-source +``` + +This will instruct jekyll to deploy the website under `$HOME/repo/publishing-source`. + +**Note:** Jekyll will clean `$HOME/repo/publishing-source` before building! + +The quote below is taken directly from the [jekyll configuration docs](https://jekyllrb.com/docs/configuration/options/): + +> Destination folders are cleaned on site builds +> +> The contents of `` are automatically cleaned, by default, when the site is built. Files or folders that are not created by your site will be removed. Some files could be retained by specifying them within the `` configuration directive. +> +> Do not use an important location for ``; instead, use it as a staging area and copy files from there to your web server. + +If `$HOME/repo/publishing-source` contains files that you want jekyll to leave untouched, specify them under `keep_files` in `_config.yml`. +In its default configuration, al-folio will copy the top-level `README.md` to the publishing source. If you want to change this behavior, add `README.md` under `exclude` in `_config.yml`. + +**Note:** Do _not_ run `jekyll clean` on your publishing source repo as this will result in the entire directory getting deleted, irrespective of the content of `keep_files` in `_config.yml`. + +
+ +--- + +#### Upgrading from a previous version + +If you installed **al-folio** as described above, you can configure a [GitHub action](https://github.com/AndreasAugustin/actions-template-sync) to automatically sync your repository with the latest version of the theme. + +Go to Settings -> Actions -> General -> Workflow permissions, give Read and write permissions to GitHub Actions, check "Allow GitHub Actions to create and approve pull requests", and save your changes. + +Then go to Actions -> New workflow -> set up a workflow yourself, setup the following workflow and commit your changes: + +```yaml +name: Sync from template +on: + # cronjob trigger + schedule: + - cron: "0 0 1 * *" + # manual trigger + workflow_dispatch: +jobs: + repo-sync: + runs-on: ubuntu-latest + steps: + # To use this repository's private action, you must check out the repository + - name: Checkout + uses: actions/checkout@v3 + - name: actions-template-sync + uses: AndreasAugustin/actions-template-sync@v0.7.3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + source_repo_path: alshedivat/al-folio + upstream_branch: master +``` + +You will receive a pull request within your repository if there are some changes available in the template. + +Another option is to manually update your code by following the steps below: + +```bash +# Assuming the current directory is +$ git remote add upstream https://github.com/alshedivat/al-folio.git +$ git fetch upstream +$ git rebase v0.9.0 +``` + +If you have extensively customized a previous version, it might be trickier to upgrade. +You can still follow the steps above, but `git rebase` may result in merge conflicts that must be resolved. +See [git rebase manual](https://help.github.com/en/github/using-git/about-git-rebase) and how to [resolve conflicts](https://help.github.com/en/github/using-git/resolving-merge-conflicts-after-a-git-rebase) for more information. +If rebasing is too complicated, we recommend re-installing the new version of the theme from scratch and port over your content and changes from the previous version manually. + +--- + +### FAQ + +Here are some frequently asked questions. +If you have a different question, please ask using [Discussions](https://github.com/alshedivat/al-folio/discussions/categories/q-a). + +1. **Q:** After I create a new repository from this template and setup the repo, I get a deployment error. + Isn't the website supposed to correctly deploy automatically?
+ **A:** Yes, if you are using release `v0.3.5` or later, the website will automatically and correctly re-deploy right after your first commit. + Please make some changes (e.g., change your website info in `_config.yml`), commit, and push. + Make sure to follow [deployment instructions](https://github.com/alshedivat/al-folio#deployment) in the previous section. + (Relevant issue: [209](https://github.com/alshedivat/al-folio/issues/209#issuecomment-798849211).) + +2. **Q:** I am using a custom domain (e.g., `foo.com`). + My custom domain becomes blank in the repository settings after each deployment. + How do I fix that?
+ **A:** You need to add `CNAME` file to the `master` or `source` branch of your repository. + The file should contain your custom domain name. + (Relevant issue: [130](https://github.com/alshedivat/al-folio/issues/130).) + +3. **Q:** My webpage works locally. + But after deploying, it fails to build and throws `Unknown tag 'toc'`. + How do I fix that?
+ **A:** Make sure you followed through the [deployment instructions](#deployment) in the previous section. + You should have set the deployment branch to `gh-pages`. + (Related issue: [1438](https://github.com/alshedivat/al-folio/issues/1438).) + +4. **Q:** My webpage works locally. + But after deploying, it is not displayed correctly (CSS and JS is not loaded properly). + How do I fix that?
+ **A:** Make sure to correctly specify the `url` and `baseurl` paths in `_config.yml`. + Set `url` to `https://.github.io` or to `https://` if you are using a custom domain. + If you are deploying a personal or organization website, leave `baseurl` blank. + If you are deploying a project page, set `baseurl: //`. + If all previous steps were done correctly, all is missing is + [for your browser to fetch again the site stylesheet](https://github.com/alshedivat/al-folio/issues/1398#issuecomment-1609518404). + +5. **Q:** Atom feed doesn't work. Why? +
+ **A:** Make sure to correctly specify the `url` and `baseurl` paths in `_config.yml`. + RSS Feed plugin works with these correctly set up fields: `title`, `url`, `description` and `author`. + Make sure to fill them in an appropriate way and try again. + +6. **Q:** My site doesn't work when I enable `related_blog_posts`. Why?
+ **A:** This is probably due to the [classifier reborn](https://github.com/jekyll/classifier-reborn) plugin, which is used to calculate + related posts. If the error states `Liquid Exception: Zero vectors can not be normalized...`, it means that it could not calculate related + posts for a specific post. This is usually caused by [empty or minimal blog posts](https://github.com/jekyll/classifier-reborn/issues/64) + without meaningful words (i.e. only [stop words](https://en.wikipedia.org/wiki/Stop_words)) or even + [specific characters](https://github.com/jekyll/classifier-reborn/issues/194) you used in your posts. Also, the calculus for similar posts are + made for every `post`, which means every page that uses `layout: post`, including the announcements. To change this behavior, simply add + `related_posts: false` to the front matter of the page you don't want to display related posts on. + +7. **Q:** When trying to deploy, it's asking for github login credentials, which github disabled password authentication and it exits with an error. How to fix?
+ **A:** Open .git/config file using your preferred editor. Change the `https` portion of the `url` variable to `ssh`. Try deploying again. + +## Features + +### CV + +There are currently 2 different ways of generating the CV page content. The first one is by using a json file located in `assets/json/resume.json`. It is a [known standard](https://jsonresume.org/) for creating a CV programmatically. The second one, currently used as a fallback when the json file is not found, is by using a yml file located in `_data/cv.yml`. This was the original way of creating the CV page content and since it is more human readable than a json file we decided to keep it as an option. + +What this means is, if there is no resume data defined in `_config.yml` and loaded via a json file, it will load the contents of `_data/cv.yml` as fallback. + +### Publications + +Your publications' page is generated automatically from your BibTex bibliography. +Simply edit `_bibliography/papers.bib`. +You can also add new `*.bib` files and customize the look of your publications however you like by editing `_pages/publications.md`. + +

+ +
(click to expand) Author annotation: + +In publications, the author entry for yourself is identified by string array `scholar:last_name` and string array `scholar:first_name` in `_config.yml`: + +```yaml +scholar: + last_name: [Einstein] + first_name: [Albert, A.] +``` + +If the entry matches one form of the last names and the first names, it will be underlined. +Keep meta-information about your co-authors in `_data/coauthors.yml` and Jekyll will insert links to their webpages automatically. +The co-author data format in `_data/coauthors.yml` is as follows, + +```yaml +"Adams": + - firstname: ["Edwin", "E.", "E. P.", "Edwin Plimpton"] + url: https://en.wikipedia.org/wiki/Edwin_Plimpton_Adams + +"Podolsky": + - firstname: ["Boris", "B.", "B. Y.", "Boris Yakovlevich"] + url: https://en.wikipedia.org/wiki/Boris_Podolsky + +"Rosen": + - firstname: ["Nathan", "N."] + url: https://en.wikipedia.org/wiki/Nathan_Rosen + +"Bach": + - firstname: ["Johann Sebastian", "J. S."] + url: https://en.wikipedia.org/wiki/Johann_Sebastian_Bach + + - firstname: ["Carl Philipp Emanuel", "C. P. E."] + url: https://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach +``` + +If the entry matches one of the combinations of the last names and the first names, it will be highlighted and linked to the url provided. + +
+ +
(click to expand) Buttons (through custom bibtex keywords): + +There are several custom bibtex keywords that you can use to affect how the entries are displayed on the webpage: + +- `abbr`: Adds an abbreviation to the left of the entry. You can add links to these by creating a venue.yaml-file in the _data folder and adding entries that match. +- `abstract`: Adds an "Abs" button that expands a hidden text field when clicked to show the abstract text +- `arxiv`: Adds a link to the Arxiv website (Note: only add the arxiv identifier here - the link is generated automatically) +- `bibtex_show`: Adds a "Bib" button that expands a hidden text field with the full bibliography entry +- `html`: Inserts an "HTML" button redirecting to the user-specified link +- `pdf`: Adds a "PDF" button redirecting to a specified file (if a full link is not specified, the file will be assumed to be placed in the /assets/pdf/ directory) +- `supp`: Adds a "Supp" button to a specified file (if a full link is not specified, the file will be assumed to be placed in the /assets/pdf/ directory) +- `blog`: Adds a "Blog" button redirecting to the specified link +- `code`: Adds a "Code" button redirecting to the specified link +- `poster`: Adds a "Poster" button redirecting to a specified file (if a full link is not specified, the file will be assumed to be placed in the /assets/pdf/ directory) +- `slides`: Adds a "Slides" button redirecting to a specified file (if a full link is not specified, the file will be assumed to be placed in the /assets/pdf/ directory) +- `website`: Adds a "Website" button redirecting to the specified link +- `altmetric`: Adds an [Altmetric](https://www.altmetric.com/) badge (Note: if DOI is provided just use `true`, otherwise only add the altmetric identifier here - the link is generated automatically) +- `dimensions`: Adds a [Dimensions](https://www.dimensions.ai/) badge (Note: if DOI or PMID is provided just use `true`, otherwise only add the Dimensions' identifier here - the link is generated automatically) + +You can implement your own buttons by editing the bib.html file. + +
+ +--- + +### Collections + +This Jekyll theme implements `collections` to let you break up your work into categories. +The theme comes with two default collections: `news` and `projects`. +Items from the `news` collection are automatically displayed on the home page. +Items from the `projects` collection are displayed on a responsive grid on projects page. + +

+ +You can easily create your own collections, apps, short stories, courses, or whatever your creative work is. +To do this, edit the collections in the `_config.yml` file, create a corresponding folder, and create a landing page for your collection, similar to `_pages/projects.md`. + +--- + +### Layouts + +**al-folio** comes with stylish layouts for pages and blog posts. + +#### The iconic style of Distill + +The theme allows you to create blog posts in the [distill.pub](https://distill.pub/) style: + +

+ +For more details on how to create distill-styled posts using `` tags, please refer to [the example](https://alshedivat.github.io/al-folio/blog/2021/distill/). + +#### Full support for math & code + +**al-folio** supports fast math typesetting through [MathJax](https://www.mathjax.org/) and code syntax highlighting using [GitHub style](https://github.com/jwarby/jekyll-pygments-themes): + +

+ + +

+ +#### Photos + +Photo formatting is made simple using [Bootstrap's grid system](https://getbootstrap.com/docs/4.4/layout/grid/). +Easily create beautiful grids within your blog posts and project pages: + +

+ + + +

+ +--- + +### Other features + +#### GitHub's repositories and user stats + +**al-folio** uses [github-readme-stats](https://github.com/anuraghazra/github-readme-stats) and [github-profile-trophy](https://github.com/ryo-ma/github-profile-trophy) +to display GitHub repositories and user stats on the `/repositories/` page. + +Edit the `_data/repositories.yml` and change the `github_users` and `github_repos` lists to include your own GitHub profile and repositories to the `/repositories/` page. + +You may also use the following codes for displaying this in any other pages. + +```html + +{% if site.data.repositories.github_users %} +
+ {% for user in site.data.repositories.github_users %} + {% include repository/repo_user.html username=user %} + {% endfor %} +
+{% endif %} + + +{% if site.repo_trophies.enabled %} +{% for user in site.data.repositories.github_users %} + {% if site.data.repositories.github_users.size > 1 %} +

{{ user }}

+ {% endif %} +
+ {% include repository/repo_trophies.html username=user %} +
+{% endfor %} +{% endif %} + + +{% if site.data.repositories.github_repos %} +
+ {% for repo in site.data.repositories.github_repos %} + {% include repository/repo.html repository=repo %} + {% endfor %} +
+{% endif %} +``` + +#### Theming + +A variety of beautiful theme colors have been selected for you to choose from. +The default is purple, but you can quickly change it by editing the +`--global-theme-color` variable in the `_sass/_themes.scss` file. +Other color variables are listed there as well. +The stock theme color options available can be found at `_sass/_variables.scss`. +You can also add your own colors to this file assigning each a name for ease of +use across the template. + +#### Social media previews + +**al-folio** supports preview images on social media. +To enable this functionality you will need to set `serve_og_meta` to `true` in your `_config.yml`. +Once you have done so, all your site's pages will include Open Graph data in the HTML head element. + +You will then need to configure what image to display in your site's social media previews. +This can be configured on a per-page basis, by setting the `og_image` page variable. +If for an individual page this variable is not set, then the theme will fall back to a site-wide `og_image` variable, configurable in your `_config.yml`. +In both the page-specific and site-wide cases, the `og_image` variable needs to hold the URL for the image you wish to display in social media previews. + +#### Atom (RSS-like) Feed + +It generates an Atom (RSS-like) feed of your posts, useful for Atom and RSS readers. +The feed is reachable simply by typing after your homepage `/feed.xml`. +E.g. assuming your website mountpoint is the main folder, you can type `yourusername.github.io/feed.xml` + +#### Related posts + +By default, there will be a related posts section on the bottom of the blog posts. +These are generated by selecting the `max_related` most recent posts that share at least `min_common_tags` tags with the current post. +If you do not want to display related posts on a specific post, simply add `related_posts: false` to the front matter of the post. +If you want to disable it for all posts, simply set `enabled` to false in the `related_blog_posts` section in `_config.yml`. + +## Contributing + +Contributions to al-folio are very welcome! +Before you get started, please take a look at [the guidelines](CONTRIBUTING.md). + +If you would like to improve documentation, add your webpage to the list below, or fix a minor inconsistency or bug, please feel free to send a PR directly to `master`. +For more complex issues/bugs or feature requests, please open an issue using the appropriate template. + +### Maintainers + +Our most active contributors are welcome to join the maintainers team. +If you are interested, please reach out! + + + + + + + + + + + + + +

Maruan

Rohan Deb Sarkar

Amir Pourmand

George
+ + + + + + +### All Contributors + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## License + +The theme is available as open source under the terms of the [MIT License](https://github.com/alshedivat/al-folio/blob/master/LICENSE). + +Originally, **al-folio** was based on the [\*folio theme](https://github.com/bogoli/-folio) (published by [Lia Bogoev](https://liabogoev.com) and under the MIT license). +Since then, it got a full re-write of the styles and many additional cool features. diff --git a/_bibliography/papers.bib b/_bibliography/papers.bib new file mode 100644 index 0000000..ce201ff --- /dev/null +++ b/_bibliography/papers.bib @@ -0,0 +1,84 @@ +--- +--- + +@string{aps = {American Physical Society,}} + +@book{einstein1956investigations, + bibtex_show={true}, + title={Investigations on the Theory of the Brownian Movement}, + author={Einstein, Albert}, + year={1956}, + publisher={Courier Corporation}, + preview={brownian-motion.gif} +} + +@article{einstein1950meaning, + abbr={AJP}, + bibtex_show={true}, + title={The meaning of relativity}, + author={Einstein, Albert and Taub, AH}, + journal={American Journal of Physics}, + volume={18}, + number={6}, + pages={403--404}, + year={1950}, + publisher={American Association of Physics Teachers} +} + +@article{PhysRev.47.777, + abbr={PhysRev}, + title={Can Quantum-Mechanical Description of Physical Reality Be Considered Complete?}, + author={Einstein, A. and Podolsky, B. and Rosen, N.}, + abstract={In a complete theory there is an element corresponding to each element of reality. A sufficient condition for the reality of a physical quantity is the possibility of predicting it with certainty, without disturbing the system. In quantum mechanics in the case of two physical quantities described by non-commuting operators, the knowledge of one precludes the knowledge of the other. Then either (1) the description of reality given by the wave function in quantum mechanics is not complete or (2) these two quantities cannot have simultaneous reality. Consideration of the problem of making predictions concerning a system on the basis of measurements made on another system that had previously interacted with it leads to the result that if (1) is false then (2) is also false. One is thus led to conclude that the description of reality as given by a wave function is not complete.}, + journal={Phys. Rev.}, + volume={47}, + issue={10}, + pages={777--780}, + numpages={0}, + year={1935}, + month={May}, + publisher=aps, + doi={10.1103/PhysRev.47.777}, + url={http://link.aps.org/doi/10.1103/PhysRev.47.777}, + html={https://journals.aps.org/pr/abstract/10.1103/PhysRev.47.777}, + pdf={example_pdf.pdf}, + altmetric={248277}, + dimensions={true}, + selected={true} +} + +@article{einstein1905molekularkinetischen, + title={{\"U}ber die von der molekularkinetischen Theorie der W{\"a}rme geforderte Bewegung von in ruhenden Fl{\"u}ssigkeiten suspendierten Teilchen}, + author={Einstein, A.}, + journal={Annalen der physik}, + volume={322}, + number={8}, + pages={549--560}, + year={1905}, + publisher={Wiley Online Library} +} + +@article{einstein1905movement, + abbr={Ann. Phys.}, + title={Un the movement of small particles suspended in statiunary liquids required by the molecular-kinetic theory 0f heat}, + author={Einstein, A.}, + journal={Ann. Phys.}, + volume={17}, + pages={549--560}, + year={1905} +} + +@article{einstein1905electrodynamics, + title={On the electrodynamics of moving bodies}, + author={Einstein, A.}, + year={1905} +} + +@book{przibram1967letters, + bibtex_show={true}, + title={Letters on wave mechanics}, + author={Einstein, Albert and Schrödinger, Erwin and Planck, Max and Lorentz, Hendrik Antoon and Przibram, Karl}, + year={1967}, + publisher={Vision}, + preview={wave-mechanics.gif} +} diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..9a2e739 --- /dev/null +++ b/_config.yml @@ -0,0 +1,418 @@ +# ----------------------------------------------------------------------------- +# Site settings +# ----------------------------------------------------------------------------- + +title: blank # the website title (if blank, full name will be used instead) +first_name: You +middle_name: R. +last_name: Name +email: you@example.com +description: > # the ">" symbol means to ignore newlines until "footer_text:" + A simple, whitespace theme for academics. Based on [*folio](https://github.com/bogoli/-folio) design. +footer_text: > + Powered by Jekyll with al-folio theme. + Hosted by GitHub Pages. + Photos from Unsplash. +keywords: jekyll, jekyll-theme, academic-website, portfolio-website # add your own keywords or leave empty + +lang: en # the language of your site (for example: en, fr, cn, ru, etc.) +icon: ⚛️ # the emoji used as the favicon (alternatively, provide image name in /assets/img/) + +url: https://alshedivat.github.io # the base hostname & protocol for your site +baseurl: /al-folio # the subpath of your site, e.g. /blog/ +last_updated: false # set to true if you want to display last updated in the footer +impressum_path: # set to path to include impressum link in the footer, use the same path as permalink in a page, helps to conform with EU GDPR + +# ----------------------------------------------------------------------------- +# Theme +# ----------------------------------------------------------------------------- + +# repo color theme +repo_theme_light: default # https://github.com/anuraghazra/github-readme-stats/blob/master/themes/README.md +repo_theme_dark: dark # https://github.com/anuraghazra/github-readme-stats/blob/master/themes/README.md +repo_trophies: + enabled: true + theme_light: flat # https://github.com/ryo-ma/github-profile-trophy + theme_dark: gitdimmed # https://github.com/ryo-ma/github-profile-trophy + +# ----------------------------------------------------------------------------- +# RSS Feed +# ----------------------------------------------------------------------------- +# will use title and url fields +# Take a look to https://github.com/jekyll/jekyll-feed for more customization + +rss_icon: true + +# ----------------------------------------------------------------------------- +# Layout +# ----------------------------------------------------------------------------- + +navbar_fixed: true +footer_fixed: true + +# Dimensions +max_width: 800px + +# TODO: add layout settings (single page vs. multi-page) + +# ----------------------------------------------------------------------------- +# Open Graph & Schema.org +# ----------------------------------------------------------------------------- +# Display links to the page with a preview object on social media. +serve_og_meta: false # Include Open Graph meta tags in the HTML head +serve_schema_org: false # Include Schema.org in the HTML head +og_image: # The site-wide (default for all links) Open Graph preview image + +# ----------------------------------------------------------------------------- +# Social integration +# ----------------------------------------------------------------------------- + +github_username: # your GitHub user name +gitlab_username: # your GitLab user name +x_username: # your X handle +mastodon_username: # your mastodon instance+username in the format instance.tld/@username +linkedin_username: # your LinkedIn user name +telegram_username: # your Telegram user name +scholar_userid: # your Google Scholar ID +semanticscholar_id: # your Semantic Scholar ID +whatsapp_number: # your WhatsApp number (full phone number in international format. Omit any zeroes, brackets, or dashes when adding the phone number in international format.) +orcid_id: # your ORCID ID +medium_username: # your Medium username +quora_username: # your Quora username +publons_id: # your ID on Publons +lattes_id: # your ID on Lattes (Brazilian Lattes CV) +osf_id: # your OSF ID +research_gate_profile: # your profile on ResearchGate +scopus_id: # your profile on Scopus +blogger_url: # your blogger URL +work_url: # work page URL +keybase_username: # your keybase user name +wikidata_id: # your wikidata id +wikipedia_id: # your wikipedia id (Case sensitive) +dblp_url: # your DBLP profile url +stackoverflow_id: # your stackoverflow id +kaggle_id: # your kaggle id +lastfm_id: # your lastfm id +spotify_id: # your spotify id +pinterest_id: # your pinterest id +unsplash_id: # your unsplash id +instagram_id: # your instagram id +facebook_id: # your facebook id +youtube_id: # your youtube channel id (youtube.com/@) +discord_id: # your discord id (18-digit unique numerical identifier) +zotero_username: # your zotero username +wechat_qr: # filename of your wechat qr-code saved as an image (e.g., wechat-qr.png if saved to assets/img/wechat-qr.png) + +contact_note: > + You can even add a little note about which of these is the best way to reach you. + +# ----------------------------------------------------------------------------- +# Analytics and search engine verification +# ----------------------------------------------------------------------------- + +google_analytics: # your Google Analytics measurement ID (format: G-XXXXXXXXXX) +cronitor_analytics: # cronitor RUM analytics site ID (format: XXXXXXXXX) + +google_site_verification: # your google-site-verification ID (Google Search Console) +bing_site_verification: # out your bing-site-verification ID (Bing Webmaster) + +# ----------------------------------------------------------------------------- +# Blog +# ----------------------------------------------------------------------------- + +blog_name: al-folio # blog_name will be displayed in your blog page +blog_nav_title: blog # your blog must have a title for it to be displayed in the nav bar +blog_description: a simple whitespace theme for academics +permalink: /blog/:year/:title/ + +# Pagination +pagination: + enabled: true + +related_blog_posts: + enabled: true + max_related: 5 + +# Giscus comments (RECOMMENDED) +# Follow instructions on https://giscus.app/ to setup for your repo to fill out +# the information below. +giscus: + repo: # / + category: Comments # name of the category under which discussions will be created + mapping: title # identify discussions by post title + strict: 1 # use strict identification mode + reactions_enabled: 1 # enable (1) or disable (0) emoji reactions + input_position: bottom # whether to display input form below (bottom) or above (top) the comments + theme: preferred_color_scheme # name of the color scheme (preferred works well with al-folio light/dark mode) + emit_metadata: 0 + lang: en + +# Disqus comments (DEPRECATED) +disqus_shortname: al-folio # put your disqus shortname +# https://help.disqus.com/en/articles/1717111-what-s-a-shortname + +# External sources. +# If you have blog posts published on medium.com or other external sources, +# you can display them in your blog by adding a link to the RSS feed. +external_sources: + - name: medium.com + rss_url: https://medium.com/@al-folio/feed + +# ----------------------------------------------------------------------------- +# Collections +# ----------------------------------------------------------------------------- + +collections: + news: + defaults: + layout: post + output: true + permalink: /news/:path/ + projects: + output: true + permalink: /projects/:path/ + +announcements: + enabled: true + scrollable: true # adds a vertical scroll bar if there are more than 3 news items + limit: 5 # leave blank to include all the news in the `_news` folder + +latest_posts: + enabled: true + scrollable: true # adds a vertical scroll bar if there are more than 3 new posts items + limit: 3 # leave blank to include all the blog posts + +# ----------------------------------------------------------------------------- +# Jekyll settings +# ----------------------------------------------------------------------------- + +# Markdown and syntax highlight +markdown: kramdown +highlighter: rouge +kramdown: + input: GFM + syntax_highlighter_opts: + css_class: 'highlight' + span: + line_numbers: false + block: + line_numbers: false + start_line: 1 + +# Includes & excludes +include: ['_pages'] +exclude: + - bin + - Gemfile + - Gemfile.lock + - vendor +keep_files: + - CNAME + - .nojekyll + - .git + +# Plug-ins +plugins: + - jekyll-archives + - jekyll-diagrams + - jekyll-email-protect + - jekyll-feed + - jekyll-get-json + - jekyll-imagemagick + - jekyll-jupyter-notebook + - jekyll-link-attributes + - jekyll-minifier + - jekyll-paginate-v2 + - jekyll/scholar + - jekyll-sitemap + - jekyll-toc + - jekyll-twitter-plugin + - jemoji + +# Sitemap settings +defaults: + - scope: + path: "assets" + values: + sitemap: false + +sass: + style: compressed + +# ----------------------------------------------------------------------------- +# Jekyll Minifier +# ----------------------------------------------------------------------------- + +jekyll-minifier: + exclude: ['robots.txt'] + uglifier_args: + harmony: true + +# ----------------------------------------------------------------------------- +# Jekyll Archives +# ----------------------------------------------------------------------------- + +jekyll-archives: + enabled: [year, tags, categories] # enables year, tag and category archives (remove if you need to disable one of them). + layouts: + year: archive-year + tag: archive-tag + category: archive-category + permalinks: + year: '/blog/:year/' + tag: '/blog/tag/:name/' + category: '/blog/category/:name/' + +display_tags: ['formatting', 'images', 'links', 'math', 'code'] # these tags will be displayed on the front page of your blog +display_categories: ['blockquotes'] # these categories will be displayed on the front page of your blog + +# ----------------------------------------------------------------------------- +# Jekyll Scholar +# ----------------------------------------------------------------------------- + +scholar: + + last_name: [Einstein] + first_name: [Albert, A.] + + style: apa + locale: en + + source: /_bibliography/ + bibliography: papers.bib + bibliography_template: bib + # Note: if you have latex math in your bibtex, the latex filter + # preprocessing may conflict with MathJAX if the latter is enabled. + # See https://github.com/alshedivat/al-folio/issues/357. + bibtex_filters: [latex, smallcaps, superscript] + + replace_strings: true + join_strings: true + + details_dir: bibliography + details_layout: bibtex.html + details_link: Details + + query: "@*" + group_by: year + group_order: descending + +# Display different badges withs stats for your publications +enable_publication_badges: + altmetric: true # Altmetric badge (https://www.altmetric.com/products/altmetric-badges/) + dimensions: true # Dimensions badge (https://badge.dimensions.ai/) + +# Filter out certain bibtex entry keywords used internally from the bib output +filtered_bibtex_keywords: [abbr, abstract, arxiv, bibtex_show, html, pdf, selected, supp, blog, code, poster, slides, website, preview, altmetric] + +# Maximum number of authors to be shown for each publication (more authors are visible on click) +max_author_limit: 3 # leave blank to always show all authors +more_authors_animation_delay: 10 # more authors are revealed on click using animation; smaller delay means faster animation + +# Enables publication thumbnails. If disabled, none of the publications will display thumbnails, even if specified in the bib entry. +enable_publication_thumbnails: true + +# ----------------------------------------------------------------------------- +# Jekyll Link Attributes +# ----------------------------------------------------------------------------- + +# These are the defaults +external_links: + enabled: true + rel: external nofollow noopener + target: _blank + exclude: + + +# ----------------------------------------------------------------------------- +# Responsive WebP Images +# ----------------------------------------------------------------------------- + +imagemagick: + enabled: true # enables responsive images for your site (recommended, see https://github.com/alshedivat/al-folio/issues/537) + widths: + - 480 + - 800 + - 1400 + input_directories: + - assets/img/ + input_formats: + - ".jpg" + - ".jpeg" + - ".png" + - ".tiff" + output_formats: + webp: "-resize 800x" + +# ----------------------------------------------------------------------------- +# Jekyll Diagrams +# ----------------------------------------------------------------------------- + +jekyll-diagrams: + # configuration, see https://github.com/zhustec/jekyll-diagrams. + # feel free to comment out this section if not using jekyll diagrams. + + +# ----------------------------------------------------------------------------- +# Optional Features +# ----------------------------------------------------------------------------- + +enable_google_analytics: false # enables google analytics +enable_cronitor_analytics: false # enables cronitor RUM analytics +enable_google_verification: false # enables google site verification +enable_bing_verification: false # enables bing site verification +enable_masonry: true # enables automatic project cards arrangement +enable_math: true # enables math typesetting (uses MathJax) +enable_tooltips: false # enables automatic tooltip links generated + # for each section titles on pages and posts +enable_darkmode: true # enables switching between light/dark modes +enable_navbar_social: false # enables displaying social links in the + # navbar on the about page +enable_project_categories: true # enables categorization of projects into + # multiple categories +enable_medium_zoom: true # enables image zoom feature (as on medium.com) +enable_progressbar: true # enables a horizontal progress bar linked to the vertical scroll position + +# ----------------------------------------------------------------------------- +# Library versions +# ----------------------------------------------------------------------------- + +bootstrap-table: + version: "1.22.1" +jquery: + version: "3.6.0" + integrity: "sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" +mathjax: + version: "3.2.0" +masonry: + version: "4.2.2" + integrity: "sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" +mdb: + version: "4.20.0" + integrity: + css: "sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" + js: "sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" +medium_zoom: + version: "1.0.8" + integrity: "sha256-7PhEpEWEW0XXQ0k6kQrPKwuoIomz8R8IYyuU1Qew4P8=" + +# ----------------------------------------------------------------------------- +# Get external JSON data +# ----------------------------------------------------------------------------- + +jekyll_get_json: + - data: resume + json: assets/json/resume.json # it can also be an url +jsonresume: + - basics + - work + - education + - publications + - projects + - volunteer + - awards + - certificates + - skills + - languages + - interests + - references diff --git a/_data/coauthors.yml b/_data/coauthors.yml new file mode 100644 index 0000000..8ed5212 --- /dev/null +++ b/_data/coauthors.yml @@ -0,0 +1,34 @@ +"Adams": + - firstname: ["Edwin", "E.", "E. P.", "Edwin Plimpton"] + url: https://en.wikipedia.org/wiki/Edwin_Plimpton_Adams + +"Podolsky": + - firstname: ["Boris", "B.", "B. Y.", "Boris Yakovlevich"] + url: https://en.wikipedia.org/wiki/Boris_Podolsky + +"Rosen": + - firstname: ["Nathan", "N."] + url: https://en.wikipedia.org/wiki/Nathan_Rosen + +"Bach": + - firstname: ["Johann Sebastian", "J. S."] + url: https://en.wikipedia.org/wiki/Johann_Sebastian_Bach + + - firstname: ["Carl Philipp Emanuel", "C. P. E."] + url: https://en.wikipedia.org/wiki/Carl_Philipp_Emanuel_Bach + +"Przibram": + - firstname: ["Karl"] + url: https://link.springer.com/article/10.1007/s00016-019-00242-z + +"Schrödinger": + - firstname: ["Erwin"] + url: https://en.wikipedia.org/wiki/Erwin_Schr%C3%B6dinger + +"Lorentz": + - firstname: ["Hendrik Antoon"] + url: https://en.wikipedia.org/wiki/Hendrik_Lorentz + +"Planck": + - firstname: ["Max"] + url: https://en.wikipedia.org/wiki/Max_Planck diff --git a/_data/cv.yml b/_data/cv.yml new file mode 100644 index 0000000..5b11572 --- /dev/null +++ b/_data/cv.yml @@ -0,0 +1,97 @@ +- title: General Information + type: map + contents: + - name: Full Name + value: Albert Einstein + - name: Date of Birth + value: 14th March 1879 + - name: Languages + value: English, German + +- title: Education + type: time_table + contents: + - title: PhD + institution: University of Zurich, Zurich, Switzerland + year: 1905 + description: + - Description 1. + - Description 2. + - title: Description 3. + contents: + - Sub-description 1. + - Sub-description 2. + - title: Federal teaching diploma + institution: Eidgenössische Technische Hochschule, Zurich, Switzerland + year: 1900 + description: + - Description 1. + - Description 2. + +- title: Experience + type: time_table + contents: + - title: Professor of Theoretical Physics + institution: Institute for Advanced Study, Princeton University + year: 1933 - 1955 + description: + - Description 1. + - Description 2. + - title: Description 3. + contents: + - Sub-description 1. + - Sub-description 2. + - title: Visiting Professor + institution: California Institute of Technology, Pasadena, California, US + year: 1933 + description: + - Description 1. + - Description 2. + + - title: Director + institution: Kaiser Wilhelm Institute for Physics, Berlin, Germany. + year: 1917-1933 + + - title: Professor of Theoretical Physics + institution: Karl-Ferdinand University, Prague, Czechoslovakia + year: 1911 - 1917 + description: + + - title: Associate Professor of Theoretical Physics + institution: University of Zurich, Zurich, Switzerland + year: 1909 - 1911 + +- title: Open Source Projects + type: time_table + contents: + - title: al-folio + year: 2015-now + description: A beautiful, simple, clean, and responsive Jekyll theme for academics. + +- title: Honors and Awards + type: time_table + contents: + - year: 1921 + items: + - Nobel Prize in Physics + - Matteucci Medal + - year: 2029 + items: + - Max Planck Medal + +- title: Academic Interests + type: nested_list + contents: + - title: Topic 1. + items: + - Description 1. + - Description 2. + - title: Topic 2. + items: + - Description 1. + - Description 2. + +- title: Other Interests + type: list + contents: + - Hobbies: Hobby 1, Hobby 2, etc. diff --git a/_data/repositories.yml b/_data/repositories.yml new file mode 100644 index 0000000..5205c9f --- /dev/null +++ b/_data/repositories.yml @@ -0,0 +1,12 @@ +github_users: + - torvalds + - alshedivat + +github_repos: + - alshedivat/al-folio + - twbs/bootstrap + - jekyll/jekyll + - jquery/jquery + - FortAwesome/Font-Awesome + - jpswalsh/academicons + - mathjax/MathJax diff --git a/_data/venues.yml b/_data/venues.yml new file mode 100644 index 0000000..6c16ad5 --- /dev/null +++ b/_data/venues.yml @@ -0,0 +1,6 @@ +"AJP": + url: https://aapt.scitation.org/journal/ajp + color: "#00369f" + +"PhysRev": + url: https://journals.aps.org/ diff --git a/_includes/audio.html b/_includes/audio.html new file mode 100644 index 0000000..277addc --- /dev/null +++ b/_includes/audio.html @@ -0,0 +1,16 @@ +
+ +
diff --git a/_includes/cv/list.html b/_includes/cv/list.html new file mode 100644 index 0000000..7562585 --- /dev/null +++ b/_includes/cv/list.html @@ -0,0 +1,5 @@ +
    + {% for content in entry.contents %} +
  • {{ content }}
  • + {% endfor %} +
\ No newline at end of file diff --git a/_includes/cv/list_groups.html b/_includes/cv/list_groups.html new file mode 100644 index 0000000..e2eda0c --- /dev/null +++ b/_includes/cv/list_groups.html @@ -0,0 +1,43 @@ +
+ {% for content in entry.contents %} +
+ + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + {% for item in content.items %} + + + + {% if item.level %} + + {% endif %} + {% if item.school %} + + {% else %} + + {% endif %} + {% if item.link %} + + {% endif %} + + {% endfor %} + +
{{ content.category }}
{{ item.name }}{{ item.level }}{{ item.school }} + {% endif %} + {% if item.time %} +
{{ item.time }}
+
+ {% endfor %} +
diff --git a/_includes/cv/map.html b/_includes/cv/map.html new file mode 100644 index 0000000..5f53a90 --- /dev/null +++ b/_includes/cv/map.html @@ -0,0 +1,27 @@ + + {% for content in entry.contents %} + + + {% if content.value %} + + {% endif %} + {% if content.links %} + + {% endif %} + + {% endfor %} +
{{ content.name }}{{ content.value }} +
+ {% for item in content.links %} + {% if item.link %} + + {% endif %} + {% endfor %} +
+
diff --git a/_includes/cv/nested_list.html b/_includes/cv/nested_list.html new file mode 100644 index 0000000..4778aca --- /dev/null +++ b/_includes/cv/nested_list.html @@ -0,0 +1,14 @@ +
    + {% for content in entry.contents %} +
  • +
    {{ content.title }}
    + {% if content.items %} +
      + {% for subitem in content.items %} +
    • {{ subitem }}
    • + {% endfor %} +
    + {% endif %} +
  • + {% endfor %} +
\ No newline at end of file diff --git a/_includes/cv/time_table.html b/_includes/cv/time_table.html new file mode 100644 index 0000000..86a9637 --- /dev/null +++ b/_includes/cv/time_table.html @@ -0,0 +1,106 @@ +
    + {% for content in entry.contents %} +
  • +
    + {% if content.year %} +
    + + + + + + {% if content.location %} + + + + {% endif %} + +
    + {{ content.year }} +
    +

    {{ content.location }}

    +
    + +
    + {% endif %} +
    + {% if content.title %} +
    {{content.title}}
    + {% endif %} + {% if content.department or content.institution %} + + + {% if content.institution %} + + + + + {% endif %} + {% if content.department %} + + + + + {% endif %} + +
    {{content.institution}}
    {{content.department}}
    + {% endif %} + {% if content.maindescription %} +
    {{ content.maindescription }}
    + {% endif %} + {% if content.description %} +
      + {% for item in content.description %} +
    • + {% if item.contents %} + {{ item.title }} +
        + {% for subitem in item.contents %} +
      • {{ subitem }}
      • + {% endfor %} +
      + {% else %} + {{ item }} + {% endif %} +
    • + {% endfor %} +
    + {% endif %} + {% if content.items %} +
      + {% for item in content.items %} +
    • + {% if item.contents %} + {{ item.title }} +
        + {% for subitem in item.contents %} +
      • {{ subitem }}
      • + {% endfor %} +
      + {% else %} + {{ item }} + {% endif %} +
    • + {% endfor %} +
    + {% endif %} + {% if content.linkitems %} + + {% endif %} +
    +
    +
  • + {% endfor %} +
\ No newline at end of file diff --git a/_includes/disqus.html b/_includes/disqus.html new file mode 100644 index 0000000..73fe953 --- /dev/null +++ b/_includes/disqus.html @@ -0,0 +1,13 @@ +
+ + +
diff --git a/_includes/figure.html b/_includes/figure.html new file mode 100644 index 0000000..eb3dc28 --- /dev/null +++ b/_includes/figure.html @@ -0,0 +1,35 @@ +{%- assign img_path = include.path | remove: ".jpg" | remove: ".jpeg" | remove: ".png" | remove: ".tiff" -%} + +
+ + + {% if site.imagemagick.enabled %} + {% for i in site.imagemagick.widths -%} + + {% endfor -%} + {% endif %} + + + + + + {%- if include.caption -%}
{{ include.caption }}
{%- endif %} + +
diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..acc4688 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,25 @@ + {% if site.footer_fixed %} +
+
+ © Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}. {{ site.footer_text }} + {%- if site.impressum_path -%} + Impressum. + {%- endif -%} + {%- if site.last_updated -%} + Last updated: {{ "now" | date: '%B %d, %Y' }}. + {%- endif %} +
+
+ {%- else -%} +
+
+ © Copyright {{ site.time | date: '%Y' }} {{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}. {{ site.footer_text }} + {%- if site.impressum_path -%} + Impressum. + {%- endif -%} + {%- if site.last_updated -%} + Last updated: {{ "now" | date: '%B %d, %Y' }}. + {%- endif %} +
+
+ {%- endif %} \ No newline at end of file diff --git a/_includes/giscus.html b/_includes/giscus.html new file mode 100644 index 0000000..ac6c950 --- /dev/null +++ b/_includes/giscus.html @@ -0,0 +1,36 @@ +
+ {%- if site.giscus.repo -%} + + + {%- else -%} + {% capture giscus_warning %} + > ##### giscus comments misconfigured + > Please follow instructions at [http://giscus.app](http://giscus.app) and update your giscus configuration. + {: .block-danger } + {% endcapture %} + {{ giscus_warning | markdownify }} + {%- endif -%} +
diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..558b6d7 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,43 @@ + + {% include metadata.html %} + + + + + + + + + + + + + + + + + {% if page.toc and page.toc.sidebar %} + + + {% endif %} + + {% if page.tikzjax %} + + + {% endif %} + + + {% if site.icon.size <= 4 %} + + {% elsif site.icon != blank %} + + {% endif %} + + + + + {% if site.enable_darkmode %} + + + + {% endif %} diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..bd59870 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,119 @@ + +
+ + + +{% if site.enable_progressbar %} + + +
+ +
+
+{%- endif %} +
diff --git a/_includes/latest_posts.html b/_includes/latest_posts.html new file mode 100644 index 0000000..0d1a0be --- /dev/null +++ b/_includes/latest_posts.html @@ -0,0 +1,35 @@ + +
+ {% if site.latest_posts != blank -%} + {%- assign latest_posts_size = site.posts | size -%} +
3 %}style="max-height: 60vw"{% endif %}> + + {%- assign latest_posts = site.posts -%} + {% if site.latest_posts.limit %} + {% assign latest_posts_limit = site.latest_posts.limit %} + {% else %} + {% assign latest_posts_limit = latest_posts_size %} + {% endif %} + {% for item in latest_posts limit: latest_posts_limit %} + + + + + {%- endfor %} +
{{ item.date | date: "%b %-d, %Y" }} + {% if item.redirect == blank %} + {{ item.title }} + {% elsif item.redirect contains '://' %} + {{ item.title }} + + + + {% else %} + {{ item.title }} + {% endif %} +
+
+ {%- else -%} +

No posts so far...

+ {%- endif %} +
diff --git a/_includes/metadata.html b/_includes/metadata.html new file mode 100644 index 0000000..0813a87 --- /dev/null +++ b/_includes/metadata.html @@ -0,0 +1,239 @@ +{% if site.enable_google_verification or site.enable_bing_verification %} + + {% if site.enable_google_verification -%} + + {%- endif -%} + {% if site.enable_bing_verification -%} + + {%- endif -%} + + +{%- endif %} + + + + + + + {%- if site.title == "blank" -%} + {%- capture title -%}{{ site.first_name }} {{ site.middle_name }} {{ site.last_name }}{%- endcapture -%} + {%- else -%} + {%- capture title -%}{{ site.title }}{%- endcapture -%} + {%- endif -%} + {% if page.url == '/blog/index.html' %} + {{ site.blog_nav_title }} | {{ title }} + {%- elsif page.title != "blank" and page.url != "/" -%} + {%- if page.title == nil or page.title == "" -%} + {{ page.date | date: "%Y" }} | {{ title }} + {%- else -%} + {{ page.title }} | {{ title }} + {%- endif -%} + {%- else -%} + {{ title }} + {%- endif -%} + + + +{%- if page.keywords or site.keywords %} + +{%- endif %} + +{%- assign is_blog_post = false -%} +{%- if page.url != '/blog/index.html' and page.url contains '/blog/' -%} + {%- unless page.url contains '/tag/' or page.url contains '/category/' -%} + {%- assign is_blog_post = true -%} + {%- endunless -%} +{%- endif -%} + +{%- if site.serve_og_meta %} + + + + + + + {% if page.og_image or site.og_image -%} + + {%- endif %} + + + + + + + {% if page.og_image or site.og_image -%} + + {%- endif %} + {% if site.x_username -%} + + + {%- endif %} +{%- endif %} + +{%- if site.serve_schema_org %} + + + {%- comment -%} Social links generator for "sameAs schema" {%- endcomment %} + {% assign sameaslinks = "" | split: "," %} + {%- if site.orcid_id -%} + {%- capture link -%}https://orcid.org/{{ site.orcid_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.scholar_userid -%} + {%- capture link -%}https://scholar.google.com/citations?user={{ site.scholar_userid }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.semanticscholar_id -%} + {%- capture link -%}https://www.semanticscholar.org/author/{{ site.semanticscholar_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.publons_id -%} + {%- capture link -%}https://publons.com/a/{{ site.publons_id }}/{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.lattes_id -%} + {%- capture link -%}http://lattes.cnpq.br/{{ site.lattes_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.osf_id -%} + {%- capture link -%}https://osf.io/{{ site.osf_id }}/{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.research_gate_profile -%} + {%- capture link -%}https://www.researchgate.net/profile/{{site.research_gate_profile}}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.scopus_id -%} + {%- capture link -%}https://www.scopus.com/authid/detail.uri?authorId={{site.scopus_id}}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.github_username -%} + {%- capture link -%}https://github.com/{{ site.github_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.telegram_username -%} + {%- capture link -%}https://telegram.me/{{ site.telegram_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.linkedin_username -%} + {%- capture link -%}https://www.linkedin.com/in/{{ site.linkedin_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.x_username -%} + {%- capture link -%}https://twitter.com/{{ site.x_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.mastodon_username -%} + {%- capture link -%}https://{{ site.mastodon_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.medium_username -%} + {%- capture link -%}https://medium.com/@{{ site.medium_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.quora_username -%} + {%- capture link -%}https://www.quora.com/profile/{{ site.quora_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.blogger_url -%} + {%- capture link -%}{{ site.blogger_url }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.work_url -%} + {%- capture link -%}{{ site.work_url }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.wikidata_id -%} + {%- capture link -%}https://www.wikidata.org/wiki/{{ site.wikidata_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.wikipedia_id -%} + {%- capture link -%}https://wikipedia.org/wiki/User:{{ site.wikipedia_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.strava_userid -%} + {%- capture link -%}https://www.strava.com/athletes/{{ site.strava_userid }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.keybase_username -%} + {%- capture link -%}https://keybase.io/{{ site.keybase_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.gitlab_username -%} + {%- capture link -%}https://gitlab.com/{{ site.gitlab_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.dblp_url -%} + {%- capture link -%}{{ site.dblp_url }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.stackoverflow_id -%} + {%- capture link -%}https://stackoverflow.com/users/{{ site.stackoverflow_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.kaggle_id -%} + {%- capture link -%}https://www.kaggle.com/{{ site.kaggle_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.lastfm_id -%} + {%- capture link -%}https://www.last.fm/user/{{ site.lastfm_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.spotify_id -%} + {%- capture link -%}https://open.spotify.com/user/{{ site.spotify_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.pinterest_id -%} + {%- capture link -%}https://www.pinterest.com/{{ site.pinterest_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.unsplash_id -%} + {%- capture link -%}https://unsplash.com/@{{ site.unsplash_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.instagram_id -%} + {%- capture link -%}https://instagram.com/{{ site.instagram_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.facebook_id -%} + {%- capture link -%}https://facebook.com/{{ site.facebook_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.youtube_id -%} + {%- capture link -%}https://youtube.com/@{{ site.youtube_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.discord_id -%} + {%- capture link -%}https://discord.com/users/{{ site.discord_id }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if site.zotero_username -%} + {%- capture link -%}https://www.zotero.org/{{ site.zotero_username }}{%- endcapture -%} + {%- assign sameaslinks = sameaslinks | push: link -%} + {%- endif -%} + {%- if sameaslinks != blank -%} + {%- assign sameaslinks = sameaslinks | split: "" -%} + {%- endif -%} + + +{%- endif %} diff --git a/_includes/news.html b/_includes/news.html new file mode 100644 index 0000000..401d9f6 --- /dev/null +++ b/_includes/news.html @@ -0,0 +1,29 @@ +
+ {% if site.news != blank -%} + {%- assign news_size = site.news | size -%} +
3 %}style="max-height: 60vw"{% endif %}> + + {%- assign news = site.news | reverse -%} + {% if include.limit and site.announcements.limit %} + {% assign news_limit = site.announcements.limit %} + {% else %} + {% assign news_limit = news_size %} + {% endif %} + {% for item in news limit: news_limit %} + + + + + {%- endfor %} +
{{ item.date | date: "%b %-d, %Y" }} + {% if item.inline -%} + {{ item.content | remove: '

' | remove: '

' | emojify }} + {%- else -%} + {{ item.title }} + {%- endif %} +
+
+ {%- else -%} +

No news so far...

+ {%- endif %} +
\ No newline at end of file diff --git a/_includes/pagination.html b/_includes/pagination.html new file mode 100644 index 0000000..4b8d27e --- /dev/null +++ b/_includes/pagination.html @@ -0,0 +1,17 @@ +{%- if paginator.total_pages > 1 -%} + +{%- endif -%} diff --git a/_includes/projects.html b/_includes/projects.html new file mode 100644 index 0000000..36c2c34 --- /dev/null +++ b/_includes/projects.html @@ -0,0 +1,36 @@ + +
+ \ No newline at end of file diff --git a/_includes/projects_horizontal.html b/_includes/projects_horizontal.html new file mode 100644 index 0000000..5db8bcc --- /dev/null +++ b/_includes/projects_horizontal.html @@ -0,0 +1,40 @@ +
+ {%- if project.redirect -%} + + {%- else -%} + + {%- endif -%} + diff --git a/_includes/related_posts.html b/_includes/related_posts.html new file mode 100644 index 0000000..df6b3e5 --- /dev/null +++ b/_includes/related_posts.html @@ -0,0 +1,19 @@ +{% assign have_related_posts = false %} + +{% for post in site.related_posts | limit: site.related_blog_posts.max_related %} + {% unless have_related_posts %} + {% assign have_related_posts = true %} +
+
+
+
    + + +

    Enjoy Reading This Article?

    +

    Here are some more articles you might like to read next:

    + {% endunless %} + +
  • + {{ post.title }} +
  • +{% endfor %} diff --git a/_includes/repository/repo.html b/_includes/repository/repo.html new file mode 100644 index 0000000..a0881c0 --- /dev/null +++ b/_includes/repository/repo.html @@ -0,0 +1,14 @@ +{% assign repo_url = include.repository | split: '/' %} + +{% if site.data.repositories.github_users contains repo_url.first %} + {% assign show_owner = false %} +{% else %} + {% assign show_owner = true %} +{% endif %} + + diff --git a/_includes/repository/repo_trophies.html b/_includes/repository/repo_trophies.html new file mode 100644 index 0000000..18f5273 --- /dev/null +++ b/_includes/repository/repo_trophies.html @@ -0,0 +1,6 @@ + diff --git a/_includes/repository/repo_user.html b/_includes/repository/repo_user.html new file mode 100644 index 0000000..ae06a05 --- /dev/null +++ b/_includes/repository/repo_user.html @@ -0,0 +1,6 @@ + diff --git a/_includes/resume/awards.html b/_includes/resume/awards.html new file mode 100644 index 0000000..2bd912c --- /dev/null +++ b/_includes/resume/awards.html @@ -0,0 +1,23 @@ +
      + {% for content in data[1] %} +
    • +
      +
      + {% if content.date %} + {% assign date = content.date | split: "-" | join: "." %} + {% else %} + {% assign date = "" %} + {% endif %} + + {{ date }} + +
      +
      +
      {{content.title}}
      +
      {{content.awarder}}
      +
      {{content.summary}}
      +
      +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/basics.html b/_includes/resume/basics.html new file mode 100644 index 0000000..875af11 --- /dev/null +++ b/_includes/resume/basics.html @@ -0,0 +1,23 @@ + + {% assign skip_basics = "image,profiles,location" | split:"," %} + {% for content in data[1] %} + {% if (content[1] == "") or (skip_basics contains content[0]) %} + {% continue %} + {% endif %} + + + + + + {% endfor %} +
    {{ content[0] | capitalize }} + {% if content[0] == "url" %} + {{ content[1] }} + {% elsif content[0] == "email" %} + {{ content[1] }} + {% elsif content[0] == "phone" %} + {{ content[1] }} + {% else %} + {{ content[1] }} + {% endif %} +
    diff --git a/_includes/resume/certificates.html b/_includes/resume/certificates.html new file mode 100644 index 0000000..cdd7978 --- /dev/null +++ b/_includes/resume/certificates.html @@ -0,0 +1,31 @@ +
    + {% assign certificates = data[1] | sort: 'date' | reverse %} + {% for content in certificates %} +
    + + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + + + + + + +
    + {{ content.name }} +
    {{ content.issuer }}{{ content.date }}
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/education.html b/_includes/resume/education.html new file mode 100644 index 0000000..a63b6ec --- /dev/null +++ b/_includes/resume/education.html @@ -0,0 +1,51 @@ +
      + {% assign education = data[1] | sort: 'startDate' | reverse %} + {% for content in education %} +
    • +
      +
      + {% if content.startDate and content.startDate!="" %} + {% assign startDate = content.startDate | split: "-" | slice: 0,2 | join: "." %} + {% assign endDate = content.endDate | split: "-" | slice: 0,2 | join: "." | default: "Present" %} + {% assign date = startDate | append: " - "%} + {% assign date = date | append: endDate %} + {% else %} + {% assign date = null %} + {% endif %} + + + + + + {% if content.location %} + + + + {% endif %} + +
      + {% if date %} + + {{date}} + + {% endif %} +
      +

      {{ content.location }}

      +
      +
      +
      +
      {{content.studyType}}
      +
      {{content.institution}}
      +
      {{content.area}}
      +
        + {% for item in content.courses %} +
      • + {{ item }} +
      • + {% endfor %} +
      +
      +
      +
    • + {% endfor %} +
    diff --git a/_includes/resume/interests.html b/_includes/resume/interests.html new file mode 100644 index 0000000..3519179 --- /dev/null +++ b/_includes/resume/interests.html @@ -0,0 +1,29 @@ +
    + {% for content in data[1] %} +
    + + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + {% for item in content.keywords %} + + + + + {% endfor %} + +
    {{ content.name }}
    {{ item }}
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/languages.html b/_includes/resume/languages.html new file mode 100644 index 0000000..8b0fd2b --- /dev/null +++ b/_includes/resume/languages.html @@ -0,0 +1,27 @@ +
    + {% for content in data[1] %} +
    + + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + + + + + +
    {{ content.language }}
    {{ content.fluency }}
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/projects.html b/_includes/resume/projects.html new file mode 100644 index 0000000..0436c80 --- /dev/null +++ b/_includes/resume/projects.html @@ -0,0 +1,32 @@ +
      + {% for content in data[1] %} +
    • +
      +
      + {% if content.startDate %} + {% assign startDate = content.startDate | split: "-" | slice: 0,2 | join: "." %} + {% assign endDate = content.endDate | split: "-" | slice: 0,2 | join: "." | default: "Present" %} + {% assign date = startDate | append: " - "%} + {% assign date = date | append: endDate %} + {% else %} + {% assign date = "" %} + {% endif %} + + {{ date }} + +
      +
      +
      {{content.name}}
      +
      {{content.summary}}
      +
        + {% for item in content.highlights %} +
      • + {{ item }} +
      • + {% endfor %} +
      +
      +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/publications.html b/_includes/resume/publications.html new file mode 100644 index 0000000..d77d715 --- /dev/null +++ b/_includes/resume/publications.html @@ -0,0 +1,30 @@ +
      + {% assign publications = data[1] | sort: 'releaseDate' | reverse %} + {% for content in publications %} +
    • +
      +
      + {% if content.releaseDate %} + {% assign date = content.releaseDate | split: "-" | join: "." %} + {% else %} + {% assign date = "" %} + {% endif %} + + + + + + +
      + {{date}} +
      +
      +
      +
      {{content.name}}
      +
      {{content.publisher}}
      +
      {{content.summary}}
      +
      +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/references.html b/_includes/resume/references.html new file mode 100644 index 0000000..fef4d28 --- /dev/null +++ b/_includes/resume/references.html @@ -0,0 +1,27 @@ +
    + {% for content in data[1] %} +
    + + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + + + + + +
    {{ content.name }}
    {{ content.reference }}
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/skills.html b/_includes/resume/skills.html new file mode 100644 index 0000000..69bb4e3 --- /dev/null +++ b/_includes/resume/skills.html @@ -0,0 +1,29 @@ +
    + {% for content in data[1] %} +
    + + + + {% if content.icon %} + + {% else %} + + {% endif %} + + {% assign i = 1 %} + {% for item in content.items %} + {% assign i = i | plus:1 %} + {% endfor %} + + + {% for item in content.keywords %} + + + + + {% endfor %} + +
    {{ content.name }}
    {{ item }}
    +
    + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/volunteer.html b/_includes/resume/volunteer.html new file mode 100644 index 0000000..fb68f7a --- /dev/null +++ b/_includes/resume/volunteer.html @@ -0,0 +1,34 @@ +
      + {% assign volunteer = data[1] | sort: 'startDate' | reverse %} + {% for content in volunteer %} +
    • +
      +
      + {% if content.startDate %} + {% assign startDate = content.startDate | split: "-" | slice: 0,2 | join: "." %} + {% assign endDate = content.endDate | split: "-" | slice: 0,2 | join: "." | default: "Present" %} + {% assign date = startDate | append: " - "%} + {% assign date = date | append: endDate %} + {% else %} + {% assign date = "" %} + {% endif %} + + {{ date }} + +
      +
      +
      {{content.position}}
      +
      {{content.organization}}
      +
      {{content.summary}}
      +
        + {% for item in content.highlights %} +
      • + {{ item }} +
      • + {% endfor %} +
      +
      +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/resume/work.html b/_includes/resume/work.html new file mode 100644 index 0000000..9f8e185 --- /dev/null +++ b/_includes/resume/work.html @@ -0,0 +1,34 @@ +
      + {% assign work = data[1] | sort: 'startDate' | reverse %} + {% for content in work %} +
    • +
      +
      + {% if content.startDate %} + {% assign startDate = content.startDate | split: "-" | slice: 0,2 | join: "." %} + {% assign endDate = content.endDate | split: "-" | slice: 0,2 | join: "." | default: "Present" %} + {% assign date = startDate | append: " - "%} + {% assign date = date | append: endDate %} + {% else %} + {% assign date = "" %} + {% endif %} + + {{ date }} + +
      +
      +
      {{content.position}}
      +
      {{content.name}}
      +
      {{content.summary}}
      +
        + {% for item in content.highlights %} +
      • + {{ item }} +
      • + {% endfor %} +
      +
      +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/_includes/scripts/analytics.html b/_includes/scripts/analytics.html new file mode 100644 index 0000000..119617a --- /dev/null +++ b/_includes/scripts/analytics.html @@ -0,0 +1,18 @@ +{%- if site.enable_google_analytics -%} + + + +{%- endif -%} +{%- if site.enable_cronitor_analytics -%} + + + +{%- endif -%} diff --git a/_includes/scripts/badges.html b/_includes/scripts/badges.html new file mode 100644 index 0000000..5e8a79f --- /dev/null +++ b/_includes/scripts/badges.html @@ -0,0 +1,6 @@ +{%- if site.enable_publication_badges.altmetric %} + +{%- endif %} +{%- if site.enable_publication_badges.dimensions %} + +{%- endif %} diff --git a/_includes/scripts/bootstrap.html b/_includes/scripts/bootstrap.html new file mode 100644 index 0000000..e2ae85d --- /dev/null +++ b/_includes/scripts/bootstrap.html @@ -0,0 +1,4 @@ + + + + diff --git a/_includes/scripts/jquery.html b/_includes/scripts/jquery.html new file mode 100644 index 0000000..f84a2f2 --- /dev/null +++ b/_includes/scripts/jquery.html @@ -0,0 +1,2 @@ + + diff --git a/_includes/scripts/masonry.html b/_includes/scripts/masonry.html new file mode 100644 index 0000000..804389d --- /dev/null +++ b/_includes/scripts/masonry.html @@ -0,0 +1,6 @@ + {%- if site.enable_masonry -%} + + + + + {%- endif -%} diff --git a/_includes/scripts/mathjax.html b/_includes/scripts/mathjax.html new file mode 100644 index 0000000..c55ec05 --- /dev/null +++ b/_includes/scripts/mathjax.html @@ -0,0 +1,12 @@ + {%- if site.enable_math -%} + + + + + {%- endif %} diff --git a/_includes/scripts/misc.html b/_includes/scripts/misc.html new file mode 100644 index 0000000..4efbb15 --- /dev/null +++ b/_includes/scripts/misc.html @@ -0,0 +1,25 @@ +{% if site.enable_tooltips %} + + +{%- endif %} + +{%- if site.enable_medium_zoom %} + + + +{%- endif -%} + +{% if page.toc and page.toc.sidebar %} + + +{% endif %} + + + + + + + + diff --git a/_includes/scripts/progressBar.html b/_includes/scripts/progressBar.html new file mode 100644 index 0000000..88bb73c --- /dev/null +++ b/_includes/scripts/progressBar.html @@ -0,0 +1,80 @@ +{% if site.enable_progressbar %} + + + + +{%- endif %} diff --git a/_includes/scripts/wechatModal.html b/_includes/scripts/wechatModal.html new file mode 100644 index 0000000..23d81d1 --- /dev/null +++ b/_includes/scripts/wechatModal.html @@ -0,0 +1,20 @@ +{% if site.wechat_qr %} + + + + + +{% endif %} \ No newline at end of file diff --git a/_includes/selected_papers.html b/_includes/selected_papers.html new file mode 100644 index 0000000..97fbf10 --- /dev/null +++ b/_includes/selected_papers.html @@ -0,0 +1,4 @@ + +
    + {% bibliography -f {{ site.scholar.bibliography }} --group_by none --query @*[selected=true]* %} +
    diff --git a/_includes/social.html b/_includes/social.html new file mode 100644 index 0000000..b9d01aa --- /dev/null +++ b/_includes/social.html @@ -0,0 +1,118 @@ + {%- if site.email -%} + + {% endif %} + {%- if site.telegram_username -%} + + {% endif %} + {%- if site.whatsapp_number -%} + + {% endif %} + {%- if site.orcid_id -%} + + {% endif %} + {%- if site.scholar_userid -%} + + {% endif %} + {%- if site.semanticscholar_id -%} + + {% endif %} + {%- if site.publons_id -%} + + {% endif %} + {%- if site.lattes_id -%} + + {% endif %} + {%- if site.osf_id -%} + + {% endif %} + {%- if site.research_gate_profile -%} + + {% endif %} + {%- if site.scopus_id -%} + + {% endif %} + {%- if site.github_username -%} + + {% endif %} + {%- if site.linkedin_username -%} + + {% endif %} + {%- if site.x_username -%} + + {% endif %} + {%- if site.mastodon_username -%} + + {% endif %} + {%- if site.medium_username -%} + + {% endif %} + {%- if site.quora_username -%} + + {% endif %} + {%- if site.blogger_url -%} + + {% endif %} + {%- if site.work_url -%} + + {% endif %} + {%- if site.wikidata_id -%} + + {% endif %} + {%- if site.wikipedia_id -%} + + {% endif %} + {%- if site.strava_userid -%} + + {% endif %} + {%- if site.keybase_username -%} + + {% endif %} + {%- if site.gitlab_username -%} + + {% endif %} + {%- if site.dblp_url -%} + + {% endif %} + {%- if site.stackoverflow_id -%} + + {% endif %} + {%- if site.kaggle_id -%} + + {% endif %} + {%- if site.lastfm_id -%} + + {% endif %} + {%- if site.spotify_id -%} + + {% endif %} + {%- if site.pinterest_id -%} + + {% endif %} + {%- if site.unsplash_id -%} + + {% endif %} + {%- if site.instagram_id -%} + + {% endif %} + {%- if site.facebook_id -%} + + {% endif %} + {%- if site.youtube_id -%} + + {% endif %} + {%- if site.discord_id -%} + + {% endif %} + {%- if site.zotero_username -%} + + {% endif %} + {%- if site.rss_icon -%} + + {% endif %} + {%- if site.wechat_qr -%} + +
    + WeChat QR +
    + {% include scripts/wechatModal.html %} + {% endif %} diff --git a/_includes/video.html b/_includes/video.html new file mode 100644 index 0000000..8e889cd --- /dev/null +++ b/_includes/video.html @@ -0,0 +1,47 @@ +{% assign extension = include.path | split:'.' | last %} + +
    + + {% if extension == "mp4" or extension == "webm" or extension == "ogg" %} + +
    + +The plot must be generated separately and saved into an HTML file. +To generate the plot that you see above, you can use the following code snippet: + +{% highlight python %} +import pandas as pd +import plotly.express as px +df = pd.read_csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/earthquakes-23k.csv' +) +fig = px.density_mapbox( + df, + lat='Latitude', + lon='Longitude', + z='Magnitude', + radius=10, + center=dict(lat=0, lon=180), + zoom=0, + mapbox_style="stamen-terrain", +) +fig.show() +fig.write_html('assets/plotly/demo.html') +{% endhighlight %} + +*** + +## Details boxes + +Details boxes are collapsible boxes which hide additional information from the user. They can be added with the `details` liquid tag: + +{% details Click here to know more %} +Additional details, where math $$ 2x - 1 $$ and `code` is rendered correctly. +{% enddetails %} + +*** + +## Layouts + +The main text column is referred to as the body. +It is the assumed layout of any direct descendants of the `d-article` element. + +
    +

    .l-body

    +
    + +For images you want to display a little larger, try `.l-page`: + +
    +

    .l-page

    +
    + +All of these have an outset variant if you want to poke out from the body text a little bit. +For instance: + +
    +

    .l-body-outset

    +
    + +
    +

    .l-page-outset

    +
    + +Occasionally you’ll want to use the full browser width. +For this, use `.l-screen`. +You can also inset the element a little from the edge of the browser by using the inset variant. + +
    +

    .l-screen

    +
    +
    +

    .l-screen-inset

    +
    + +The final layout is for marginalia, asides, and footnotes. +It does not interrupt the normal flow of `.l-body` sized text except on mobile screen sizes. + +
    +

    .l-gutter

    +
    + +*** + +## Other Typography? + +Emphasis, aka italics, with *asterisks* (`*asterisks*`) or _underscores_ (`_underscores_`). + +Strong emphasis, aka bold, with **asterisks** or __underscores__. + +Combined emphasis with **asterisks and _underscores_**. + +Strikethrough uses two tildes. ~~Scratch this.~~ + +1. First ordered list item +2. Another item +⋅⋅* Unordered sub-list. +1. Actual numbers don't matter, just that it's a number +⋅⋅1. Ordered sub-list +4. And another item. + +⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown). + +⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅ +⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅ +⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.) + +* Unordered list can use asterisks +- Or minuses ++ Or pluses + +[I'm an inline-style link](https://www.google.com) + +[I'm an inline-style link with title](https://www.google.com "Google's Homepage") + +[I'm a reference-style link][Arbitrary case-insensitive reference text] + +[I'm a relative reference to a repository file](../blob/master/LICENSE) + +[You can use numbers for reference-style link definitions][1] + +Or leave it empty and use the [link text itself]. + +URLs and URLs in angle brackets will automatically get turned into links. +http://www.example.com or and sometimes +example.com (but not on Github, for example). + +Some text to show that the reference links can follow later. + +[arbitrary case-insensitive reference text]: https://www.mozilla.org +[1]: http://slashdot.org +[link text itself]: http://www.reddit.com + +Here's our logo (hover to see the title text): + +Inline-style: +![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1") + +Reference-style: +![alt text][logo] + +[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2" + +Inline `code` has `back-ticks around` it. + +```javascript +var s = "JavaScript syntax highlighting"; +alert(s); +``` + +```python +s = "Python syntax highlighting" +print s +``` + +``` +No language indicated, so no syntax highlighting. +But let's throw in a tag. +``` + +Colons can be used to align columns. + +| Tables | Are | Cool | +| ------------- |:-------------:| -----:| +| col 3 is | right-aligned | $1600 | +| col 2 is | centered | $12 | +| zebra stripes | are neat | $1 | + +There must be at least 3 dashes separating each header cell. +The outer pipes (|) are optional, and you don't need to make the +raw Markdown line up prettily. You can also use inline Markdown. + +Markdown | Less | Pretty +--- | --- | --- +*Still* | `renders` | **nicely** +1 | 2 | 3 + +> Blockquotes are very handy in email to emulate reply text. +> This line is part of the same quote. + +Quote break. + +> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote. + + +Here's a line for us to start with. + +This line is separated from the one above by two newlines, so it will be a *separate paragraph*. + +This line is also a separate paragraph, but... +This line is only separated by a single newline, so it's a separate line in the *same paragraph*. diff --git a/_posts/2020-09-28-github-metadata.md b/_posts/2020-09-28-github-metadata.md new file mode 100644 index 0000000..f5b6b84 --- /dev/null +++ b/_posts/2020-09-28-github-metadata.md @@ -0,0 +1,36 @@ +--- +layout: post +title: a post with github metadata +date: 2020-09-28 21:01:00 +description: a quick run down on accessing github metadata. +tags: metadata +categories: sample-posts external-services +--- + +A sample blog page that demonstrates the accessing of github meta data. + +## What does Github-MetaData do? +* Propagates the site.github namespace with repository metadata +* Setting site variables : + * site.title + * site.description + * site.url + * site.baseurl +* Accessing the metadata - duh. +* Generating edittable links. + +## Additional Reading +* If you're recieving incorrect/missing data, you may need to perform a Github API authentication. +* Go through this README for more details on the topic. +* This page highlights all the feilds you can access with github-metadata. +
    + +## Example MetaData +* Host Name : {{ site.github.hostname }} +* URL : {{ site.github.url }} +* BaseURL : {{ site.github.baseurl }} +* Archived : {{ site.github.archived}} +* Contributors : +{% for contributor in site.github.contributors %} + * {{ contributor.login }} +{% endfor %} diff --git a/_posts/2020-09-28-twitter.md b/_posts/2020-09-28-twitter.md new file mode 100644 index 0000000..7de9191 --- /dev/null +++ b/_posts/2020-09-28-twitter.md @@ -0,0 +1,20 @@ +--- +layout: post +title: a post with twitter +date: 2020-09-28 11:12:00-0400 +description: an example of a blog post with twitter +tags: formatting +categories: sample-posts external-services +--- +A sample blog page that demonstrates the inclusion of Tweets/Timelines/etc. + +# Tweet +An example of displaying a tweet: +{% twitter https://twitter.com/rubygems/status/518821243320287232 %} + +# Timeline +An example of pulling from a timeline: +{% twitter https://twitter.com/jekyllrb maxwidth=500 limit=3 %} + +# Additional Details +For more details on using the plugin visit: [jekyll-twitter-plugin](https://github.com/rob-murray/jekyll-twitter-plugin) diff --git a/_posts/2021-07-04-diagrams.md b/_posts/2021-07-04-diagrams.md new file mode 100644 index 0000000..c8284f1 --- /dev/null +++ b/_posts/2021-07-04-diagrams.md @@ -0,0 +1,44 @@ +--- +layout: post +title: a post with diagrams +date: 2021-07-04 17:39:00 +tags: formatting diagrams +description: an example of a blog post with diagrams +--- + +This theme supports generating various diagrams from a text description using [jekyll-diagrams](https://github.com/zhustec/jekyll-diagrams){:target="\_blank"} plugin. +Below, we generate a few examples of such diagrams using languages such as [mermaid](https://mermaid-js.github.io/mermaid/){:target="\_blank"}, [plantuml](https://plantuml.com/){:target="\_blank"}, [vega-lite](https://vega.github.io/vega-lite/){:target="\_blank"}, etc. + +**Note:** different diagram-generation packages require external dependencies to be installed on your machine. +Also, be mindful of that because of diagram generation the fist time you build your Jekyll website after adding new diagrams will be SLOW. +For any other details, please refer to [jekyll-diagrams](https://github.com/zhustec/jekyll-diagrams){:target="\_blank"} README. + + +## Mermaid + +Install mermaid using `node.js` package manager `npm` by running the following command: +```bash +npm install -g mermaid.cli +``` + +The diagram below was generated by the following code: + +{% raw %} +``` +{% mermaid %} +sequenceDiagram + participant John + participant Alice + Alice->>John: Hello John, how are you? + John-->>Alice: Great! +{% endmermaid %} +``` +{% endraw %} + +{% mermaid %} +sequenceDiagram + participant John + participant Alice + Alice->>John: Hello John, how are you? + John-->>Alice: Great! +{% endmermaid %} diff --git a/_posts/2022-02-01-redirect.md b/_posts/2022-02-01-redirect.md new file mode 100644 index 0000000..62be5f3 --- /dev/null +++ b/_posts/2022-02-01-redirect.md @@ -0,0 +1,9 @@ +--- +layout: post +title: a post with redirect +date: 2022-02-01 17:39:00 +description: you can also redirect to assets like pdf +redirect: /assets/pdf/example_pdf.pdf +--- + +Redirecting to another page. diff --git a/_posts/2022-12-10-giscus-comments.md b/_posts/2022-12-10-giscus-comments.md new file mode 100644 index 0000000..ede59ae --- /dev/null +++ b/_posts/2022-12-10-giscus-comments.md @@ -0,0 +1,11 @@ +--- +layout: post +title: a post with giscus comments +date: 2022-12-10 11:59:00-0400 +description: an example of a blog post with giscus comments +tags: comments +categories: sample-posts external-services +giscus_comments: true +related_posts: false +--- +This post shows how to add GISCUS comments. diff --git a/_posts/2023-03-20-table-of-contents.md b/_posts/2023-03-20-table-of-contents.md new file mode 100644 index 0000000..c356f51 --- /dev/null +++ b/_posts/2023-03-20-table-of-contents.md @@ -0,0 +1,42 @@ +--- +layout: post +title: a post with table of contents +date: 2023-03-20 11:59:00-0400 +description: an example of a blog post with table of contents +tags: formatting toc +categories: sample-posts +giscus_comments: true +related_posts: false +toc: + beginning: true +--- +This post shows how to add a table of contents in the beginning of the post. + +## Adding a Table of Contents + +To add a table of contents to a post, simply add +```yml +toc: + beginning: true +``` +to the front matter of the post. The table of contents will be automatically generated from the headings in the post. + +### Example of Sub-Heading 1 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +### Example of another Sub-Heading 1 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +## Table of Contents Options + +If you want to learn more about how to customize the table of contents, you can check the [jekyll-toc](https://github.com/toshimaru/jekyll-toc) repository. + +### Example of Sub-Heading 2 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +### Example of another Sub-Heading 2 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. diff --git a/_posts/2023-03-21-tables.md b/_posts/2023-03-21-tables.md new file mode 100644 index 0000000..9351586 --- /dev/null +++ b/_posts/2023-03-21-tables.md @@ -0,0 +1,104 @@ +--- +layout: post +title: displaying beautiful tables with Bootstrap Tables +date: 2023-03-20 14:37:00-0400 +description: an example of how to use Bootstrap Tables +tags: formatting tables +categories: sample-posts +giscus_comments: true +related_posts: true +datatable: true +--- + +Using markdown to display tables is easy. Just use the following syntax: + +```markdown +| Left aligned | Center aligned | Right aligned | +| :----------- | :------------: | ------------: | +| Left 1 | center 1 | right 1 | +| Left 2 | center 2 | right 2 | +| Left 3 | center 3 | right 3 | +``` + +That will generate: + +| Left aligned | Center aligned | Right aligned | +| :----------- | :------------: | ------------: | +| Left 1 | center 1 | right 1 | +| Left 2 | center 2 | right 2 | +| Left 3 | center 3 | right 3 | + +

    + +It is also possible to use HTML to display tables. For example, the following HTML code will display a table with [Bootstrap Table](https://bootstrap-table.com/), loaded from a JSON file: + +{% raw %} +```html + + + + + + + + +
    IDItem NameItem Price
    +``` +{% endraw %} + + + + + + + + + +
    IDItem NameItem Price
    + +

    + +By using [Bootstrap Table](https://bootstrap-table.com/) it is possible to create pretty complex tables, with pagination, search, and more. For example, the following HTML code will display a table, loaded from a JSON file, with pagination, search, checkboxes, and header/content alignment. For more information, check the [documentation](https://examples.bootstrap-table.com/index.html). + +{% raw %} +```html + + + + + + + + + +
    IDItem NameItem Price
    +``` +{% endraw %} + + + + + + + + + + +
    IDItem NameItem Price
    diff --git a/_posts/2023-04-24-videos.md b/_posts/2023-04-24-videos.md new file mode 100644 index 0000000..3e2f6a2 --- /dev/null +++ b/_posts/2023-04-24-videos.md @@ -0,0 +1,32 @@ +--- +layout: post +title: a post with videos +date: 2023-04-24 21:01:00 +description: this is what included videos could look like +tags: formatting videos +categories: sample-posts +--- +This is an example post with videos. It supports local video files. + +
    +
    + {% include video.html path="assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4" class="img-fluid rounded z-depth-1" controls=true autoplay=true %} +
    +
    + {% include video.html path="assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4" class="img-fluid rounded z-depth-1" controls=true %} +
    +
    +
    + A simple, elegant caption looks good between video rows, after each row, or doesn't have to be there at all. +
    + +It does also support embedding videos from different sources. Here are some examples: + +
    +
    + {% include video.html path="https://www.youtube.com/embed/jNQXAC9IVRw" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include video.html path="https://player.vimeo.com/video/524933864?h=1ac4fd9fb4&title=0&byline=0&portrait=0" class="img-fluid rounded z-depth-1" %} +
    +
    \ No newline at end of file diff --git a/_posts/2023-04-25-audios.md b/_posts/2023-04-25-audios.md new file mode 100644 index 0000000..4cc68e4 --- /dev/null +++ b/_posts/2023-04-25-audios.md @@ -0,0 +1,21 @@ +--- +layout: post +title: a post with audios +date: 2023-04-25 10:25:00 +description: this is what included audios could look like +tags: formatting audios +categories: sample-posts +--- +This is an example post with audios. It supports local audio files. + +
    +
    + {% include audio.html path="assets/audio/epicaly-short-113909.mp3" controls=true %} +
    +
    + {% include audio.html path="https://cdn.pixabay.com/download/audio/2022/06/25/audio_69a61cd6d6.mp3" controls=true %} +
    +
    +
    + A simple, elegant caption looks good between video rows, after each row, or doesn't have to be there at all. +
    diff --git a/_posts/2023-04-25-sidebar-table-of-contents.md b/_posts/2023-04-25-sidebar-table-of-contents.md new file mode 100644 index 0000000..d946d5d --- /dev/null +++ b/_posts/2023-04-25-sidebar-table-of-contents.md @@ -0,0 +1,43 @@ +--- +layout: post +title: a post with table of contents on a sidebar +date: 2023-04-25 10:14:00-0400 +description: an example of a blog post with table of contents on a sidebar +tags: formatting toc sidebar +categories: sample-posts +giscus_comments: true +related_posts: false +toc: + sidebar: left +--- +This post shows how to add a table of contents as a sidebar. + +## Adding a Table of Contents + +To add a table of contents to a post as a sidebar, simply add +```yml +toc: + sidebar: left +``` +to the front matter of the post. The table of contents will be automatically generated from the headings in the post. If you wish to display the sidebar to the right, simply change `left` to `right`. + +### Example of Sub-Heading 1 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +### Example of another Sub-Heading 1 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +## Customizing Your Table of Contents +{:data-toc-text="Customizing"} + +If you want to learn more about how to customize the table of contents of your sidebar, you can check the [bootstrap-toc](https://afeld.github.io/bootstrap-toc/) documentation. Notice that you can even customize the text of the heading that will be displayed on the sidebar. + +### Example of Sub-Heading 2 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. + +### Example of another Sub-Heading 2 + +Jean shorts raw denim Vice normcore, art party High Life PBR skateboard stumptown vinyl kitsch. Four loko meh 8-bit, tousled banh mi tilde forage Schlitz dreamcatcher twee 3 wolf moon. Chambray asymmetrical paleo salvia, sartorial umami four loko master cleanse drinking vinegar brunch. Pinterest DIY authentic Schlitz, hoodie Intelligentsia butcher trust fund brunch shabby chic Kickstarter forage flexitarian. Direct trade cold-pressed meggings stumptown plaid, pop-up taxidermy. Hoodie XOXO fingerstache scenester Echo Park. Plaid ugh Wes Anderson, freegan pug selvage fanny pack leggings pickled food truck DIY irony Banksy. diff --git a/_posts/2023-05-12-custom-blockquotes.md b/_posts/2023-05-12-custom-blockquotes.md new file mode 100644 index 0000000..d6c8a79 --- /dev/null +++ b/_posts/2023-05-12-custom-blockquotes.md @@ -0,0 +1,111 @@ +--- +layout: post +title: a post with custom blockquotes +date: 2023-05-12 15:53:00-0400 +description: an example of a blog post with custom blockquotes +tags: formatting blockquotes +categories: sample-posts +giscus_comments: true +related_posts: true +--- +This post shows how to add custom styles for blockquotes. Based on [jekyll-gitbook](https://github.com/sighingnow/jekyll-gitbook) implementation. + +We decided to support the same custom blockquotes as in [jekyll-gitbook](https://sighingnow.github.io/jekyll-gitbook/jekyll/2022-06-30-tips_warnings_dangers.html), which are also found in a lot of other sites' styles. The styles definitions can be found on the [_base.scss](https://github.com/alshedivat/al-folio/blob/master/_sass/_base.scss) file, more specifically: + +```scss +/* Tips, warnings, and dangers */ +.post .post-content blockquote { + &.block-tip { + border-color: var(--global-tip-block); + background-color: var(--global-tip-block-bg); + + p { + color: var(--global-tip-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-tip-block-title); + } + } + + &.block-warning { + border-color: var(--global-warning-block); + background-color: var(--global-warning-block-bg); + + p { + color: var(--global-warning-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-warning-block-title); + } + } + + &.block-danger { + border-color: var(--global-danger-block); + background-color: var(--global-danger-block-bg); + + p { + color: var(--global-danger-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-danger-block-title); + } + } +} +``` + +A regular blockquote can be used as following: + +```markdown +> This is a regular blockquote +> and it can be used as usual +``` + +> This is a regular blockquote +> and it can be used as usual + +These custom styles can be used by adding the specific class to the blockquote, as follows: + +```markdown +> ##### TIP +> +> A tip can be used when you want to give advice +> related to a certain content. +{: .block-tip } +``` + +> ##### TIP +> +> A tip can be used when you want to give advice +> related to a certain content. +{: .block-tip } + +```markdown +> ##### WARNING +> +> This is a warning, and thus should +> be used when you want to warn the user +{: .block-warning } +``` + +> ##### WARNING +> +> This is a warning, and thus should +> be used when you want to warn the user +{: .block-warning } + +```markdown +> ##### DANGER +> +> This is a danger zone, and thus should +> be used carefully +{: .block-danger } +``` + +> ##### DANGER +> +> This is a danger zone, and thus should +> be used carefully +{: .block-danger } diff --git a/_posts/2023-07-04-jupyter-notebook.md b/_posts/2023-07-04-jupyter-notebook.md new file mode 100644 index 0000000..e49cddc --- /dev/null +++ b/_posts/2023-07-04-jupyter-notebook.md @@ -0,0 +1,44 @@ +--- +layout: post +title: a post with jupyter notebook +date: 2023-07-04 08:57:00-0400 +description: an example of a blog post with jupyter notebook +tags: formatting jupyter +categories: sample-posts +giscus_comments: true +related_posts: false +--- + +To include a jupyter notebook in a post, you can use the following code: + +{% raw %} + +```html +{::nomarkdown} +{% assign jupyter_path = "assets/jupyter/blog.ipynb" | relative_url %} +{% capture notebook_exists %}{% file_exists assets/jupyter/blog.ipynb %}{% endcapture %} +{% if notebook_exists == "true" %} + {% jupyter_notebook jupyter_path %} +{% else %} +

    Sorry, the notebook you are looking for does not exist.

    +{% endif %} +{:/nomarkdown} +``` + +{% endraw %} + +Let's break it down: this is possible thanks to [Jekyll Jupyter Notebook plugin](https://github.com/red-data-tools/jekyll-jupyter-notebook) that allows you to embed jupyter notebooks in your posts. It basically calls [`jupyter nbconvert --to html`](https://nbconvert.readthedocs.io/en/latest/usage.html#convert-html) to convert the notebook to an html page and then includes it in the post. Since [Kramdown](https://jekyllrb.com/docs/configuration/markdown/) is the default Markdown renderer for Jekyll, we need to surround the call to the plugin with the [::nomarkdown](https://kramdown.gettalong.org/syntax.html#extensions) tag so that it stops processing this part with Kramdown and outputs the content as-is. + +The plugin takes as input the path to the notebook, but it assumes the file exists. If you want to check if the file exists before calling the plugin, you can use the `file_exists` filter. This avoids getting a 404 error from the plugin and ending up displaying the main page inside of it instead. If the file does not exist, you can output a message to the user. The code displayed above outputs the following: + +{::nomarkdown} +{% assign jupyter_path = "assets/jupyter/blog.ipynb" | relative_url %} +{% capture notebook_exists %}{% file_exists assets/jupyter/blog.ipynb %}{% endcapture %} +{% if notebook_exists == "true" %} + {% jupyter_notebook jupyter_path %} +{% else %} +

    Sorry, the notebook you are looking for does not exist.

    +{% endif %} +{:/nomarkdown} + +Note that the jupyter notebook supports both light and dark themes. diff --git a/_posts/2023-07-12-post-bibliography.md b/_posts/2023-07-12-post-bibliography.md new file mode 100644 index 0000000..f2b4a3a --- /dev/null +++ b/_posts/2023-07-12-post-bibliography.md @@ -0,0 +1,12 @@ +--- +layout: post +title: a post with bibliography +date: 2023-07-12 09:56:00-0400 +description: an example of a blog post with bibliography +tags: formatting bib +categories: sample-posts +giscus_comments: true +related_posts: false +related_publications: einstein1950meaning, einstein1905movement +--- +This post shows how to add bibliography to simple blog posts. If you would like something more academic, check the [distill style post]({% post_url 2018-12-22-distill %}). diff --git a/_posts/2023-12-12-tikzjax.md b/_posts/2023-12-12-tikzjax.md new file mode 100644 index 0000000..3401c06 --- /dev/null +++ b/_posts/2023-12-12-tikzjax.md @@ -0,0 +1,18 @@ +--- +layout: post +title: a post with TikZJax +date: 2023-12-12 22:25:00 +description: this is what included TikZ code could look like +tags: formatting diagrams +categories: sample-posts +tikzjax: true +--- +This is an example post with TikZ code. TikZJax converts script tags (containing TikZ code) into SVGs. + + \ No newline at end of file diff --git a/_projects/1_project.md b/_projects/1_project.md new file mode 100644 index 0000000..f1c8b80 --- /dev/null +++ b/_projects/1_project.md @@ -0,0 +1,81 @@ +--- +layout: page +title: project 1 +description: a project with a background image +img: assets/img/12.jpg +importance: 1 +category: work +related_publications: einstein1956investigations, einstein1950meaning +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_projects/2_project.md b/_projects/2_project.md new file mode 100644 index 0000000..7ff1ea2 --- /dev/null +++ b/_projects/2_project.md @@ -0,0 +1,81 @@ +--- +layout: page +title: project 2 +description: a project with a background image and giscus comments +img: assets/img/3.jpg +importance: 2 +category: work +giscus_comments: true +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_projects/3_project.md b/_projects/3_project.md new file mode 100644 index 0000000..3f3cbf7 --- /dev/null +++ b/_projects/3_project.md @@ -0,0 +1,81 @@ +--- +layout: page +title: project 3 +description: a project that redirects to another website +img: assets/img/7.jpg +redirect: https://unsplash.com +importance: 3 +category: work +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_projects/4_project.md b/_projects/4_project.md new file mode 100644 index 0000000..edb5dd2 --- /dev/null +++ b/_projects/4_project.md @@ -0,0 +1,80 @@ +--- +layout: page +title: project 4 +description: another without an image +img: +importance: 3 +category: fun +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_projects/5_project.md b/_projects/5_project.md new file mode 100644 index 0000000..efd9b6c --- /dev/null +++ b/_projects/5_project.md @@ -0,0 +1,80 @@ +--- +layout: page +title: project 5 +description: a project with a background image +img: assets/img/1.jpg +importance: 3 +category: fun +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_projects/6_project.md b/_projects/6_project.md new file mode 100644 index 0000000..9a95d6e --- /dev/null +++ b/_projects/6_project.md @@ -0,0 +1,80 @@ +--- +layout: page +title: project 6 +description: a project with no image +img: +importance: 4 +category: fun +--- + +Every project has a beautiful feature showcase page. +It's easy to include images in a flexible 3-column grid format. +Make your photos 1/3, 2/3, or full width. + +To give your project a background in the portfolio page, just add the img tag to the front matter like so: + + --- + layout: page + title: project + description: a project with a background image + img: /assets/img/12.jpg + --- + +
    +
    + {% include figure.html path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. +
    +
    +
    + {% include figure.html path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + This image can also have a caption. It's like magic. +
    + +You can also put regular text between your rows of images. +Say you wanted to write a little bit about your project before you posted the rest of the images. +You describe how you toiled, sweated, *bled* for your project, and then... you reveal its glory in the next row of images. + + +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +
    + You can also have artistically styled 2/3 + 1/3 images, like these. +
    + + +The code is simple. +Just wrap your images with `
    ` and place them inside `
    ` (read more about the Bootstrap Grid system). +To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. +Here's the code for the last row of images above: + +{% raw %} +```html +
    +
    + {% include figure.html path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    + {% include figure.html path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} +
    +
    +``` +{% endraw %} diff --git a/_sass/_base.scss b/_sass/_base.scss new file mode 100644 index 0000000..e83d94b --- /dev/null +++ b/_sass/_base.scss @@ -0,0 +1,1069 @@ +/******************************************************************************* + * Styles for the base elements of the theme. + ******************************************************************************/ + +// Typography + +p, +h1, +h2, +h3, +h4, +h5, +h6, +em, +div, +li, +span, +strong { + color: var(--global-text-color); +} + +hr { + border-top: 1px solid var(--global-divider-color); +} + +table { + td, + th { + font-size: 1rem; + } + + th { + font-weight: bold; + } +} + +a, +table.table a { + color: var(--global-theme-color); + + &:hover { + color: var(--global-theme-color); + text-decoration: underline; + } + + &:hover:after :not(.nav-item.dropdown) { + width: 100%; + } +} + +.table-dark { + background-color: transparent; + &.table-bordered{ + border: 1px solid var(--global-divider-color) !important; + } +} + +figure, +img { + max-width: 90vw; +} + +blockquote { + background: var(--global-bg-color); + border-left: 5px solid var(--global-theme-color); + margin: 1.5em 0; + padding: 1em; + font-size: 1.2rem; + + p { + margin-bottom: 0; + } + + /* Tips, warnings, and dangers blockquotes */ + &.block-tip { + border-color: var(--global-tip-block); + background-color: var(--global-tip-block-bg); + + p { + color: var(--global-tip-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-tip-block-title); + } + } + + &.block-warning { + border-color: var(--global-warning-block); + background-color: var(--global-warning-block-bg); + + p { + color: var(--global-warning-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-warning-block-title); + } + } + + &.block-danger { + border-color: var(--global-danger-block); + background-color: var(--global-danger-block-bg); + + p { + color: var(--global-danger-block-text); + } + + h1, h2, h3, h4, h5, h6 { + color: var(--global-danger-block-title); + } + } +} + +// Math + +.equation { + margin-bottom: 1rem; + text-align: center; +} + +// Caption + +.caption { + font-size: 0.875rem; + margin-top: 0.75rem; + margin-bottom: 1.5rem; + text-align: center; +} + +// Card + +.card { + background-color: var(--global-card-bg-color); + + img { + width: 100%; + } + + .card-title { + color: var(--global-text-color); + } + + .card-item { + width: auto; + margin-bottom: 10px; + + .row { + display: flex; + align-items: center; + } + } +} + +// Citation + +.citation, +.citation-number { + color: var(--global-theme-color); +} + +// Profile + +.profile { + width: 100%; + + .more-info { + margin-bottom: 5px; + margin-top: 5px; + font-family: monospace; + + p { + display: inline-block; + margin: 0; + } + } +} + +.profile.float-right { + margin-left: 1rem; +} + +.profile.float-left { + margin-right: 1rem; +} + +@media (min-width: 576px) { + .profile { + width: 30%; + + .address { + p { + display: block; + } + } + } +} + +.post-description { + margin-bottom: 2rem; + font-size: 0.875rem; + + a { + color: inherit; + + &:hover { + color: var(--global-theme-color); + text-decoration: none; + } + } +} + + +// Navbar customization + +.navbar { + box-shadow: none; + border-bottom: 1px solid var(--global-divider-color); + background-color: var(--global-bg-color); + opacity: 0.95; +} + +.navbar .dropdown-menu { + background-color: var(--global-bg-color); + border: 1px solid var(--global-divider-color); + + a:not(.active) { + color: var(--global-text-color); + } + + a:hover { + color: var(--global-hover-color); + } + + .dropdown-divider { + border-top: 1px solid var(--global-divider-color) !important; + } +} + +.dropdown-item { + color: var(--global-text-color); + + &:hover { + color: var(--global-hover-color); + background-color: var(--global-bg-color); + } +} + +.navbar.navbar-light { + a { + &:hover { + text-decoration: none; + } + } + + .navbar-brand { + color: var(--global-text-color); + } + + .navbar-nav .nav-item .nav-link { + color: var(--global-text-color); + + &:hover { + color: var(--global-hover-color); + } + } + + .navbar-nav .nav-item.active>.nav-link { + background-color: inherit; + font-weight: bolder; + color: var(--global-theme-color); + + &:hover { + color: var(--global-hover-color); + } + } + + .navbar-brand.social { + padding-bottom: 0; + padding-top: 0; + font-size: 1.7rem; + + a { + i::before { + color: var(--global-text-color); + transition-property: all 0.2s ease-in-out; + } + + &:hover { + i::before { + color: var(--global-theme-color); + } + } + } + } +} + +.navbar-toggler { + .icon-bar { + display: block; + width: 22px; + height: 2px; + background-color: var(--global-text-color); + border-radius: 1px; + margin-bottom: 4px; + transition: all 0.2s; + } + + .top-bar { + transform: rotate(45deg); + transform-origin: 10% 10%; + } + + .middle-bar { + opacity: 0; + } + + .bottom-bar { + transform: rotate(-45deg); + transform-origin: 10% 90%; + } +} + +.navbar-toggler.collapsed { + .top-bar { + transform: rotate(0); + } + + .middle-bar { + opacity: 1; + } + + .bottom-bar { + transform: rotate(0); + } +} + +#light-toggle { + padding: 0; + border: 0; + background-color: inherit; + color: var(--global-text-color); + + &:hover { + color: var(--global-hover-color); + } +} + +// Social (bottom) + +.social { + text-align: center; + + .contact-icons { + font-size: 4rem; + + a { + i::before { + color: var(--global-text-color); + transition-property: all 0.2s ease-in-out; + } + + &:hover { + i::before { + color: var(--global-theme-color); + } + } + } + } + + .contact-note { + font-size: 0.8rem; + } +} + +.wechat-modal { + display: none; + position: fixed; + z-index: 1; + padding-top: 100px; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.8); +} + +.wechat-modal > img { + display: block; + position: relative; + top: 50%; + left: 50%; + width: 33%; + max-width: 400px; + transform: translate(-50%, -50%); +} + +@media only screen and (max-width: 400px){ + .wechat-modal > img { + width: 100%; + } +} + + +// Footer +footer.fixed-bottom { + background-color: var(--global-footer-bg-color); + font-size: 0.75rem; + + .container { + color: var(--global-footer-text-color); + padding-top: 9px; + padding-bottom: 8px; + } + + a { + color: var(--global-footer-link-color); + + &:hover { + color: var(--global-theme-color); + text-decoration: none; + } + } +} + +footer.sticky-bottom { + border-top: 1px solid var(--global-divider-color); + padding-top: 40px; + padding-bottom: 40px; + font-size: 0.9rem; +} + +// CV + +.cv { + margin-bottom: 40px; + + .card { + background-color: var(--global-card-bg-color); + border: 1px solid var(--global-divider-color); + + .list-group-item { + background-color: inherit; + border-color: var(--global-divider-color); + + .badge { + color: var(--global-card-bg-color) !important; + background-color: var(--global-theme-color) !important; + } + } + } +} + +.table-cv-map { + background-color: transparent; + border: none; + color: var(--global-text-color); +} + +// Repositories + +@media (min-width: 768px) { + .repo { + max-width: 50%; + } +} + +// Blog + +.header-bar { + border-bottom: 1px solid var(--global-divider-color); + text-align: center; + padding-top: 2rem; + padding-bottom: 3rem; + + h1 { + color: var(--global-theme-color); + font-size: 5rem; + } +} + +.tag-category-list { + border-bottom: 1px solid var(--global-divider-color); + text-align: center; + padding-top: 1rem; + + ul { + justify-content: center; + display: flow-root; + + p, + li { + list-style: none; + display: inline-block; + padding: 1rem 0.5rem; + color: var(--global-text-color-light); + } + } +} + +.post-title { + mjx-container[jax="CHTML"][display="true"] { + display: unset; + } +} + +.post-list { + margin: 0; + margin-bottom: 40px; + padding: 0; + + li { + border-bottom: 1px solid var(--global-divider-color); + list-style: none; + padding-top: 2rem; + padding-bottom: 2rem; + + .post-meta { + color: var(--global-text-color-light); + font-size: 0.875rem; + margin-bottom: 0; + } + + .post-tags { + color: var(--global-text-color-light); + font-size: 0.875rem; + padding-top: 0.25rem; + padding-bottom: 0; + } + + a { + color: var(--global-text-color); + text-decoration: none; + + &:hover { + color: var(--global-theme-color); + } + } + + mjx-container[jax="CHTML"][display="true"] { + display: unset; + } + } +} + +.pagination { + .page-item { + .page-link { + color: var(--global-text-color); + + &:hover { + color: $black-color; + } + } + + &.active .page-link { + color: $white-color; + background-color: var(--global-theme-color); + + &:hover { + background-color: var(--global-theme-color); + } + } + } +} + + +// Distill + +.distill { + a:hover { + border-bottom-color: var(--global-theme-color); + text-decoration: none; + } +} + + +// Projects + +.projects { + a { + text-decoration: none; + + &:hover { + .card-title { + color: var(--global-theme-color); + } + } + } + + .card { + img { + width: 100%; + } + } + + .card-item { + width: auto; + margin-bottom: 10px; + + .row { + display: flex; + align-items: center; + } + } + + .grid-sizer, + .grid-item { + width: 250px; + margin-bottom: 10px; + } + + h2.category { + color: var(--global-divider-color); + border-bottom: 1px solid var(--global-divider-color); + padding-top: 0.5rem; + margin-top: 2rem; + margin-bottom: 1rem; + text-align: right; + } +} + + +// Publications + +.publications { + margin-top: 2rem; + + h1 { + color: var(--global-theme-color); + font-size: 2rem; + text-align: center; + margin-top: 1em; + margin-bottom: 1em; + } + + h2 { + margin-bottom: 1rem; + + span { + font-size: 1.5rem; + } + } + + h2.bibliography { + color: var(--global-divider-color); + border-top: 1px solid var(--global-divider-color); + padding-top: 1rem; + margin-top: 2rem; + margin-bottom: -2rem; + text-align: right; + } + + ol.bibliography { + list-style: none; + padding: 0; + margin-top: 0; + + li { + margin-bottom: 1rem; + + .preview { + width: 100%; + min-width: 80px; + max-width: 200px; + } + + .abbr { + height: 2rem; + margin-bottom: 0.5rem; + + abbr { + display: inline-block; + background-color: var(--global-theme-color); + padding-left: 1rem; + padding-right: 1rem; + + a { + color: white; + + &:hover { + text-decoration: none; + } + } + } + + .award { + color: var(--global-theme-color) !important; + border: 1px solid var(--global-theme-color); + } + } + + .title { + font-weight: bolder; + } + + .author { + a { + border-bottom: 1px dashed var(--global-theme-color); + + &:hover { + border-bottom-style: solid; + text-decoration: none; + } + } + + >em { + border-bottom: 1px solid; + font-style: normal; + } + + >span.more-authors { + color: var(--global-text-color-light); + border-bottom: 1px dashed var(--global-text-color-light); + cursor: pointer; + + &:hover { + color: var(--global-text-color); + border-bottom: 1px dashed var(--global-text-color); + } + } + } + + .links { + a.btn { + color: var(--global-text-color); + border: 1px solid var(--global-text-color); + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + margin-left: 0; + + &:hover { + color: var(--global-theme-color); + border-color: var(--global-theme-color); + } + } + } + + .badges { + padding-bottom: 0.5rem; + span { + display: inline-block; + color: $black-color; + height: 100%; + padding-right: 0.5rem; + vertical-align: middle; + + &:hover { + text-decoration: underline; + } + } + } + + .hidden { + font-size: 0.875rem; + max-height: 0px; + overflow: hidden; + text-align: justify; + transition-property: 0.15s ease; + -moz-transition: 0.15s ease; + -ms-transition: 0.15s ease; + -o-transition: 0.15s ease; + transition: all 0.15s ease; + + p { + line-height: 1.4em; + margin: 10px; + } + + pre { + font-size: 1em; + line-height: 1.4em; + padding: 10px; + } + } + + .hidden.open { + max-height: 100em; + transition-property: 0.15s ease; + -moz-transition: 0.15s ease; + -ms-transition: 0.15s ease; + -o-transition: 0.15s ease; + transition: all 0.15s ease; + } + + div.abstract.hidden { + border: dashed 1px var(--global-bg-color); + } + + div.abstract.hidden.open { + border-color: var(--global-text-color); + } + } + } +} + +// Rouge Color Customization +figure.highlight { + margin: 0 0 1rem; +} + +pre { + color: var(--global-theme-color); + background-color: var(--global-code-bg-color); + border-radius: 6px; + padding: 6px 12px; + + pre, + code { + background-color: transparent; + border-radius: 0; + margin-bottom: 0; + padding: 0; + } +} + +code { + color: var(--global-theme-color); + background-color: var(--global-code-bg-color); + border-radius: 3px; + padding: 3px 3px; +} + + +// Transitioning Themes +html.transition, +html.transition *, +html.transition *:before, +html.transition *:after { + transition: all 750ms !important; + transition-delay: 0 !important; +} + +// Extra Markdown style (post Customization) +.post { + .post-meta { + color: var(--global-text-color-light); + font-size: 0.875rem; + margin-bottom: 0; + } + + .post-tags { + color: var(--global-text-color-light); + font-size: 0.875rem; + padding-top: 0.25rem; + padding-bottom: 1rem; + + a { + color: var(--global-text-color-light); + text-decoration: none; + + &:hover { + color: var(--global-theme-color); + } + } + } +} + +progress { + /* Positioning */ + position: fixed; + left: 0; + top: 56px; + z-index: 10; + + /* Dimensions */ + width: 100%; + height: 1px; + + /* Reset the appearance */ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + + /* Get rid of the default border in Firefox/Opera. */ + border: none; + + /* Progress bar container for Firefox/IE10 */ + background-color: transparent; + + /* Progress bar value for IE10 */ + color: var(--global-theme-color); +} + +progress::-webkit-progress-bar { + background-color: transparent; +} + +progress::-webkit-progress-value { + background-color: var(--global-theme-color); +} + +progress::-moz-progress-bar { + background-color: var(--global-theme-color); +} + +.progress-container { + width: 100%; + background-color: transparent; + position: fixed; + top: 56px; + left: 0; + height: 5px; + display: block; +} + +.progress-bar { + background-color: var(--global-theme-color); + width: 0%; + display: block; + height: inherit; +} + +/* Copy button */ +.code-display-wrapper { + position: relative; + + .copy { + background: var(--global-card-bg-color); + border-color: var(--global-bg-color); + border-radius: .3rem; + border-style: none; + color: var(--global-text-color); + font-size: medium; + opacity: 0; + position: absolute; + right: .5rem; + top: .5rem; + } + + &:active .copy, + &:focus .copy, + &:hover .copy { + color: var(--global-hover-color); + opacity: 1; + } +} + +.btn-group.dropdown { + .btn { + box-shadow: none; + -webkit-box-shadow: none; + } + + .btn-secondary.dropdown-toggle { + border: 1px solid var(--global-divider-color); + + .page-size { + color: inherit; + } + + &:not(.active) { + background-color: var(--global-bg-color) !important; + color: var(--global-text-color); + } + + &:hover { + background-color: var(--global-hover-color) !important; + color: var(--global-hover-text-color) !important; + } + } + + .dropdown-menu { + background-color: var(--global-bg-color); + } + + .dropdown-item { + background-color: var(--global-bg-color); + color: var(--global-text-color); + + &:hover { + color: var(--global-hover-color); + } + } + + .dropdown-item.active, .dropdown-item:active { + background-color: var(--global-hover-color); + color: var(--global-hover-text-color) !important; + + &:hover { + color: var(--global-hover-text-color); + } + } +} + +/* Table of Contents */ +nav[data-toggle="toc"] { + top: 5rem; + + .nav .nav>li>a { + font-size: .75rem; + } + + .nav>li>a { + color: var(--global-text-color); + font-size: .75rem; + + &:hover { + color: var(--global-hover-color); + border-left-color: var(--global-hover-color); + } + } + + .nav-link.active { + color: var(--global-theme-color); + border-left-color: var(--global-theme-color); + font-size: .75rem; + + &:hover { + color: var(--global-hover-color); + border-left-color: var(--global-hover-color); + } + } +} + +/* small screens */ +@media (max-width: 576px) { + /* override stickyness so that the navigation does not follow scrolling */ + nav[data-toggle="toc"] { + visibility: hidden; + height: 0; + top: 0; + } +} + +.featured-posts { + a { + color: var(--global-text-color-light); + text-decoration: none; + + .card-text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + &:hover { + color: var(--global-theme-color); + + .card-title { + color: var(--global-theme-color); + } + } + } + + .card-item { + margin-bottom: 10px; + } + + .post-meta { + color: var(--global-text-color-light); + font-size: 0.875rem; + margin-bottom: 0; + padding-top: 0.5rem; + } +} + +.medium-zoom-overlay, +.medium-zoom-image--opened { + z-index: 999; +} + +#toc-sidebar { + z-index: 1; +} diff --git a/_sass/_cv.scss b/_sass/_cv.scss new file mode 100644 index 0000000..cce8002 --- /dev/null +++ b/_sass/_cv.scss @@ -0,0 +1,215 @@ +/***************************** + * CV shared styles + *****************************/ + +div.container-link-button { + margin-right: 0.5rem; +} + +table.table-cv { + background-color: transparent !important; +} + +a.btncv { + color: var(--global-text-color) !important; + border: 1px solid var(--global-text-color) !important; + border-radius: 0.125rem; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + text-decoration: none; + font-weight: 400; + font-size: .7rem; + text-align: center; + vertical-align: middle; + text-transform: uppercase; + white-space: nowrap; +} + +a.btncv:hover { + color: var(--global-theme-color) !important; + border-color: var(--global-theme-color) !important; + text-decoration: none !important; +} + +/***************************** + * CV TIME_TABLE styles + *****************************/ + +p.location { + font-size: 0.7rem; + white-space: nowrap; +} + +i.iconlocation { + color: var(--global-theme-color); + font-size: 0.8rem; +} + +i.iconinstitution { + color: var(--global-theme-color); + font-size: 0.95rem; + margin-right: 0.3rem; +} + +i.icondepartment { + color: var(--global-theme-color); + font-size: 0.8rem; + margin-right: 0.3rem; +} + +table.institution { + margin-bottom: 1rem; +} + +td.department { + font-size: 0.8rem; +} + +div.container-links { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: flex-start; + margin-top: 1rem; + margin-bottom: 0.5rem; +} + +/***************************** + * CV MAP styles + *****************************/ + +div.container-pdf { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: flex-start; +} + +/***************************** + * CV LIST_GROUPS styles + *****************************/ + +div.list-groups { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + flex-direction: row; + align-content: center; +} + +div.list-group { + display: flex; + flex-wrap: wrap; + flex-direction: column; + align-items: flex-start; + margin-bottom: 2rem; +} + +td.list-group-category { + color: var(--global-theme-color); + margin-bottom: 0.5rem; +} + +td.list-group-category-icon { + font-size: 0.8rem; + color: var(--global-theme-color); + width: 1.4rem; + padding-right: 0.4rem; +} + +td.list-group-name { + font-size: 0.8rem; +} + +td.list-group-level { + font-size: 0.8rem; + padding-left: 0.5rem; +} + +td.list-group-school { + font-size: 0.7rem; + padding-left: 0.5rem; + text-align: center; +} + +p.list-group-time { + font-size: 0.7rem; + padding-left: 0.5rem; +} + +td.list-group-link { + padding-left: 0.5rem; +} + +/***************************** + * CV TOC styles + *****************************/ + +a.anchor { + display: block; + position: relative; + top: -50px; + visibility: hidden; +} + +ul.timeline { + margin-top: 2rem; + margin-bottom: 2rem; +} + +ul.timeline li { + position: relative; + min-height: 2.2rem; + color: var(--global-text-color); + list-style-position: inside; +} + +span.badge-toc { + color: var(--global-bg-color); + background-color: var(--global-theme-color); + border-radius: 0.125rem; + padding: 0.125rem 0.5rem 0.125rem 0.5rem; + font-weight: 700 !important; + display: inline-block; + inline-size: fit-content; +} + +ul.timeline li::before { + content: ""; + min-height: 2.5rem; + width: 1px; + background: var(--global-text-color); + margin: 0; + padding: 0; + position: absolute; + left: 2px; + top: -0.5rem; +} + +/*ul.timeline::before { + content: "●"; + font-size: 1em; + display: inline-block; + margin: 0; + padding: 0; + position: relative; + left: -2px; + top: 0.4rem; + color: var(--global-text-color); +} + ul.timeline::after { + content: "●"; + font-size: 1em; + display: inline-block; + margin: 0; + padding: 0; + position: relative; + left: -2px; + top: -1rem; + color: var(--global-text-color); +} +*/ \ No newline at end of file diff --git a/_sass/_distill.scss b/_sass/_distill.scss new file mode 100644 index 0000000..f089541 --- /dev/null +++ b/_sass/_distill.scss @@ -0,0 +1,154 @@ +/******************************************************************************* + * Style overrides for distill blog posts. + ******************************************************************************/ + +d-byline { + border-top-color: var(--global-divider-color) !important; +} + +d-byline h3 { + color: var(--global-text-color) !important; +} + +d-byline a, d-article d-byline a { + color: var(--global-text-color) !important; + &:hover { + color: var(--global-hover-color) !important; + } +} + +d-article { + border-top-color: var(--global-divider-color) !important; + p, h1, h2, h3, h4, h5, h6, li, table { + color: var(--global-text-color) !important; + } + h1, h2, hr, table, table th, table td { + border-bottom-color: var(--global-divider-color) !important; + } + a { + color: var(--global-theme-color) !important; + &:hover { + color: var(--global-theme-color) !important; + } + } + b i { + display: inline; + } + blockquote { + border-left: 2px solid var(--global-theme-color) !important; + } + + // Style taken from code blocks + details { + color: var(--global-text-color); + background-color: var(--global-code-bg-color); + margin-top: 0; + padding: 8px 12px; + position: relative; + border-radius: 6px; + display: block; + margin-bottom: 20px; + grid-column: text; + overflow: auto; + max-width: 100%; + summary { + color: var(--global-theme-color); + } + p { + margin-top: 0.5rem; + margin-bottom: 0.5rem; + } + } + + d-contents { + align-self: start; + grid-column: 1 / 4; + grid-row: auto / span 4; + justify-self: end; + margin-top: 0em; + padding-left: 2em; + padding-right: 3em; + border-right: 1px solid var(--global-divider-color); + width: calc(max(70%, 300px)); + margin-right: 0px; + margin-top: 0em; + display: grid; + grid-template-columns: + minmax(8px, 1fr) [toc] auto + minmax(8px, 1fr) [toc-line] 1px + minmax(32px, 2fr); + + nav { + grid-column: toc; + a { + border-bottom: none !important; + &:hover { + border-bottom: 1px solid var(--global-text-color) !important; + } + } + h3 { + margin-top: 0; + margin-bottom: 1em; + } + div { + display: block; + outline: none; + margin-bottom: 0.8em; + color: rgba(0, 0, 0, 0.8); + font-weight: bold; + } + ul { + padding-left: 1em; + margin-top: 0; + margin-bottom: 6px; + list-style-type: none; + li { + margin-bottom: 0.25em; + } + } + } + .figcaption { + line-height: 1.4em; + } + toc-line { + border-right: 1px solid var(--global-divider-color); + grid-column: toc-line; + } + } + + d-footnote { + scroll-margin-top: 66px; + } +} + +d-appendix { + border-top-color: var(--global-divider-color) !important; + color: var(--global-distill-app-color) !important; + h3, li, span { + color: var(--global-distill-app-color) !important; + } + a, a.footnote-backlink { + color: var(--global-distill-app-color) !important; + &:hover { + color: var(--global-hover-color) !important; + } + } +} + +@media (max-width: 1024px) { + d-article { + d-contents { + display: block; + grid-column-start: 2; + grid-column-end: -2; + padding-bottom: 0.5em; + margin-bottom: 1em; + padding-top: 0.5em; + width: 100%; + border: 1px solid var(--global-divider-color); + nav { + grid-column: none; + } + } + } +} diff --git a/_sass/_layout.scss b/_sass/_layout.scss new file mode 100644 index 0000000..9c10cac --- /dev/null +++ b/_sass/_layout.scss @@ -0,0 +1,50 @@ +/****************************************************************************** + * Content + ******************************************************************************/ + +body { + padding-bottom: 70px; + color: var(--global-text-color); + background-color: var(--global-bg-color); + + h1, h2, h3, h4, h5, h6 { + scroll-margin-top: 66px; + } +} + +body.fixed-top-nav { + // Add some padding for the nav-bar. + padding-top: 56px; +} + +body.sticky-bottom-footer { + // Remove padding below footer. + padding-bottom: 0; +} + +.container { + max-width: $max-content-width; +} + +// Profile +.profile { + img { + width: 100%; + } +} + +// TODO: redefine content layout. + + +/****************************************************************************** + * Publications + ******************************************************************************/ + +// TODO: redefine publications layout. + + +/***************************************************************************** +* Projects +*****************************************************************************/ + +// TODO: redefine projects layout. diff --git a/_sass/_themes.scss b/_sass/_themes.scss new file mode 100644 index 0000000..fd34af4 --- /dev/null +++ b/_sass/_themes.scss @@ -0,0 +1,93 @@ +/******************************************************************************* + * Themes + ******************************************************************************/ + +:root { + --global-bg-color: #{$white-color}; + --global-code-bg-color: #{$code-bg-color-light}; + --global-text-color: #{$black-color}; + --global-text-color-light: #{$grey-color}; + --global-theme-color: #{$purple-color}; + --global-hover-color: #{$purple-color}; + --global-hover-text-color: #{$white-color}; + --global-footer-bg-color: #{$grey-color-dark}; + --global-footer-text-color: #{$grey-color-light}; + --global-footer-link-color: #{$white-color}; + --global-distill-app-color: #{$grey-color}; + --global-divider-color: rgba(0,0,0,.1); + --global-card-bg-color: #{$white-color}; + + --global-tip-block: #42b983; + --global-tip-block-bg: #e2f5ec; + --global-tip-block-text: #215d42; + --global-tip-block-title: #359469; + --global-warning-block: #e7c000; + --global-warning-block-bg: #fff8d8; + --global-warning-block-text: #6b5900; + --global-warning-block-title: #b29400; + --global-danger-block: #c00; + --global-danger-block-bg: #ffe0e0; + --global-danger-block-text: #600; + --global-danger-block-title: #c00; + + .fa-sun { + display : none; + } + .fa-moon { + padding-left: 10px; + padding-top: 12px; + display : block; + } + + .repo-img-light { + display: block; + } + .repo-img-dark { + display: none; + } +} + +html[data-theme='dark'] { + --global-bg-color: #{$grey-color-dark}; + --global-code-bg-color: #{$code-bg-color-dark}; + --global-text-color: #{$grey-color-light}; + --global-text-color-light: #{$grey-color-light}; + --global-theme-color: #{$cyan-color}; + --global-hover-color: #{$cyan-color}; + --global-hover-text-color: #{$white-color}; + --global-footer-bg-color: #{$grey-color-light}; + --global-footer-text-color: #{$grey-color-dark}; + --global-footer-link-color: #{$black-color}; + --global-distill-app-color: #{$grey-color-light}; + --global-divider-color: #424246; + --global-card-bg-color: #{$grey-900}; + + --global-tip-block: #42b983; + --global-tip-block-bg: #e2f5ec; + --global-tip-block-text: #215d42; + --global-tip-block-title: #359469; + --global-warning-block: #e7c000; + --global-warning-block-bg: #fff8d8; + --global-warning-block-text: #6b5900; + --global-warning-block-title: #b29400; + --global-danger-block: #c00; + --global-danger-block-bg: #ffe0e0; + --global-danger-block-text: #600; + --global-danger-block-title: #c00; + + .fa-sun { + padding-left: 10px; + padding-top: 12px; + display : block; + } + .fa-moon { + display : none; + } + + .repo-img-light { + display: none; + } + .repo-img-dark { + display: block; + } +} diff --git a/_sass/_variables.scss b/_sass/_variables.scss new file mode 100644 index 0000000..66b3d00 --- /dev/null +++ b/_sass/_variables.scss @@ -0,0 +1,39 @@ +/******************************************************************************* + * Variables used throughout the theme. + * To adjust anything, simply edit the variables below and rebuild the theme. + ******************************************************************************/ + +// Colors +$red-color: #FF3636 !default; +$red-color-dark: #B71C1C !default; +$orange-color: #F29105 !default; +$blue-color: #0076df !default; +$blue-color-dark: #00369f !default; +$cyan-color: #2698BA !default; +$light-cyan-color: lighten($cyan-color, 25%); +$green-color: #00ab37 !default; +$green-color-lime: #B7D12A !default; +$green-color-dark: #009f06 !default; +$green-color-light: #ddffdd !default; +$green-color-bright: #11D68B !default; +$purple-color: #B509AC !default; +$light-purple-color: lighten($purple-color, 25%); +$pink-color: #f92080 !default; +$pink-color-light: #ffdddd !default; +$yellow-color: #efcc00 !default; + +$grey-color: #828282 !default; +$grey-color-light: lighten($grey-color, 40%); +$grey-color-dark: #1C1C1D; +$grey-900: #212529; + +$white-color: #ffffff !default; +$black-color: #000000 !default; + +// Theme colors + +$code-bg-color-light: rgba($purple-color, 0.05); +$code-bg-color-dark: #2c3237 !default; + +// Font awesome location +$fa-font-path: "../webfonts"; \ No newline at end of file diff --git a/_sass/font-awesome/_animated.scss b/_sass/font-awesome/_animated.scss new file mode 100644 index 0000000..93555b2 --- /dev/null +++ b/_sass/font-awesome/_animated.scss @@ -0,0 +1,153 @@ +// animating icons +// -------------------------- + +.#{$fa-css-prefix}-beat { + animation-name: #{$fa-css-prefix}-beat; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out); +} + +.#{$fa-css-prefix}-bounce { + animation-name: #{$fa-css-prefix}-bounce; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1)); +} + +.#{$fa-css-prefix}-fade { + animation-name: #{$fa-css-prefix}-fade; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1)); +} + +.#{$fa-css-prefix}-beat-fade { + animation-name: #{$fa-css-prefix}-beat-fade; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1)); +} + +.#{$fa-css-prefix}-flip { + animation-name: #{$fa-css-prefix}-flip; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out); +} + +.#{$fa-css-prefix}-shake { + animation-name: #{$fa-css-prefix}-shake; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear); +} + +.#{$fa-css-prefix}-spin { + animation-name: #{$fa-css-prefix}-spin; + animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s); + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear); +} + +.#{$fa-css-prefix}-spin-reverse { + --#{$fa-css-prefix}-animation-direction: reverse; +} + +.#{$fa-css-prefix}-pulse, +.#{$fa-css-prefix}-spin-pulse { + animation-name: #{$fa-css-prefix}-spin; + animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal); + animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s); + animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite); + animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8)); +} + +// if agent or operating system prefers reduced motion, disable animations +// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/ +// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion +@media (prefers-reduced-motion: reduce) { + .#{$fa-css-prefix}-beat, + .#{$fa-css-prefix}-bounce, + .#{$fa-css-prefix}-fade, + .#{$fa-css-prefix}-beat-fade, + .#{$fa-css-prefix}-flip, + .#{$fa-css-prefix}-pulse, + .#{$fa-css-prefix}-shake, + .#{$fa-css-prefix}-spin, + .#{$fa-css-prefix}-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} + +@keyframes #{$fa-css-prefix}-beat { + 0%, 90% { transform: scale(1); } + 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); } +} + +@keyframes #{$fa-css-prefix}-bounce { + 0% { transform: scale(1,1) translateY(0); } + 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); } + 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)); } + 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); } + 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); } + 64% { transform: scale(1,1) translateY(0); } + 100% { transform: scale(1,1) translateY(0); } +} + +@keyframes #{$fa-css-prefix}-fade { + 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); } +} + +@keyframes #{$fa-css-prefix}-beat-fade { + 0%, 100% { + opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4); + transform: scale(1); + } + 50% { + opacity: 1; + transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125)); + } +} + +@keyframes #{$fa-css-prefix}-flip { + 50% { + 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)); + } +} + +@keyframes #{$fa-css-prefix}-shake { + 0% { transform: rotate(-15deg); } + 4% { transform: rotate(15deg); } + 8%, 24% { transform: rotate(-18deg); } + 12%, 28% { transform: rotate(18deg); } + 16% { transform: rotate(-22deg); } + 20% { transform: rotate(22deg); } + 32% { transform: rotate(-12deg); } + 36% { transform: rotate(12deg); } + 40%, 100% { transform: rotate(0deg); } +} + +@keyframes #{$fa-css-prefix}-spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + diff --git a/_sass/font-awesome/_bordered-pulled.scss b/_sass/font-awesome/_bordered-pulled.scss new file mode 100644 index 0000000..9068253 --- /dev/null +++ b/_sass/font-awesome/_bordered-pulled.scss @@ -0,0 +1,20 @@ +// bordered + pulled icons +// ------------------------- + +.#{$fa-css-prefix}-border { + border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color}); + border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius}); + border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style}); + border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width}); + padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding}); +} + +.#{$fa-css-prefix}-pull-left { + float: left; + margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); +} + +.#{$fa-css-prefix}-pull-right { + float: right; + margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); +} diff --git a/_sass/font-awesome/_core.scss b/_sass/font-awesome/_core.scss new file mode 100644 index 0000000..1b2fd99 --- /dev/null +++ b/_sass/font-awesome/_core.scss @@ -0,0 +1,43 @@ +// base icon class definition +// ------------------------- + +.#{$fa-css-prefix} { + font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}'); + font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style}); +} + +.#{$fa-css-prefix}, +.#{$fa-css-prefix}-classic, +.#{$fa-css-prefix}-sharp, +.fas, +.#{$fa-css-prefix}-solid, +.far, +.#{$fa-css-prefix}-regular, +.fab, +.#{$fa-css-prefix}-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--#{$fa-css-prefix}-display, #{$fa-display}); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; +} + +.fas, +.#{$fa-css-prefix}-classic, +.#{$fa-css-prefix}-solid, +.far, +.#{$fa-css-prefix}-regular { + font-family: 'Font Awesome 6 Free'; +} + +.fab, +.#{$fa-css-prefix}-brands { + font-family: 'Font Awesome 6 Brands'; +} + + +%fa-icon { + @include fa-icon; +} diff --git a/_sass/font-awesome/_fixed-width.scss b/_sass/font-awesome/_fixed-width.scss new file mode 100644 index 0000000..7234236 --- /dev/null +++ b/_sass/font-awesome/_fixed-width.scss @@ -0,0 +1,7 @@ +// fixed-width icons +// ------------------------- + +.#{$fa-css-prefix}-fw { + text-align: center; + width: $fa-fw-width; +} diff --git a/_sass/font-awesome/_functions.scss b/_sass/font-awesome/_functions.scss new file mode 100644 index 0000000..a17ffe8 --- /dev/null +++ b/_sass/font-awesome/_functions.scss @@ -0,0 +1,57 @@ +// functions +// -------------------------- + +// fa-content: convenience function used to set content property +@function fa-content($fa-var) { + @return unquote("\"#{ $fa-var }\""); +} + +// fa-divide: Originally obtained from the Bootstrap https://github.com/twbs/bootstrap +// +// Licensed under: The MIT License (MIT) +// +// Copyright (c) 2011-2021 Twitter, Inc. +// Copyright (c) 2011-2021 The Bootstrap Authors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +@function fa-divide($dividend, $divisor, $precision: 10) { + $sign: if($dividend > 0 and $divisor > 0, 1, -1); + $dividend: abs($dividend); + $divisor: abs($divisor); + $quotient: 0; + $remainder: $dividend; + @if $dividend == 0 { + @return 0; + } + @if $divisor == 0 { + @error "Cannot divide by 0"; + } + @if $divisor == 1 { + @return $dividend; + } + @while $remainder >= $divisor { + $quotient: $quotient + 1; + $remainder: $remainder - $divisor; + } + @if $remainder > 0 and $precision > 0 { + $remainder: fa-divide($remainder * 10, $divisor, $precision - 1) * .1; + } + @return ($quotient + $remainder) * $sign; +} diff --git a/_sass/font-awesome/_icons.scss b/_sass/font-awesome/_icons.scss new file mode 100644 index 0000000..0f55926 --- /dev/null +++ b/_sass/font-awesome/_icons.scss @@ -0,0 +1,10 @@ +// specific icon class definition +// ------------------------- + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +@each $name, $icon in $fa-icons { + .#{$fa-css-prefix}-#{$name}::before { content: unquote("\"#{ $icon }\""); } +} + diff --git a/_sass/font-awesome/_list.scss b/_sass/font-awesome/_list.scss new file mode 100644 index 0000000..ced36e2 --- /dev/null +++ b/_sass/font-awesome/_list.scss @@ -0,0 +1,18 @@ +// icons in a list +// ------------------------- + +.#{$fa-css-prefix}-ul { + list-style-type: none; + margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin}); + padding-left: 0; + + > li { position: relative; } +} + +.#{$fa-css-prefix}-li { + left: calc(var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}) * -1); + position: absolute; + text-align: center; + width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}); + line-height: inherit; +} diff --git a/_sass/font-awesome/_mixins.scss b/_sass/font-awesome/_mixins.scss new file mode 100644 index 0000000..e06b69a --- /dev/null +++ b/_sass/font-awesome/_mixins.scss @@ -0,0 +1,75 @@ +// mixins +// -------------------------- + +// base rendering for an icon +@mixin fa-icon { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; +} + +// sets relative font-sizing and alignment (in _sizing) +@mixin fa-size ($font-size) { + 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 + line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent + vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender +} + +// only display content to screen readers +// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/ +// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ +@mixin fa-sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +// use in conjunction with .sr-only to only display content when it's focused +@mixin fa-sr-only-focusable() { + &:not(:focus) { + @include fa-sr-only(); + } +} + +// sets a specific icon family to use alongside style + icon mixins + +// convenience mixins for declaring pseudo-elements by CSS variable, +// including all style-specific font properties, and both the ::before +// and ::after elements in the duotone case. +@mixin fa-icon-solid($fa-var) { + @extend %fa-icon; + @extend .fa-solid; + + &::before { + content: unquote("\"#{ $fa-var }\""); + } +} + +@mixin fa-icon-regular($fa-var) { + @extend %fa-icon; + @extend .fa-regular; + + &::before { + content: unquote("\"#{ $fa-var }\""); + } +} + +@mixin fa-icon-brands($fa-var) { + @extend %fa-icon; + @extend .fa-brands; + + &::before { + content: unquote("\"#{ $fa-var }\""); + } +} + diff --git a/_sass/font-awesome/_rotated-flipped.scss b/_sass/font-awesome/_rotated-flipped.scss new file mode 100644 index 0000000..f27fabe --- /dev/null +++ b/_sass/font-awesome/_rotated-flipped.scss @@ -0,0 +1,31 @@ +// rotating + flipping icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { + transform: rotate(90deg); +} + +.#{$fa-css-prefix}-rotate-180 { + transform: rotate(180deg); +} + +.#{$fa-css-prefix}-rotate-270 { + transform: rotate(270deg); +} + +.#{$fa-css-prefix}-flip-horizontal { + transform: scale(-1, 1); +} + +.#{$fa-css-prefix}-flip-vertical { + transform: scale(1, -1); +} + +.#{$fa-css-prefix}-flip-both, +.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { + transform: scale(-1, -1); +} + +.#{$fa-css-prefix}-rotate-by { + transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, none)); +} diff --git a/_sass/font-awesome/_screen-reader.scss b/_sass/font-awesome/_screen-reader.scss new file mode 100644 index 0000000..2beb887 --- /dev/null +++ b/_sass/font-awesome/_screen-reader.scss @@ -0,0 +1,14 @@ +// screen-reader utilities +// ------------------------- + +// only display content to screen readers +.sr-only, +.#{$fa-css-prefix}-sr-only { + @include fa-sr-only; +} + +// use in conjunction with .sr-only to only display content when it's focused +.sr-only-focusable, +.#{$fa-css-prefix}-sr-only-focusable { + @include fa-sr-only-focusable; +} diff --git a/_sass/font-awesome/_shims.scss b/_sass/font-awesome/_shims.scss new file mode 100644 index 0000000..7809aa6 --- /dev/null +++ b/_sass/font-awesome/_shims.scss @@ -0,0 +1,2042 @@ +.#{$fa-css-prefix}.#{$fa-css-prefix}-glass:before { content: unquote("\"#{ $fa-var-martini-glass-empty }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o:before { content: unquote("\"#{ $fa-var-envelope }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o:before { content: unquote("\"#{ $fa-var-star }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-remove:before { content: unquote("\"#{ $fa-var-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-close:before { content: unquote("\"#{ $fa-var-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gear:before { content: unquote("\"#{ $fa-var-gear }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o:before { content: unquote("\"#{ $fa-var-trash-can }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-home:before { content: unquote("\"#{ $fa-var-house }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o:before { content: unquote("\"#{ $fa-var-file }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o:before { content: unquote("\"#{ $fa-var-clock }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down:before { content: unquote("\"#{ $fa-var-circle-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up:before { content: unquote("\"#{ $fa-var-circle-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o:before { content: unquote("\"#{ $fa-var-circle-play }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-repeat:before { content: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-right:before { content: unquote("\"#{ $fa-var-arrow-rotate-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-refresh:before { content: unquote("\"#{ $fa-var-arrows-rotate }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt:before { content: unquote("\"#{ $fa-var-rectangle-list }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dedent:before { content: unquote("\"#{ $fa-var-outdent }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-video-camera:before { content: unquote("\"#{ $fa-var-video }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o:before { content: unquote("\"#{ $fa-var-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-photo { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-photo:before { content: unquote("\"#{ $fa-var-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-image { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-image:before { content: unquote("\"#{ $fa-var-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-map-marker:before { content: unquote("\"#{ $fa-var-location-dot }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o:before { content: unquote("\"#{ $fa-var-pen-to-square }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-edit { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-edit:before { content: unquote("\"#{ $fa-var-pen-to-square }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-share-square-o:before { content: unquote("\"#{ $fa-var-share-from-square }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o:before { content: unquote("\"#{ $fa-var-square-check }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows:before { content: unquote("\"#{ $fa-var-up-down-left-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o:before { content: unquote("\"#{ $fa-var-circle-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o:before { content: unquote("\"#{ $fa-var-circle-check }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-forward:before { content: unquote("\"#{ $fa-var-share }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-expand:before { content: unquote("\"#{ $fa-var-up-right-and-down-left-from-center }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-compress:before { content: unquote("\"#{ $fa-var-down-left-and-up-right-to-center }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-eye { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-eye-slash { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-warning:before { content: unquote("\"#{ $fa-var-triangle-exclamation }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar:before { content: unquote("\"#{ $fa-var-calendar-days }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-v:before { content: unquote("\"#{ $fa-var-up-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-h:before { content: unquote("\"#{ $fa-var-left-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart:before { content: unquote("\"#{ $fa-var-chart-column }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart-o:before { content: unquote("\"#{ $fa-var-chart-column }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square:before { content: unquote("\"#{ $fa-var-square-twitter }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square:before { content: unquote("\"#{ $fa-var-square-facebook }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gears:before { content: unquote("\"#{ $fa-var-gears }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up:before { content: unquote("\"#{ $fa-var-thumbs-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down:before { content: unquote("\"#{ $fa-var-thumbs-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o:before { content: unquote("\"#{ $fa-var-heart }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-out:before { content: unquote("\"#{ $fa-var-right-from-bracket }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square:before { content: unquote("\"#{ $fa-var-linkedin }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thumb-tack:before { content: unquote("\"#{ $fa-var-thumbtack }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link:before { content: unquote("\"#{ $fa-var-up-right-from-square }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-in:before { content: unquote("\"#{ $fa-var-right-to-bracket }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square:before { content: unquote("\"#{ $fa-var-square-github }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o:before { content: unquote("\"#{ $fa-var-lemon }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o:before { content: unquote("\"#{ $fa-var-square }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o:before { content: unquote("\"#{ $fa-var-bookmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook:before { content: unquote("\"#{ $fa-var-facebook-f }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f:before { content: unquote("\"#{ $fa-var-facebook-f }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-github { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-feed:before { content: unquote("\"#{ $fa-var-rss }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o:before { content: unquote("\"#{ $fa-var-hard-drive }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right:before { content: unquote("\"#{ $fa-var-hand-point-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left:before { content: unquote("\"#{ $fa-var-hand-point-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up:before { content: unquote("\"#{ $fa-var-hand-point-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down:before { content: unquote("\"#{ $fa-var-hand-point-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-globe:before { content: unquote("\"#{ $fa-var-earth-americas }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tasks:before { content: unquote("\"#{ $fa-var-bars-progress }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-alt:before { content: unquote("\"#{ $fa-var-maximize }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-group:before { content: unquote("\"#{ $fa-var-users }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-chain:before { content: unquote("\"#{ $fa-var-link }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cut:before { content: unquote("\"#{ $fa-var-scissors }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o:before { content: unquote("\"#{ $fa-var-copy }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o:before { content: unquote("\"#{ $fa-var-floppy-disk }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-save { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-save:before { content: unquote("\"#{ $fa-var-floppy-disk }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-navicon:before { content: unquote("\"#{ $fa-var-bars }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-reorder:before { content: unquote("\"#{ $fa-var-bars }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-magic:before { content: unquote("\"#{ $fa-var-wand-magic-sparkles }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square:before { content: unquote("\"#{ $fa-var-square-pinterest }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square:before { content: unquote("\"#{ $fa-var-square-google-plus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus:before { content: unquote("\"#{ $fa-var-google-plus-g }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-money:before { content: unquote("\"#{ $fa-var-money-bill-1 }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-unsorted:before { content: unquote("\"#{ $fa-var-sort }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-desc:before { content: unquote("\"#{ $fa-var-sort-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-asc:before { content: unquote("\"#{ $fa-var-sort-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin:before { content: unquote("\"#{ $fa-var-linkedin-in }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-left:before { content: unquote("\"#{ $fa-var-arrow-rotate-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-legal:before { content: unquote("\"#{ $fa-var-gavel }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tachometer:before { content: unquote("\"#{ $fa-var-gauge-high }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dashboard:before { content: unquote("\"#{ $fa-var-gauge-high }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o:before { content: unquote("\"#{ $fa-var-comment }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o:before { content: unquote("\"#{ $fa-var-comments }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-flash:before { content: unquote("\"#{ $fa-var-bolt }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-clipboard:before { content: unquote("\"#{ $fa-var-paste }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o:before { content: unquote("\"#{ $fa-var-lightbulb }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-exchange:before { content: unquote("\"#{ $fa-var-right-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-download:before { content: unquote("\"#{ $fa-var-cloud-arrow-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-upload:before { content: unquote("\"#{ $fa-var-cloud-arrow-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o:before { content: unquote("\"#{ $fa-var-bell }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cutlery:before { content: unquote("\"#{ $fa-var-utensils }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o:before { content: unquote("\"#{ $fa-var-file-lines }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o:before { content: unquote("\"#{ $fa-var-building }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o:before { content: unquote("\"#{ $fa-var-hospital }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tablet:before { content: unquote("\"#{ $fa-var-tablet-screen-button }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile:before { content: unquote("\"#{ $fa-var-mobile-screen-button }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile-phone:before { content: unquote("\"#{ $fa-var-mobile-screen-button }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o:before { content: unquote("\"#{ $fa-var-circle }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply:before { content: unquote("\"#{ $fa-var-reply }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-github-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o:before { content: unquote("\"#{ $fa-var-folder }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o:before { content: unquote("\"#{ $fa-var-folder-open }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o:before { content: unquote("\"#{ $fa-var-face-smile }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o:before { content: unquote("\"#{ $fa-var-face-frown }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o:before { content: unquote("\"#{ $fa-var-face-meh }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o:before { content: unquote("\"#{ $fa-var-keyboard }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o:before { content: unquote("\"#{ $fa-var-flag }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply-all:before { content: unquote("\"#{ $fa-var-reply-all }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full:before { content: unquote("\"#{ $fa-var-star-half-stroke }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-code-fork:before { content: unquote("\"#{ $fa-var-code-branch }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-chain-broken:before { content: unquote("\"#{ $fa-var-link-slash }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-unlink:before { content: unquote("\"#{ $fa-var-link-slash }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o:before { content: unquote("\"#{ $fa-var-calendar }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-css3 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-unlock-alt:before { content: unquote("\"#{ $fa-var-unlock }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o:before { content: unquote("\"#{ $fa-var-square-minus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-level-up:before { content: unquote("\"#{ $fa-var-turn-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-level-down:before { content: unquote("\"#{ $fa-var-turn-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square:before { content: unquote("\"#{ $fa-var-square-pen }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link-square:before { content: unquote("\"#{ $fa-var-square-up-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-compass { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down:before { content: unquote("\"#{ $fa-var-square-caret-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down:before { content: unquote("\"#{ $fa-var-square-caret-down }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up:before { content: unquote("\"#{ $fa-var-square-caret-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up:before { content: unquote("\"#{ $fa-var-square-caret-up }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right:before { content: unquote("\"#{ $fa-var-square-caret-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right:before { content: unquote("\"#{ $fa-var-square-caret-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-eur:before { content: unquote("\"#{ $fa-var-euro-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-euro:before { content: unquote("\"#{ $fa-var-euro-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gbp:before { content: unquote("\"#{ $fa-var-sterling-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-usd:before { content: unquote("\"#{ $fa-var-dollar-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dollar:before { content: unquote("\"#{ $fa-var-dollar-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-inr:before { content: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rupee:before { content: unquote("\"#{ $fa-var-indian-rupee-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-jpy:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cny:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rmb:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yen:before { content: unquote("\"#{ $fa-var-yen-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rub:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ruble:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rouble:before { content: unquote("\"#{ $fa-var-ruble-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-krw:before { content: unquote("\"#{ $fa-var-won-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-won:before { content: unquote("\"#{ $fa-var-won-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin:before { content: unquote("\"#{ $fa-var-btc }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text:before { content: unquote("\"#{ $fa-var-file-lines }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-asc:before { content: unquote("\"#{ $fa-var-arrow-down-a-z }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-desc:before { content: unquote("\"#{ $fa-var-arrow-down-z-a }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-asc:before { content: unquote("\"#{ $fa-var-arrow-down-short-wide }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-desc:before { content: unquote("\"#{ $fa-var-arrow-down-wide-short }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-asc:before { content: unquote("\"#{ $fa-var-arrow-down-1-9 }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-desc:before { content: unquote("\"#{ $fa-var-arrow-down-9-1 }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square:before { content: unquote("\"#{ $fa-var-square-youtube }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square:before { content: unquote("\"#{ $fa-var-square-xing }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play:before { content: unquote("\"#{ $fa-var-youtube }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square:before { content: unquote("\"#{ $fa-var-bitbucket }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square:before { content: unquote("\"#{ $fa-var-square-tumblr }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-down:before { content: unquote("\"#{ $fa-var-down-long }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-up:before { content: unquote("\"#{ $fa-var-up-long }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-left:before { content: unquote("\"#{ $fa-var-left-long }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-right:before { content: unquote("\"#{ $fa-var-right-long }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip:before { content: unquote("\"#{ $fa-var-gratipay }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o:before { content: unquote("\"#{ $fa-var-sun }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o:before { content: unquote("\"#{ $fa-var-moon }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-stack-exchange { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right:before { content: unquote("\"#{ $fa-var-circle-right }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left:before { content: unquote("\"#{ $fa-var-circle-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left:before { content: unquote("\"#{ $fa-var-square-caret-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left:before { content: unquote("\"#{ $fa-var-square-caret-left }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o:before { content: unquote("\"#{ $fa-var-circle-dot }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square:before { content: unquote("\"#{ $fa-var-square-vimeo }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-try:before { content: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-turkish-lira:before { content: unquote("\"#{ $fa-var-turkish-lira-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o:before { content: unquote("\"#{ $fa-var-square-plus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-institution:before { content: unquote("\"#{ $fa-var-building-columns }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bank:before { content: unquote("\"#{ $fa-var-building-columns }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mortar-board:before { content: unquote("\"#{ $fa-var-graduation-cap }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square:before { content: unquote("\"#{ $fa-var-square-reddit }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square:before { content: unquote("\"#{ $fa-var-square-behance }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square:before { content: unquote("\"#{ $fa-var-square-steam }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-automobile:before { content: unquote("\"#{ $fa-var-car }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cab:before { content: unquote("\"#{ $fa-var-taxi }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-soundcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o:before { content: unquote("\"#{ $fa-var-file-pdf }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o:before { content: unquote("\"#{ $fa-var-file-word }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o:before { content: unquote("\"#{ $fa-var-file-excel }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o:before { content: unquote("\"#{ $fa-var-file-powerpoint }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o:before { content: unquote("\"#{ $fa-var-file-image }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o:before { content: unquote("\"#{ $fa-var-file-zipper }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o:before { content: unquote("\"#{ $fa-var-file-zipper }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o:before { content: unquote("\"#{ $fa-var-file-audio }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o:before { content: unquote("\"#{ $fa-var-file-audio }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o:before { content: unquote("\"#{ $fa-var-file-video }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o:before { content: unquote("\"#{ $fa-var-file-video }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o:before { content: unquote("\"#{ $fa-var-file-code }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-bouy:before { content: unquote("\"#{ $fa-var-life-ring }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-buoy:before { content: unquote("\"#{ $fa-var-life-ring }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-life-saver:before { content: unquote("\"#{ $fa-var-life-ring }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-support:before { content: unquote("\"#{ $fa-var-life-ring }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o-notch:before { content: unquote("\"#{ $fa-var-circle-notch }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ra { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-ra:before { content: unquote("\"#{ $fa-var-rebel }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance:before { content: unquote("\"#{ $fa-var-rebel }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-empire { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-ge:before { content: unquote("\"#{ $fa-var-empire }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square:before { content: unquote("\"#{ $fa-var-square-git }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-git { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square:before { content: unquote("\"#{ $fa-var-hacker-news }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square:before { content: unquote("\"#{ $fa-var-hacker-news }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat:before { content: unquote("\"#{ $fa-var-weixin }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-send:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o:before { content: unquote("\"#{ $fa-var-paper-plane }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin:before { content: unquote("\"#{ $fa-var-circle }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-header:before { content: unquote("\"#{ $fa-var-heading }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o:before { content: unquote("\"#{ $fa-var-futbol }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o:before { content: unquote("\"#{ $fa-var-futbol }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-slideshare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yelp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o:before { content: unquote("\"#{ $fa-var-newspaper }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-stripe { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o:before { content: unquote("\"#{ $fa-var-bell-slash }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-trash:before { content: unquote("\"#{ $fa-var-trash-can }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-copyright { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-eyedropper:before { content: unquote("\"#{ $fa-var-eye-dropper }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-area-chart:before { content: unquote("\"#{ $fa-var-chart-area }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pie-chart:before { content: unquote("\"#{ $fa-var-chart-pie }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-line-chart:before { content: unquote("\"#{ $fa-var-chart-line }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square:before { content: unquote("\"#{ $fa-var-square-lastfm }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-angellist { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc:before { content: unquote("\"#{ $fa-var-closed-captioning }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ils:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-shekel:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sheqel:before { content: unquote("\"#{ $fa-var-shekel-sign }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-skyatlas { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond:before { content: unquote("\"#{ $fa-var-gem }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender:before { content: unquote("\"#{ $fa-var-mars-and-venus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-intersex:before { content: unquote("\"#{ $fa-var-mars-and-venus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender-alt:before { content: unquote("\"#{ $fa-var-transgender }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official:before { content: unquote("\"#{ $fa-var-facebook }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-p { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hotel:before { content: unquote("\"#{ $fa-var-bed }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-yc:before { content: unquote("\"#{ $fa-var-y-combinator }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-4:before { content: unquote("\"#{ $fa-var-battery-full }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery:before { content: unquote("\"#{ $fa-var-battery-full }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-3:before { content: unquote("\"#{ $fa-var-battery-three-quarters }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-2:before { content: unquote("\"#{ $fa-var-battery-half }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-1:before { content: unquote("\"#{ $fa-var-battery-quarter }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-0:before { content: unquote("\"#{ $fa-var-battery-empty }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-object-group { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o:before { content: unquote("\"#{ $fa-var-note-sticky }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-diners-club { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-clone { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-o:before { content: unquote("\"#{ $fa-var-hourglass }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-1:before { content: unquote("\"#{ $fa-var-hourglass-start }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-2:before { content: unquote("\"#{ $fa-var-hourglass-half }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-3:before { content: unquote("\"#{ $fa-var-hourglass-end }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o:before { content: unquote("\"#{ $fa-var-hand-back-fist }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o:before { content: unquote("\"#{ $fa-var-hand-back-fist }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o:before { content: unquote("\"#{ $fa-var-hand }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o:before { content: unquote("\"#{ $fa-var-hand }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o:before { content: unquote("\"#{ $fa-var-hand-scissors }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o:before { content: unquote("\"#{ $fa-var-hand-lizard }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o:before { content: unquote("\"#{ $fa-var-hand-spock }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o:before { content: unquote("\"#{ $fa-var-hand-pointer }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o:before { content: unquote("\"#{ $fa-var-hand-peace }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-registered { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-creative-commons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square:before { content: unquote("\"#{ $fa-var-square-odnoklassniki }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-television:before { content: unquote("\"#{ $fa-var-tv }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-amazon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o:before { content: unquote("\"#{ $fa-var-calendar-plus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o:before { content: unquote("\"#{ $fa-var-calendar-minus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o:before { content: unquote("\"#{ $fa-var-calendar-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o:before { content: unquote("\"#{ $fa-var-calendar-check }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o:before { content: unquote("\"#{ $fa-var-map }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting:before { content: unquote("\"#{ $fa-var-comment-dots }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o:before { content: unquote("\"#{ $fa-var-comment-dots }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-houzz { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo:before { content: unquote("\"#{ $fa-var-vimeo-v }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card-alt:before { content: unquote("\"#{ $fa-var-credit-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-scribd { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o:before { content: unquote("\"#{ $fa-var-circle-pause }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o:before { content: unquote("\"#{ $fa-var-circle-stop }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bluetooth { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt:before { content: unquote("\"#{ $fa-var-accessible-icon }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o:before { content: unquote("\"#{ $fa-var-circle-question }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-volume-control-phone:before { content: unquote("\"#{ $fa-var-phone-volume }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-asl-interpreting:before { content: unquote("\"#{ $fa-var-hands-asl-interpreting }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-deafness:before { content: unquote("\"#{ $fa-var-ear-deaf }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-hard-of-hearing:before { content: unquote("\"#{ $fa-var-ear-deaf }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-signing:before { content: unquote("\"#{ $fa-var-hands }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square:before { content: unquote("\"#{ $fa-var-square-viadeo }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost:before { content: unquote("\"#{ $fa-var-snapchat }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square:before { content: unquote("\"#{ $fa-var-square-snapchat }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official:before { content: unquote("\"#{ $fa-var-google-plus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle:before { content: unquote("\"#{ $fa-var-google-plus }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-fa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-fa:before { content: unquote("\"#{ $fa-var-font-awesome }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o:before { content: unquote("\"#{ $fa-var-handshake }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o:before { content: unquote("\"#{ $fa-var-envelope-open }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-linode { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o:before { content: unquote("\"#{ $fa-var-address-book }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard:before { content: unquote("\"#{ $fa-var-address-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o:before { content: unquote("\"#{ $fa-var-address-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o:before { content: unquote("\"#{ $fa-var-address-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o:before { content: unquote("\"#{ $fa-var-circle-user }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o:before { content: unquote("\"#{ $fa-var-user }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-id-badge { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license:before { content: unquote("\"#{ $fa-var-id-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o:before { content: unquote("\"#{ $fa-var-id-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o:before { content: unquote("\"#{ $fa-var-id-card }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-4:before { content: unquote("\"#{ $fa-var-temperature-full }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer:before { content: unquote("\"#{ $fa-var-temperature-full }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-3:before { content: unquote("\"#{ $fa-var-temperature-three-quarters }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-2:before { content: unquote("\"#{ $fa-var-temperature-half }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-1:before { content: unquote("\"#{ $fa-var-temperature-quarter }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-0:before { content: unquote("\"#{ $fa-var-temperature-empty }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bathtub:before { content: unquote("\"#{ $fa-var-bath }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-s15:before { content: unquote("\"#{ $fa-var-bath }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-window-restore { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o:before { content: unquote("\"#{ $fa-var-rectangle-xmark }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-bandcamp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast:before { content: unquote("\"#{ $fa-var-sellcast }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; +} +.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o:before { content: unquote("\"#{ $fa-var-snowflake }\""); } + +.#{$fa-css-prefix}.#{$fa-css-prefix}-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + +.#{$fa-css-prefix}.#{$fa-css-prefix}-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; +} + diff --git a/_sass/font-awesome/_sizing.scss b/_sass/font-awesome/_sizing.scss new file mode 100644 index 0000000..e171e7d --- /dev/null +++ b/_sass/font-awesome/_sizing.scss @@ -0,0 +1,16 @@ +// sizing icons +// ------------------------- + +// literal magnification scale +@for $i from 1 through 10 { + .#{$fa-css-prefix}-#{$i}x { + font-size: $i * 1em; + } +} + +// step-based scale (with alignment) +@each $size, $value in $fa-sizes { + .#{$fa-css-prefix}-#{$size} { + @include fa-size($value); + } +} diff --git a/_sass/font-awesome/_stacked.scss b/_sass/font-awesome/_stacked.scss new file mode 100644 index 0000000..d9a9d4e --- /dev/null +++ b/_sass/font-awesome/_stacked.scss @@ -0,0 +1,32 @@ +// stacking icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: $fa-stack-vertical-align; + width: $fa-stack-width; +} + +.#{$fa-css-prefix}-stack-1x, +.#{$fa-css-prefix}-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index}); +} + +.#{$fa-css-prefix}-stack-1x { + line-height: inherit; +} + +.#{$fa-css-prefix}-stack-2x { + font-size: 2em; +} + +.#{$fa-css-prefix}-inverse { + color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse}); +} diff --git a/_sass/font-awesome/_variables.scss b/_sass/font-awesome/_variables.scss new file mode 100644 index 0000000..6dbfe51 --- /dev/null +++ b/_sass/font-awesome/_variables.scss @@ -0,0 +1,4971 @@ +// variables +// -------------------------- + +$fa-css-prefix : fa !default; +$fa-style : 900 !default; +$fa-style-family : "Font Awesome 6 Free" !default; + +$fa-display : inline-block !default; + +$fa-fw-width : fa-divide(20em, 16) !default; +$fa-inverse : #fff !default; + +$fa-border-color : #eee !default; +$fa-border-padding : .2em .25em .15em !default; +$fa-border-radius : .1em !default; +$fa-border-style : solid !default; +$fa-border-width : .08em !default; + +$fa-size-scale-2xs : 10 !default; +$fa-size-scale-xs : 12 !default; +$fa-size-scale-sm : 14 !default; +$fa-size-scale-base : 16 !default; +$fa-size-scale-lg : 20 !default; +$fa-size-scale-xl : 24 !default; +$fa-size-scale-2xl : 32 !default; + +$fa-sizes: ( + "2xs" : $fa-size-scale-2xs, + "xs" : $fa-size-scale-xs, + "sm" : $fa-size-scale-sm, + "lg" : $fa-size-scale-lg, + "xl" : $fa-size-scale-xl, + "2xl" : $fa-size-scale-2xl +) !default; + +$fa-li-width : 2em !default; +$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default; + +$fa-pull-margin : .3em !default; + +$fa-primary-opacity : 1 !default; +$fa-secondary-opacity : .4 !default; + +$fa-stack-vertical-align: middle !default; +$fa-stack-width : ($fa-fw-width * 2) !default; +$fa-stack-z-index : auto !default; + +$fa-font-display : block !default; +$fa-font-path : "../webfonts" !default; + +$fa-var-0: \30; +$fa-var-1: \31; +$fa-var-2: \32; +$fa-var-3: \33; +$fa-var-4: \34; +$fa-var-5: \35; +$fa-var-6: \36; +$fa-var-7: \37; +$fa-var-8: \38; +$fa-var-9: \39; +$fa-var-fill-drip: \f576; +$fa-var-arrows-to-circle: \e4bd; +$fa-var-circle-chevron-right: \f138; +$fa-var-chevron-circle-right: \f138; +$fa-var-at: \40; +$fa-var-trash-can: \f2ed; +$fa-var-trash-alt: \f2ed; +$fa-var-text-height: \f034; +$fa-var-user-xmark: \f235; +$fa-var-user-times: \f235; +$fa-var-stethoscope: \f0f1; +$fa-var-message: \f27a; +$fa-var-comment-alt: \f27a; +$fa-var-info: \f129; +$fa-var-down-left-and-up-right-to-center: \f422; +$fa-var-compress-alt: \f422; +$fa-var-explosion: \e4e9; +$fa-var-file-lines: \f15c; +$fa-var-file-alt: \f15c; +$fa-var-file-text: \f15c; +$fa-var-wave-square: \f83e; +$fa-var-ring: \f70b; +$fa-var-building-un: \e4d9; +$fa-var-dice-three: \f527; +$fa-var-calendar-days: \f073; +$fa-var-calendar-alt: \f073; +$fa-var-anchor-circle-check: \e4aa; +$fa-var-building-circle-arrow-right: \e4d1; +$fa-var-volleyball: \f45f; +$fa-var-volleyball-ball: \f45f; +$fa-var-arrows-up-to-line: \e4c2; +$fa-var-sort-down: \f0dd; +$fa-var-sort-desc: \f0dd; +$fa-var-circle-minus: \f056; +$fa-var-minus-circle: \f056; +$fa-var-door-open: \f52b; +$fa-var-right-from-bracket: \f2f5; +$fa-var-sign-out-alt: \f2f5; +$fa-var-atom: \f5d2; +$fa-var-soap: \e06e; +$fa-var-icons: \f86d; +$fa-var-heart-music-camera-bolt: \f86d; +$fa-var-microphone-lines-slash: \f539; +$fa-var-microphone-alt-slash: \f539; +$fa-var-bridge-circle-check: \e4c9; +$fa-var-pump-medical: \e06a; +$fa-var-fingerprint: \f577; +$fa-var-hand-point-right: \f0a4; +$fa-var-magnifying-glass-location: \f689; +$fa-var-search-location: \f689; +$fa-var-forward-step: \f051; +$fa-var-step-forward: \f051; +$fa-var-face-smile-beam: \f5b8; +$fa-var-smile-beam: \f5b8; +$fa-var-flag-checkered: \f11e; +$fa-var-football: \f44e; +$fa-var-football-ball: \f44e; +$fa-var-school-circle-exclamation: \e56c; +$fa-var-crop: \f125; +$fa-var-angles-down: \f103; +$fa-var-angle-double-down: \f103; +$fa-var-users-rectangle: \e594; +$fa-var-people-roof: \e537; +$fa-var-people-line: \e534; +$fa-var-beer-mug-empty: \f0fc; +$fa-var-beer: \f0fc; +$fa-var-diagram-predecessor: \e477; +$fa-var-arrow-up-long: \f176; +$fa-var-long-arrow-up: \f176; +$fa-var-fire-flame-simple: \f46a; +$fa-var-burn: \f46a; +$fa-var-person: \f183; +$fa-var-male: \f183; +$fa-var-laptop: \f109; +$fa-var-file-csv: \f6dd; +$fa-var-menorah: \f676; +$fa-var-truck-plane: \e58f; +$fa-var-record-vinyl: \f8d9; +$fa-var-face-grin-stars: \f587; +$fa-var-grin-stars: \f587; +$fa-var-bong: \f55c; +$fa-var-spaghetti-monster-flying: \f67b; +$fa-var-pastafarianism: \f67b; +$fa-var-arrow-down-up-across-line: \e4af; +$fa-var-spoon: \f2e5; +$fa-var-utensil-spoon: \f2e5; +$fa-var-jar-wheat: \e517; +$fa-var-envelopes-bulk: \f674; +$fa-var-mail-bulk: \f674; +$fa-var-file-circle-exclamation: \e4eb; +$fa-var-circle-h: \f47e; +$fa-var-hospital-symbol: \f47e; +$fa-var-pager: \f815; +$fa-var-address-book: \f2b9; +$fa-var-contact-book: \f2b9; +$fa-var-strikethrough: \f0cc; +$fa-var-k: \4b; +$fa-var-landmark-flag: \e51c; +$fa-var-pencil: \f303; +$fa-var-pencil-alt: \f303; +$fa-var-backward: \f04a; +$fa-var-caret-right: \f0da; +$fa-var-comments: \f086; +$fa-var-paste: \f0ea; +$fa-var-file-clipboard: \f0ea; +$fa-var-code-pull-request: \e13c; +$fa-var-clipboard-list: \f46d; +$fa-var-truck-ramp-box: \f4de; +$fa-var-truck-loading: \f4de; +$fa-var-user-check: \f4fc; +$fa-var-vial-virus: \e597; +$fa-var-sheet-plastic: \e571; +$fa-var-blog: \f781; +$fa-var-user-ninja: \f504; +$fa-var-person-arrow-up-from-line: \e539; +$fa-var-scroll-torah: \f6a0; +$fa-var-torah: \f6a0; +$fa-var-broom-ball: \f458; +$fa-var-quidditch: \f458; +$fa-var-quidditch-broom-ball: \f458; +$fa-var-toggle-off: \f204; +$fa-var-box-archive: \f187; +$fa-var-archive: \f187; +$fa-var-person-drowning: \e545; +$fa-var-arrow-down-9-1: \f886; +$fa-var-sort-numeric-desc: \f886; +$fa-var-sort-numeric-down-alt: \f886; +$fa-var-face-grin-tongue-squint: \f58a; +$fa-var-grin-tongue-squint: \f58a; +$fa-var-spray-can: \f5bd; +$fa-var-truck-monster: \f63b; +$fa-var-w: \57; +$fa-var-earth-africa: \f57c; +$fa-var-globe-africa: \f57c; +$fa-var-rainbow: \f75b; +$fa-var-circle-notch: \f1ce; +$fa-var-tablet-screen-button: \f3fa; +$fa-var-tablet-alt: \f3fa; +$fa-var-paw: \f1b0; +$fa-var-cloud: \f0c2; +$fa-var-trowel-bricks: \e58a; +$fa-var-face-flushed: \f579; +$fa-var-flushed: \f579; +$fa-var-hospital-user: \f80d; +$fa-var-tent-arrow-left-right: \e57f; +$fa-var-gavel: \f0e3; +$fa-var-legal: \f0e3; +$fa-var-binoculars: \f1e5; +$fa-var-microphone-slash: \f131; +$fa-var-box-tissue: \e05b; +$fa-var-motorcycle: \f21c; +$fa-var-bell-concierge: \f562; +$fa-var-concierge-bell: \f562; +$fa-var-pen-ruler: \f5ae; +$fa-var-pencil-ruler: \f5ae; +$fa-var-people-arrows: \e068; +$fa-var-people-arrows-left-right: \e068; +$fa-var-mars-and-venus-burst: \e523; +$fa-var-square-caret-right: \f152; +$fa-var-caret-square-right: \f152; +$fa-var-scissors: \f0c4; +$fa-var-cut: \f0c4; +$fa-var-sun-plant-wilt: \e57a; +$fa-var-toilets-portable: \e584; +$fa-var-hockey-puck: \f453; +$fa-var-table: \f0ce; +$fa-var-magnifying-glass-arrow-right: \e521; +$fa-var-tachograph-digital: \f566; +$fa-var-digital-tachograph: \f566; +$fa-var-users-slash: \e073; +$fa-var-clover: \e139; +$fa-var-reply: \f3e5; +$fa-var-mail-reply: \f3e5; +$fa-var-star-and-crescent: \f699; +$fa-var-house-fire: \e50c; +$fa-var-square-minus: \f146; +$fa-var-minus-square: \f146; +$fa-var-helicopter: \f533; +$fa-var-compass: \f14e; +$fa-var-square-caret-down: \f150; +$fa-var-caret-square-down: \f150; +$fa-var-file-circle-question: \e4ef; +$fa-var-laptop-code: \f5fc; +$fa-var-swatchbook: \f5c3; +$fa-var-prescription-bottle: \f485; +$fa-var-bars: \f0c9; +$fa-var-navicon: \f0c9; +$fa-var-people-group: \e533; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-3: \f253; +$fa-var-heart-crack: \f7a9; +$fa-var-heart-broken: \f7a9; +$fa-var-square-up-right: \f360; +$fa-var-external-link-square-alt: \f360; +$fa-var-face-kiss-beam: \f597; +$fa-var-kiss-beam: \f597; +$fa-var-film: \f008; +$fa-var-ruler-horizontal: \f547; +$fa-var-people-robbery: \e536; +$fa-var-lightbulb: \f0eb; +$fa-var-caret-left: \f0d9; +$fa-var-circle-exclamation: \f06a; +$fa-var-exclamation-circle: \f06a; +$fa-var-school-circle-xmark: \e56d; +$fa-var-arrow-right-from-bracket: \f08b; +$fa-var-sign-out: \f08b; +$fa-var-circle-chevron-down: \f13a; +$fa-var-chevron-circle-down: \f13a; +$fa-var-unlock-keyhole: \f13e; +$fa-var-unlock-alt: \f13e; +$fa-var-cloud-showers-heavy: \f740; +$fa-var-headphones-simple: \f58f; +$fa-var-headphones-alt: \f58f; +$fa-var-sitemap: \f0e8; +$fa-var-circle-dollar-to-slot: \f4b9; +$fa-var-donate: \f4b9; +$fa-var-memory: \f538; +$fa-var-road-spikes: \e568; +$fa-var-fire-burner: \e4f1; +$fa-var-flag: \f024; +$fa-var-hanukiah: \f6e6; +$fa-var-feather: \f52d; +$fa-var-volume-low: \f027; +$fa-var-volume-down: \f027; +$fa-var-comment-slash: \f4b3; +$fa-var-cloud-sun-rain: \f743; +$fa-var-compress: \f066; +$fa-var-wheat-awn: \e2cd; +$fa-var-wheat-alt: \e2cd; +$fa-var-ankh: \f644; +$fa-var-hands-holding-child: \e4fa; +$fa-var-asterisk: \2a; +$fa-var-square-check: \f14a; +$fa-var-check-square: \f14a; +$fa-var-peseta-sign: \e221; +$fa-var-heading: \f1dc; +$fa-var-header: \f1dc; +$fa-var-ghost: \f6e2; +$fa-var-list: \f03a; +$fa-var-list-squares: \f03a; +$fa-var-square-phone-flip: \f87b; +$fa-var-phone-square-alt: \f87b; +$fa-var-cart-plus: \f217; +$fa-var-gamepad: \f11b; +$fa-var-circle-dot: \f192; +$fa-var-dot-circle: \f192; +$fa-var-face-dizzy: \f567; +$fa-var-dizzy: \f567; +$fa-var-egg: \f7fb; +$fa-var-house-medical-circle-xmark: \e513; +$fa-var-campground: \f6bb; +$fa-var-folder-plus: \f65e; +$fa-var-futbol: \f1e3; +$fa-var-futbol-ball: \f1e3; +$fa-var-soccer-ball: \f1e3; +$fa-var-paintbrush: \f1fc; +$fa-var-paint-brush: \f1fc; +$fa-var-lock: \f023; +$fa-var-gas-pump: \f52f; +$fa-var-hot-tub-person: \f593; +$fa-var-hot-tub: \f593; +$fa-var-map-location: \f59f; +$fa-var-map-marked: \f59f; +$fa-var-house-flood-water: \e50e; +$fa-var-tree: \f1bb; +$fa-var-bridge-lock: \e4cc; +$fa-var-sack-dollar: \f81d; +$fa-var-pen-to-square: \f044; +$fa-var-edit: \f044; +$fa-var-car-side: \f5e4; +$fa-var-share-nodes: \f1e0; +$fa-var-share-alt: \f1e0; +$fa-var-heart-circle-minus: \e4ff; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-2: \f252; +$fa-var-microscope: \f610; +$fa-var-sink: \e06d; +$fa-var-bag-shopping: \f290; +$fa-var-shopping-bag: \f290; +$fa-var-arrow-down-z-a: \f881; +$fa-var-sort-alpha-desc: \f881; +$fa-var-sort-alpha-down-alt: \f881; +$fa-var-mitten: \f7b5; +$fa-var-person-rays: \e54d; +$fa-var-users: \f0c0; +$fa-var-eye-slash: \f070; +$fa-var-flask-vial: \e4f3; +$fa-var-hand: \f256; +$fa-var-hand-paper: \f256; +$fa-var-om: \f679; +$fa-var-worm: \e599; +$fa-var-house-circle-xmark: \e50b; +$fa-var-plug: \f1e6; +$fa-var-chevron-up: \f077; +$fa-var-hand-spock: \f259; +$fa-var-stopwatch: \f2f2; +$fa-var-face-kiss: \f596; +$fa-var-kiss: \f596; +$fa-var-bridge-circle-xmark: \e4cb; +$fa-var-face-grin-tongue: \f589; +$fa-var-grin-tongue: \f589; +$fa-var-chess-bishop: \f43a; +$fa-var-face-grin-wink: \f58c; +$fa-var-grin-wink: \f58c; +$fa-var-ear-deaf: \f2a4; +$fa-var-deaf: \f2a4; +$fa-var-deafness: \f2a4; +$fa-var-hard-of-hearing: \f2a4; +$fa-var-road-circle-check: \e564; +$fa-var-dice-five: \f523; +$fa-var-square-rss: \f143; +$fa-var-rss-square: \f143; +$fa-var-land-mine-on: \e51b; +$fa-var-i-cursor: \f246; +$fa-var-stamp: \f5bf; +$fa-var-stairs: \e289; +$fa-var-i: \49; +$fa-var-hryvnia-sign: \f6f2; +$fa-var-hryvnia: \f6f2; +$fa-var-pills: \f484; +$fa-var-face-grin-wide: \f581; +$fa-var-grin-alt: \f581; +$fa-var-tooth: \f5c9; +$fa-var-v: \56; +$fa-var-bangladeshi-taka-sign: \e2e6; +$fa-var-bicycle: \f206; +$fa-var-staff-snake: \e579; +$fa-var-rod-asclepius: \e579; +$fa-var-rod-snake: \e579; +$fa-var-staff-aesculapius: \e579; +$fa-var-head-side-cough-slash: \e062; +$fa-var-truck-medical: \f0f9; +$fa-var-ambulance: \f0f9; +$fa-var-wheat-awn-circle-exclamation: \e598; +$fa-var-snowman: \f7d0; +$fa-var-mortar-pestle: \f5a7; +$fa-var-road-barrier: \e562; +$fa-var-school: \f549; +$fa-var-igloo: \f7ae; +$fa-var-joint: \f595; +$fa-var-angle-right: \f105; +$fa-var-horse: \f6f0; +$fa-var-q: \51; +$fa-var-g: \47; +$fa-var-notes-medical: \f481; +$fa-var-temperature-half: \f2c9; +$fa-var-temperature-2: \f2c9; +$fa-var-thermometer-2: \f2c9; +$fa-var-thermometer-half: \f2c9; +$fa-var-dong-sign: \e169; +$fa-var-capsules: \f46b; +$fa-var-poo-storm: \f75a; +$fa-var-poo-bolt: \f75a; +$fa-var-face-frown-open: \f57a; +$fa-var-frown-open: \f57a; +$fa-var-hand-point-up: \f0a6; +$fa-var-money-bill: \f0d6; +$fa-var-bookmark: \f02e; +$fa-var-align-justify: \f039; +$fa-var-umbrella-beach: \f5ca; +$fa-var-helmet-un: \e503; +$fa-var-bullseye: \f140; +$fa-var-bacon: \f7e5; +$fa-var-hand-point-down: \f0a7; +$fa-var-arrow-up-from-bracket: \e09a; +$fa-var-folder: \f07b; +$fa-var-folder-blank: \f07b; +$fa-var-file-waveform: \f478; +$fa-var-file-medical-alt: \f478; +$fa-var-radiation: \f7b9; +$fa-var-chart-simple: \e473; +$fa-var-mars-stroke: \f229; +$fa-var-vial: \f492; +$fa-var-gauge: \f624; +$fa-var-dashboard: \f624; +$fa-var-gauge-med: \f624; +$fa-var-tachometer-alt-average: \f624; +$fa-var-wand-magic-sparkles: \e2ca; +$fa-var-magic-wand-sparkles: \e2ca; +$fa-var-e: \45; +$fa-var-pen-clip: \f305; +$fa-var-pen-alt: \f305; +$fa-var-bridge-circle-exclamation: \e4ca; +$fa-var-user: \f007; +$fa-var-school-circle-check: \e56b; +$fa-var-dumpster: \f793; +$fa-var-van-shuttle: \f5b6; +$fa-var-shuttle-van: \f5b6; +$fa-var-building-user: \e4da; +$fa-var-square-caret-left: \f191; +$fa-var-caret-square-left: \f191; +$fa-var-highlighter: \f591; +$fa-var-key: \f084; +$fa-var-bullhorn: \f0a1; +$fa-var-globe: \f0ac; +$fa-var-synagogue: \f69b; +$fa-var-person-half-dress: \e548; +$fa-var-road-bridge: \e563; +$fa-var-location-arrow: \f124; +$fa-var-c: \43; +$fa-var-tablet-button: \f10a; +$fa-var-building-lock: \e4d6; +$fa-var-pizza-slice: \f818; +$fa-var-money-bill-wave: \f53a; +$fa-var-chart-area: \f1fe; +$fa-var-area-chart: \f1fe; +$fa-var-house-flag: \e50d; +$fa-var-person-circle-minus: \e540; +$fa-var-ban: \f05e; +$fa-var-cancel: \f05e; +$fa-var-camera-rotate: \e0d8; +$fa-var-spray-can-sparkles: \f5d0; +$fa-var-air-freshener: \f5d0; +$fa-var-star: \f005; +$fa-var-repeat: \f363; +$fa-var-cross: \f654; +$fa-var-box: \f466; +$fa-var-venus-mars: \f228; +$fa-var-arrow-pointer: \f245; +$fa-var-mouse-pointer: \f245; +$fa-var-maximize: \f31e; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-charging-station: \f5e7; +$fa-var-shapes: \f61f; +$fa-var-triangle-circle-square: \f61f; +$fa-var-shuffle: \f074; +$fa-var-random: \f074; +$fa-var-person-running: \f70c; +$fa-var-running: \f70c; +$fa-var-mobile-retro: \e527; +$fa-var-grip-lines-vertical: \f7a5; +$fa-var-spider: \f717; +$fa-var-hands-bound: \e4f9; +$fa-var-file-invoice-dollar: \f571; +$fa-var-plane-circle-exclamation: \e556; +$fa-var-x-ray: \f497; +$fa-var-spell-check: \f891; +$fa-var-slash: \f715; +$fa-var-computer-mouse: \f8cc; +$fa-var-mouse: \f8cc; +$fa-var-arrow-right-to-bracket: \f090; +$fa-var-sign-in: \f090; +$fa-var-shop-slash: \e070; +$fa-var-store-alt-slash: \e070; +$fa-var-server: \f233; +$fa-var-virus-covid-slash: \e4a9; +$fa-var-shop-lock: \e4a5; +$fa-var-hourglass-start: \f251; +$fa-var-hourglass-1: \f251; +$fa-var-blender-phone: \f6b6; +$fa-var-building-wheat: \e4db; +$fa-var-person-breastfeeding: \e53a; +$fa-var-right-to-bracket: \f2f6; +$fa-var-sign-in-alt: \f2f6; +$fa-var-venus: \f221; +$fa-var-passport: \f5ab; +$fa-var-heart-pulse: \f21e; +$fa-var-heartbeat: \f21e; +$fa-var-people-carry-box: \f4ce; +$fa-var-people-carry: \f4ce; +$fa-var-temperature-high: \f769; +$fa-var-microchip: \f2db; +$fa-var-crown: \f521; +$fa-var-weight-hanging: \f5cd; +$fa-var-xmarks-lines: \e59a; +$fa-var-file-prescription: \f572; +$fa-var-weight-scale: \f496; +$fa-var-weight: \f496; +$fa-var-user-group: \f500; +$fa-var-user-friends: \f500; +$fa-var-arrow-up-a-z: \f15e; +$fa-var-sort-alpha-up: \f15e; +$fa-var-chess-knight: \f441; +$fa-var-face-laugh-squint: \f59b; +$fa-var-laugh-squint: \f59b; +$fa-var-wheelchair: \f193; +$fa-var-circle-arrow-up: \f0aa; +$fa-var-arrow-circle-up: \f0aa; +$fa-var-toggle-on: \f205; +$fa-var-person-walking: \f554; +$fa-var-walking: \f554; +$fa-var-l: \4c; +$fa-var-fire: \f06d; +$fa-var-bed-pulse: \f487; +$fa-var-procedures: \f487; +$fa-var-shuttle-space: \f197; +$fa-var-space-shuttle: \f197; +$fa-var-face-laugh: \f599; +$fa-var-laugh: \f599; +$fa-var-folder-open: \f07c; +$fa-var-heart-circle-plus: \e500; +$fa-var-code-fork: \e13b; +$fa-var-city: \f64f; +$fa-var-microphone-lines: \f3c9; +$fa-var-microphone-alt: \f3c9; +$fa-var-pepper-hot: \f816; +$fa-var-unlock: \f09c; +$fa-var-colon-sign: \e140; +$fa-var-headset: \f590; +$fa-var-store-slash: \e071; +$fa-var-road-circle-xmark: \e566; +$fa-var-user-minus: \f503; +$fa-var-mars-stroke-up: \f22a; +$fa-var-mars-stroke-v: \f22a; +$fa-var-champagne-glasses: \f79f; +$fa-var-glass-cheers: \f79f; +$fa-var-clipboard: \f328; +$fa-var-house-circle-exclamation: \e50a; +$fa-var-file-arrow-up: \f574; +$fa-var-file-upload: \f574; +$fa-var-wifi: \f1eb; +$fa-var-wifi-3: \f1eb; +$fa-var-wifi-strong: \f1eb; +$fa-var-bath: \f2cd; +$fa-var-bathtub: \f2cd; +$fa-var-underline: \f0cd; +$fa-var-user-pen: \f4ff; +$fa-var-user-edit: \f4ff; +$fa-var-signature: \f5b7; +$fa-var-stroopwafel: \f551; +$fa-var-bold: \f032; +$fa-var-anchor-lock: \e4ad; +$fa-var-building-ngo: \e4d7; +$fa-var-manat-sign: \e1d5; +$fa-var-not-equal: \f53e; +$fa-var-border-top-left: \f853; +$fa-var-border-style: \f853; +$fa-var-map-location-dot: \f5a0; +$fa-var-map-marked-alt: \f5a0; +$fa-var-jedi: \f669; +$fa-var-square-poll-vertical: \f681; +$fa-var-poll: \f681; +$fa-var-mug-hot: \f7b6; +$fa-var-car-battery: \f5df; +$fa-var-battery-car: \f5df; +$fa-var-gift: \f06b; +$fa-var-dice-two: \f528; +$fa-var-chess-queen: \f445; +$fa-var-glasses: \f530; +$fa-var-chess-board: \f43c; +$fa-var-building-circle-check: \e4d2; +$fa-var-person-chalkboard: \e53d; +$fa-var-mars-stroke-right: \f22b; +$fa-var-mars-stroke-h: \f22b; +$fa-var-hand-back-fist: \f255; +$fa-var-hand-rock: \f255; +$fa-var-square-caret-up: \f151; +$fa-var-caret-square-up: \f151; +$fa-var-cloud-showers-water: \e4e4; +$fa-var-chart-bar: \f080; +$fa-var-bar-chart: \f080; +$fa-var-hands-bubbles: \e05e; +$fa-var-hands-wash: \e05e; +$fa-var-less-than-equal: \f537; +$fa-var-train: \f238; +$fa-var-eye-low-vision: \f2a8; +$fa-var-low-vision: \f2a8; +$fa-var-crow: \f520; +$fa-var-sailboat: \e445; +$fa-var-window-restore: \f2d2; +$fa-var-square-plus: \f0fe; +$fa-var-plus-square: \f0fe; +$fa-var-torii-gate: \f6a1; +$fa-var-frog: \f52e; +$fa-var-bucket: \e4cf; +$fa-var-image: \f03e; +$fa-var-microphone: \f130; +$fa-var-cow: \f6c8; +$fa-var-caret-up: \f0d8; +$fa-var-screwdriver: \f54a; +$fa-var-folder-closed: \e185; +$fa-var-house-tsunami: \e515; +$fa-var-square-nfi: \e576; +$fa-var-arrow-up-from-ground-water: \e4b5; +$fa-var-martini-glass: \f57b; +$fa-var-glass-martini-alt: \f57b; +$fa-var-rotate-left: \f2ea; +$fa-var-rotate-back: \f2ea; +$fa-var-rotate-backward: \f2ea; +$fa-var-undo-alt: \f2ea; +$fa-var-table-columns: \f0db; +$fa-var-columns: \f0db; +$fa-var-lemon: \f094; +$fa-var-head-side-mask: \e063; +$fa-var-handshake: \f2b5; +$fa-var-gem: \f3a5; +$fa-var-dolly: \f472; +$fa-var-dolly-box: \f472; +$fa-var-smoking: \f48d; +$fa-var-minimize: \f78c; +$fa-var-compress-arrows-alt: \f78c; +$fa-var-monument: \f5a6; +$fa-var-snowplow: \f7d2; +$fa-var-angles-right: \f101; +$fa-var-angle-double-right: \f101; +$fa-var-cannabis: \f55f; +$fa-var-circle-play: \f144; +$fa-var-play-circle: \f144; +$fa-var-tablets: \f490; +$fa-var-ethernet: \f796; +$fa-var-euro-sign: \f153; +$fa-var-eur: \f153; +$fa-var-euro: \f153; +$fa-var-chair: \f6c0; +$fa-var-circle-check: \f058; +$fa-var-check-circle: \f058; +$fa-var-circle-stop: \f28d; +$fa-var-stop-circle: \f28d; +$fa-var-compass-drafting: \f568; +$fa-var-drafting-compass: \f568; +$fa-var-plate-wheat: \e55a; +$fa-var-icicles: \f7ad; +$fa-var-person-shelter: \e54f; +$fa-var-neuter: \f22c; +$fa-var-id-badge: \f2c1; +$fa-var-marker: \f5a1; +$fa-var-face-laugh-beam: \f59a; +$fa-var-laugh-beam: \f59a; +$fa-var-helicopter-symbol: \e502; +$fa-var-universal-access: \f29a; +$fa-var-circle-chevron-up: \f139; +$fa-var-chevron-circle-up: \f139; +$fa-var-lari-sign: \e1c8; +$fa-var-volcano: \f770; +$fa-var-person-walking-dashed-line-arrow-right: \e553; +$fa-var-sterling-sign: \f154; +$fa-var-gbp: \f154; +$fa-var-pound-sign: \f154; +$fa-var-viruses: \e076; +$fa-var-square-person-confined: \e577; +$fa-var-user-tie: \f508; +$fa-var-arrow-down-long: \f175; +$fa-var-long-arrow-down: \f175; +$fa-var-tent-arrow-down-to-line: \e57e; +$fa-var-certificate: \f0a3; +$fa-var-reply-all: \f122; +$fa-var-mail-reply-all: \f122; +$fa-var-suitcase: \f0f2; +$fa-var-person-skating: \f7c5; +$fa-var-skating: \f7c5; +$fa-var-filter-circle-dollar: \f662; +$fa-var-funnel-dollar: \f662; +$fa-var-camera-retro: \f083; +$fa-var-circle-arrow-down: \f0ab; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-file-import: \f56f; +$fa-var-arrow-right-to-file: \f56f; +$fa-var-square-arrow-up-right: \f14c; +$fa-var-external-link-square: \f14c; +$fa-var-box-open: \f49e; +$fa-var-scroll: \f70e; +$fa-var-spa: \f5bb; +$fa-var-location-pin-lock: \e51f; +$fa-var-pause: \f04c; +$fa-var-hill-avalanche: \e507; +$fa-var-temperature-empty: \f2cb; +$fa-var-temperature-0: \f2cb; +$fa-var-thermometer-0: \f2cb; +$fa-var-thermometer-empty: \f2cb; +$fa-var-bomb: \f1e2; +$fa-var-registered: \f25d; +$fa-var-address-card: \f2bb; +$fa-var-contact-card: \f2bb; +$fa-var-vcard: \f2bb; +$fa-var-scale-unbalanced-flip: \f516; +$fa-var-balance-scale-right: \f516; +$fa-var-subscript: \f12c; +$fa-var-diamond-turn-right: \f5eb; +$fa-var-directions: \f5eb; +$fa-var-burst: \e4dc; +$fa-var-house-laptop: \e066; +$fa-var-laptop-house: \e066; +$fa-var-face-tired: \f5c8; +$fa-var-tired: \f5c8; +$fa-var-money-bills: \e1f3; +$fa-var-smog: \f75f; +$fa-var-crutch: \f7f7; +$fa-var-cloud-arrow-up: \f0ee; +$fa-var-cloud-upload: \f0ee; +$fa-var-cloud-upload-alt: \f0ee; +$fa-var-palette: \f53f; +$fa-var-arrows-turn-right: \e4c0; +$fa-var-vest: \e085; +$fa-var-ferry: \e4ea; +$fa-var-arrows-down-to-people: \e4b9; +$fa-var-seedling: \f4d8; +$fa-var-sprout: \f4d8; +$fa-var-left-right: \f337; +$fa-var-arrows-alt-h: \f337; +$fa-var-boxes-packing: \e4c7; +$fa-var-circle-arrow-left: \f0a8; +$fa-var-arrow-circle-left: \f0a8; +$fa-var-group-arrows-rotate: \e4f6; +$fa-var-bowl-food: \e4c6; +$fa-var-candy-cane: \f786; +$fa-var-arrow-down-wide-short: \f160; +$fa-var-sort-amount-asc: \f160; +$fa-var-sort-amount-down: \f160; +$fa-var-cloud-bolt: \f76c; +$fa-var-thunderstorm: \f76c; +$fa-var-text-slash: \f87d; +$fa-var-remove-format: \f87d; +$fa-var-face-smile-wink: \f4da; +$fa-var-smile-wink: \f4da; +$fa-var-file-word: \f1c2; +$fa-var-file-powerpoint: \f1c4; +$fa-var-arrows-left-right: \f07e; +$fa-var-arrows-h: \f07e; +$fa-var-house-lock: \e510; +$fa-var-cloud-arrow-down: \f0ed; +$fa-var-cloud-download: \f0ed; +$fa-var-cloud-download-alt: \f0ed; +$fa-var-children: \e4e1; +$fa-var-chalkboard: \f51b; +$fa-var-blackboard: \f51b; +$fa-var-user-large-slash: \f4fa; +$fa-var-user-alt-slash: \f4fa; +$fa-var-envelope-open: \f2b6; +$fa-var-handshake-simple-slash: \e05f; +$fa-var-handshake-alt-slash: \e05f; +$fa-var-mattress-pillow: \e525; +$fa-var-guarani-sign: \e19a; +$fa-var-arrows-rotate: \f021; +$fa-var-refresh: \f021; +$fa-var-sync: \f021; +$fa-var-fire-extinguisher: \f134; +$fa-var-cruzeiro-sign: \e152; +$fa-var-greater-than-equal: \f532; +$fa-var-shield-halved: \f3ed; +$fa-var-shield-alt: \f3ed; +$fa-var-book-atlas: \f558; +$fa-var-atlas: \f558; +$fa-var-virus: \e074; +$fa-var-envelope-circle-check: \e4e8; +$fa-var-layer-group: \f5fd; +$fa-var-arrows-to-dot: \e4be; +$fa-var-archway: \f557; +$fa-var-heart-circle-check: \e4fd; +$fa-var-house-chimney-crack: \f6f1; +$fa-var-house-damage: \f6f1; +$fa-var-file-zipper: \f1c6; +$fa-var-file-archive: \f1c6; +$fa-var-square: \f0c8; +$fa-var-martini-glass-empty: \f000; +$fa-var-glass-martini: \f000; +$fa-var-couch: \f4b8; +$fa-var-cedi-sign: \e0df; +$fa-var-italic: \f033; +$fa-var-church: \f51d; +$fa-var-comments-dollar: \f653; +$fa-var-democrat: \f747; +$fa-var-z: \5a; +$fa-var-person-skiing: \f7c9; +$fa-var-skiing: \f7c9; +$fa-var-road-lock: \e567; +$fa-var-a: \41; +$fa-var-temperature-arrow-down: \e03f; +$fa-var-temperature-down: \e03f; +$fa-var-feather-pointed: \f56b; +$fa-var-feather-alt: \f56b; +$fa-var-p: \50; +$fa-var-snowflake: \f2dc; +$fa-var-newspaper: \f1ea; +$fa-var-rectangle-ad: \f641; +$fa-var-ad: \f641; +$fa-var-circle-arrow-right: \f0a9; +$fa-var-arrow-circle-right: \f0a9; +$fa-var-filter-circle-xmark: \e17b; +$fa-var-locust: \e520; +$fa-var-sort: \f0dc; +$fa-var-unsorted: \f0dc; +$fa-var-list-ol: \f0cb; +$fa-var-list-1-2: \f0cb; +$fa-var-list-numeric: \f0cb; +$fa-var-person-dress-burst: \e544; +$fa-var-money-check-dollar: \f53d; +$fa-var-money-check-alt: \f53d; +$fa-var-vector-square: \f5cb; +$fa-var-bread-slice: \f7ec; +$fa-var-language: \f1ab; +$fa-var-face-kiss-wink-heart: \f598; +$fa-var-kiss-wink-heart: \f598; +$fa-var-filter: \f0b0; +$fa-var-question: \3f; +$fa-var-file-signature: \f573; +$fa-var-up-down-left-right: \f0b2; +$fa-var-arrows-alt: \f0b2; +$fa-var-house-chimney-user: \e065; +$fa-var-hand-holding-heart: \f4be; +$fa-var-puzzle-piece: \f12e; +$fa-var-money-check: \f53c; +$fa-var-star-half-stroke: \f5c0; +$fa-var-star-half-alt: \f5c0; +$fa-var-code: \f121; +$fa-var-whiskey-glass: \f7a0; +$fa-var-glass-whiskey: \f7a0; +$fa-var-building-circle-exclamation: \e4d3; +$fa-var-magnifying-glass-chart: \e522; +$fa-var-arrow-up-right-from-square: \f08e; +$fa-var-external-link: \f08e; +$fa-var-cubes-stacked: \e4e6; +$fa-var-won-sign: \f159; +$fa-var-krw: \f159; +$fa-var-won: \f159; +$fa-var-virus-covid: \e4a8; +$fa-var-austral-sign: \e0a9; +$fa-var-f: \46; +$fa-var-leaf: \f06c; +$fa-var-road: \f018; +$fa-var-taxi: \f1ba; +$fa-var-cab: \f1ba; +$fa-var-person-circle-plus: \e541; +$fa-var-chart-pie: \f200; +$fa-var-pie-chart: \f200; +$fa-var-bolt-lightning: \e0b7; +$fa-var-sack-xmark: \e56a; +$fa-var-file-excel: \f1c3; +$fa-var-file-contract: \f56c; +$fa-var-fish-fins: \e4f2; +$fa-var-building-flag: \e4d5; +$fa-var-face-grin-beam: \f582; +$fa-var-grin-beam: \f582; +$fa-var-object-ungroup: \f248; +$fa-var-poop: \f619; +$fa-var-location-pin: \f041; +$fa-var-map-marker: \f041; +$fa-var-kaaba: \f66b; +$fa-var-toilet-paper: \f71e; +$fa-var-helmet-safety: \f807; +$fa-var-hard-hat: \f807; +$fa-var-hat-hard: \f807; +$fa-var-eject: \f052; +$fa-var-circle-right: \f35a; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-plane-circle-check: \e555; +$fa-var-face-rolling-eyes: \f5a5; +$fa-var-meh-rolling-eyes: \f5a5; +$fa-var-object-group: \f247; +$fa-var-chart-line: \f201; +$fa-var-line-chart: \f201; +$fa-var-mask-ventilator: \e524; +$fa-var-arrow-right: \f061; +$fa-var-signs-post: \f277; +$fa-var-map-signs: \f277; +$fa-var-cash-register: \f788; +$fa-var-person-circle-question: \e542; +$fa-var-h: \48; +$fa-var-tarp: \e57b; +$fa-var-screwdriver-wrench: \f7d9; +$fa-var-tools: \f7d9; +$fa-var-arrows-to-eye: \e4bf; +$fa-var-plug-circle-bolt: \e55b; +$fa-var-heart: \f004; +$fa-var-mars-and-venus: \f224; +$fa-var-house-user: \e1b0; +$fa-var-home-user: \e1b0; +$fa-var-dumpster-fire: \f794; +$fa-var-house-crack: \e3b1; +$fa-var-martini-glass-citrus: \f561; +$fa-var-cocktail: \f561; +$fa-var-face-surprise: \f5c2; +$fa-var-surprise: \f5c2; +$fa-var-bottle-water: \e4c5; +$fa-var-circle-pause: \f28b; +$fa-var-pause-circle: \f28b; +$fa-var-toilet-paper-slash: \e072; +$fa-var-apple-whole: \f5d1; +$fa-var-apple-alt: \f5d1; +$fa-var-kitchen-set: \e51a; +$fa-var-r: \52; +$fa-var-temperature-quarter: \f2ca; +$fa-var-temperature-1: \f2ca; +$fa-var-thermometer-1: \f2ca; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-cube: \f1b2; +$fa-var-bitcoin-sign: \e0b4; +$fa-var-shield-dog: \e573; +$fa-var-solar-panel: \f5ba; +$fa-var-lock-open: \f3c1; +$fa-var-elevator: \e16d; +$fa-var-money-bill-transfer: \e528; +$fa-var-money-bill-trend-up: \e529; +$fa-var-house-flood-water-circle-arrow-right: \e50f; +$fa-var-square-poll-horizontal: \f682; +$fa-var-poll-h: \f682; +$fa-var-circle: \f111; +$fa-var-backward-fast: \f049; +$fa-var-fast-backward: \f049; +$fa-var-recycle: \f1b8; +$fa-var-user-astronaut: \f4fb; +$fa-var-plane-slash: \e069; +$fa-var-trademark: \f25c; +$fa-var-basketball: \f434; +$fa-var-basketball-ball: \f434; +$fa-var-satellite-dish: \f7c0; +$fa-var-circle-up: \f35b; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-mobile-screen-button: \f3cd; +$fa-var-mobile-alt: \f3cd; +$fa-var-volume-high: \f028; +$fa-var-volume-up: \f028; +$fa-var-users-rays: \e593; +$fa-var-wallet: \f555; +$fa-var-clipboard-check: \f46c; +$fa-var-file-audio: \f1c7; +$fa-var-burger: \f805; +$fa-var-hamburger: \f805; +$fa-var-wrench: \f0ad; +$fa-var-bugs: \e4d0; +$fa-var-rupee-sign: \f156; +$fa-var-rupee: \f156; +$fa-var-file-image: \f1c5; +$fa-var-circle-question: \f059; +$fa-var-question-circle: \f059; +$fa-var-plane-departure: \f5b0; +$fa-var-handshake-slash: \e060; +$fa-var-book-bookmark: \e0bb; +$fa-var-code-branch: \f126; +$fa-var-hat-cowboy: \f8c0; +$fa-var-bridge: \e4c8; +$fa-var-phone-flip: \f879; +$fa-var-phone-alt: \f879; +$fa-var-truck-front: \e2b7; +$fa-var-cat: \f6be; +$fa-var-anchor-circle-exclamation: \e4ab; +$fa-var-truck-field: \e58d; +$fa-var-route: \f4d7; +$fa-var-clipboard-question: \e4e3; +$fa-var-panorama: \e209; +$fa-var-comment-medical: \f7f5; +$fa-var-teeth-open: \f62f; +$fa-var-file-circle-minus: \e4ed; +$fa-var-tags: \f02c; +$fa-var-wine-glass: \f4e3; +$fa-var-forward-fast: \f050; +$fa-var-fast-forward: \f050; +$fa-var-face-meh-blank: \f5a4; +$fa-var-meh-blank: \f5a4; +$fa-var-square-parking: \f540; +$fa-var-parking: \f540; +$fa-var-house-signal: \e012; +$fa-var-bars-progress: \f828; +$fa-var-tasks-alt: \f828; +$fa-var-faucet-drip: \e006; +$fa-var-cart-flatbed: \f474; +$fa-var-dolly-flatbed: \f474; +$fa-var-ban-smoking: \f54d; +$fa-var-smoking-ban: \f54d; +$fa-var-terminal: \f120; +$fa-var-mobile-button: \f10b; +$fa-var-house-medical-flag: \e514; +$fa-var-basket-shopping: \f291; +$fa-var-shopping-basket: \f291; +$fa-var-tape: \f4db; +$fa-var-bus-simple: \f55e; +$fa-var-bus-alt: \f55e; +$fa-var-eye: \f06e; +$fa-var-face-sad-cry: \f5b3; +$fa-var-sad-cry: \f5b3; +$fa-var-audio-description: \f29e; +$fa-var-person-military-to-person: \e54c; +$fa-var-file-shield: \e4f0; +$fa-var-user-slash: \f506; +$fa-var-pen: \f304; +$fa-var-tower-observation: \e586; +$fa-var-file-code: \f1c9; +$fa-var-signal: \f012; +$fa-var-signal-5: \f012; +$fa-var-signal-perfect: \f012; +$fa-var-bus: \f207; +$fa-var-heart-circle-xmark: \e501; +$fa-var-house-chimney: \e3af; +$fa-var-home-lg: \e3af; +$fa-var-window-maximize: \f2d0; +$fa-var-face-frown: \f119; +$fa-var-frown: \f119; +$fa-var-prescription: \f5b1; +$fa-var-shop: \f54f; +$fa-var-store-alt: \f54f; +$fa-var-floppy-disk: \f0c7; +$fa-var-save: \f0c7; +$fa-var-vihara: \f6a7; +$fa-var-scale-unbalanced: \f515; +$fa-var-balance-scale-left: \f515; +$fa-var-sort-up: \f0de; +$fa-var-sort-asc: \f0de; +$fa-var-comment-dots: \f4ad; +$fa-var-commenting: \f4ad; +$fa-var-plant-wilt: \e5aa; +$fa-var-diamond: \f219; +$fa-var-face-grin-squint: \f585; +$fa-var-grin-squint: \f585; +$fa-var-hand-holding-dollar: \f4c0; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-bacterium: \e05a; +$fa-var-hand-pointer: \f25a; +$fa-var-drum-steelpan: \f56a; +$fa-var-hand-scissors: \f257; +$fa-var-hands-praying: \f684; +$fa-var-praying-hands: \f684; +$fa-var-arrow-rotate-right: \f01e; +$fa-var-arrow-right-rotate: \f01e; +$fa-var-arrow-rotate-forward: \f01e; +$fa-var-redo: \f01e; +$fa-var-biohazard: \f780; +$fa-var-location-crosshairs: \f601; +$fa-var-location: \f601; +$fa-var-mars-double: \f227; +$fa-var-child-dress: \e59c; +$fa-var-users-between-lines: \e591; +$fa-var-lungs-virus: \e067; +$fa-var-face-grin-tears: \f588; +$fa-var-grin-tears: \f588; +$fa-var-phone: \f095; +$fa-var-calendar-xmark: \f273; +$fa-var-calendar-times: \f273; +$fa-var-child-reaching: \e59d; +$fa-var-head-side-virus: \e064; +$fa-var-user-gear: \f4fe; +$fa-var-user-cog: \f4fe; +$fa-var-arrow-up-1-9: \f163; +$fa-var-sort-numeric-up: \f163; +$fa-var-door-closed: \f52a; +$fa-var-shield-virus: \e06c; +$fa-var-dice-six: \f526; +$fa-var-mosquito-net: \e52c; +$fa-var-bridge-water: \e4ce; +$fa-var-person-booth: \f756; +$fa-var-text-width: \f035; +$fa-var-hat-wizard: \f6e8; +$fa-var-pen-fancy: \f5ac; +$fa-var-person-digging: \f85e; +$fa-var-digging: \f85e; +$fa-var-trash: \f1f8; +$fa-var-gauge-simple: \f629; +$fa-var-gauge-simple-med: \f629; +$fa-var-tachometer-average: \f629; +$fa-var-book-medical: \f7e6; +$fa-var-poo: \f2fe; +$fa-var-quote-right: \f10e; +$fa-var-quote-right-alt: \f10e; +$fa-var-shirt: \f553; +$fa-var-t-shirt: \f553; +$fa-var-tshirt: \f553; +$fa-var-cubes: \f1b3; +$fa-var-divide: \f529; +$fa-var-tenge-sign: \f7d7; +$fa-var-tenge: \f7d7; +$fa-var-headphones: \f025; +$fa-var-hands-holding: \f4c2; +$fa-var-hands-clapping: \e1a8; +$fa-var-republican: \f75e; +$fa-var-arrow-left: \f060; +$fa-var-person-circle-xmark: \e543; +$fa-var-ruler: \f545; +$fa-var-align-left: \f036; +$fa-var-dice-d6: \f6d1; +$fa-var-restroom: \f7bd; +$fa-var-j: \4a; +$fa-var-users-viewfinder: \e595; +$fa-var-file-video: \f1c8; +$fa-var-up-right-from-square: \f35d; +$fa-var-external-link-alt: \f35d; +$fa-var-table-cells: \f00a; +$fa-var-th: \f00a; +$fa-var-file-pdf: \f1c1; +$fa-var-book-bible: \f647; +$fa-var-bible: \f647; +$fa-var-o: \4f; +$fa-var-suitcase-medical: \f0fa; +$fa-var-medkit: \f0fa; +$fa-var-user-secret: \f21b; +$fa-var-otter: \f700; +$fa-var-person-dress: \f182; +$fa-var-female: \f182; +$fa-var-comment-dollar: \f651; +$fa-var-business-time: \f64a; +$fa-var-briefcase-clock: \f64a; +$fa-var-table-cells-large: \f009; +$fa-var-th-large: \f009; +$fa-var-book-tanakh: \f827; +$fa-var-tanakh: \f827; +$fa-var-phone-volume: \f2a0; +$fa-var-volume-control-phone: \f2a0; +$fa-var-hat-cowboy-side: \f8c1; +$fa-var-clipboard-user: \f7f3; +$fa-var-child: \f1ae; +$fa-var-lira-sign: \f195; +$fa-var-satellite: \f7bf; +$fa-var-plane-lock: \e558; +$fa-var-tag: \f02b; +$fa-var-comment: \f075; +$fa-var-cake-candles: \f1fd; +$fa-var-birthday-cake: \f1fd; +$fa-var-cake: \f1fd; +$fa-var-envelope: \f0e0; +$fa-var-angles-up: \f102; +$fa-var-angle-double-up: \f102; +$fa-var-paperclip: \f0c6; +$fa-var-arrow-right-to-city: \e4b3; +$fa-var-ribbon: \f4d6; +$fa-var-lungs: \f604; +$fa-var-arrow-up-9-1: \f887; +$fa-var-sort-numeric-up-alt: \f887; +$fa-var-litecoin-sign: \e1d3; +$fa-var-border-none: \f850; +$fa-var-circle-nodes: \e4e2; +$fa-var-parachute-box: \f4cd; +$fa-var-indent: \f03c; +$fa-var-truck-field-un: \e58e; +$fa-var-hourglass: \f254; +$fa-var-hourglass-empty: \f254; +$fa-var-mountain: \f6fc; +$fa-var-user-doctor: \f0f0; +$fa-var-user-md: \f0f0; +$fa-var-circle-info: \f05a; +$fa-var-info-circle: \f05a; +$fa-var-cloud-meatball: \f73b; +$fa-var-camera: \f030; +$fa-var-camera-alt: \f030; +$fa-var-square-virus: \e578; +$fa-var-meteor: \f753; +$fa-var-car-on: \e4dd; +$fa-var-sleigh: \f7cc; +$fa-var-arrow-down-1-9: \f162; +$fa-var-sort-numeric-asc: \f162; +$fa-var-sort-numeric-down: \f162; +$fa-var-hand-holding-droplet: \f4c1; +$fa-var-hand-holding-water: \f4c1; +$fa-var-water: \f773; +$fa-var-calendar-check: \f274; +$fa-var-braille: \f2a1; +$fa-var-prescription-bottle-medical: \f486; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-landmark: \f66f; +$fa-var-truck: \f0d1; +$fa-var-crosshairs: \f05b; +$fa-var-person-cane: \e53c; +$fa-var-tent: \e57d; +$fa-var-vest-patches: \e086; +$fa-var-check-double: \f560; +$fa-var-arrow-down-a-z: \f15d; +$fa-var-sort-alpha-asc: \f15d; +$fa-var-sort-alpha-down: \f15d; +$fa-var-money-bill-wheat: \e52a; +$fa-var-cookie: \f563; +$fa-var-arrow-rotate-left: \f0e2; +$fa-var-arrow-left-rotate: \f0e2; +$fa-var-arrow-rotate-back: \f0e2; +$fa-var-arrow-rotate-backward: \f0e2; +$fa-var-undo: \f0e2; +$fa-var-hard-drive: \f0a0; +$fa-var-hdd: \f0a0; +$fa-var-face-grin-squint-tears: \f586; +$fa-var-grin-squint-tears: \f586; +$fa-var-dumbbell: \f44b; +$fa-var-rectangle-list: \f022; +$fa-var-list-alt: \f022; +$fa-var-tarp-droplet: \e57c; +$fa-var-house-medical-circle-check: \e511; +$fa-var-person-skiing-nordic: \f7ca; +$fa-var-skiing-nordic: \f7ca; +$fa-var-calendar-plus: \f271; +$fa-var-plane-arrival: \f5af; +$fa-var-circle-left: \f359; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-train-subway: \f239; +$fa-var-subway: \f239; +$fa-var-chart-gantt: \e0e4; +$fa-var-indian-rupee-sign: \e1bc; +$fa-var-indian-rupee: \e1bc; +$fa-var-inr: \e1bc; +$fa-var-crop-simple: \f565; +$fa-var-crop-alt: \f565; +$fa-var-money-bill-1: \f3d1; +$fa-var-money-bill-alt: \f3d1; +$fa-var-left-long: \f30a; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-dna: \f471; +$fa-var-virus-slash: \e075; +$fa-var-minus: \f068; +$fa-var-subtract: \f068; +$fa-var-chess: \f439; +$fa-var-arrow-left-long: \f177; +$fa-var-long-arrow-left: \f177; +$fa-var-plug-circle-check: \e55c; +$fa-var-street-view: \f21d; +$fa-var-franc-sign: \e18f; +$fa-var-volume-off: \f026; +$fa-var-hands-asl-interpreting: \f2a3; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-asl-interpreting: \f2a3; +$fa-var-hands-american-sign-language-interpreting: \f2a3; +$fa-var-gear: \f013; +$fa-var-cog: \f013; +$fa-var-droplet-slash: \f5c7; +$fa-var-tint-slash: \f5c7; +$fa-var-mosque: \f678; +$fa-var-mosquito: \e52b; +$fa-var-star-of-david: \f69a; +$fa-var-person-military-rifle: \e54b; +$fa-var-cart-shopping: \f07a; +$fa-var-shopping-cart: \f07a; +$fa-var-vials: \f493; +$fa-var-plug-circle-plus: \e55f; +$fa-var-place-of-worship: \f67f; +$fa-var-grip-vertical: \f58e; +$fa-var-arrow-turn-up: \f148; +$fa-var-level-up: \f148; +$fa-var-u: \55; +$fa-var-square-root-variable: \f698; +$fa-var-square-root-alt: \f698; +$fa-var-clock: \f017; +$fa-var-clock-four: \f017; +$fa-var-backward-step: \f048; +$fa-var-step-backward: \f048; +$fa-var-pallet: \f482; +$fa-var-faucet: \e005; +$fa-var-baseball-bat-ball: \f432; +$fa-var-s: \53; +$fa-var-timeline: \e29c; +$fa-var-keyboard: \f11c; +$fa-var-caret-down: \f0d7; +$fa-var-house-chimney-medical: \f7f2; +$fa-var-clinic-medical: \f7f2; +$fa-var-temperature-three-quarters: \f2c8; +$fa-var-temperature-3: \f2c8; +$fa-var-thermometer-3: \f2c8; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-mobile-screen: \f3cf; +$fa-var-mobile-android-alt: \f3cf; +$fa-var-plane-up: \e22d; +$fa-var-piggy-bank: \f4d3; +$fa-var-battery-half: \f242; +$fa-var-battery-3: \f242; +$fa-var-mountain-city: \e52e; +$fa-var-coins: \f51e; +$fa-var-khanda: \f66d; +$fa-var-sliders: \f1de; +$fa-var-sliders-h: \f1de; +$fa-var-folder-tree: \f802; +$fa-var-network-wired: \f6ff; +$fa-var-map-pin: \f276; +$fa-var-hamsa: \f665; +$fa-var-cent-sign: \e3f5; +$fa-var-flask: \f0c3; +$fa-var-person-pregnant: \e31e; +$fa-var-wand-sparkles: \f72b; +$fa-var-ellipsis-vertical: \f142; +$fa-var-ellipsis-v: \f142; +$fa-var-ticket: \f145; +$fa-var-power-off: \f011; +$fa-var-right-long: \f30b; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-flag-usa: \f74d; +$fa-var-laptop-file: \e51d; +$fa-var-tty: \f1e4; +$fa-var-teletype: \f1e4; +$fa-var-diagram-next: \e476; +$fa-var-person-rifle: \e54e; +$fa-var-house-medical-circle-exclamation: \e512; +$fa-var-closed-captioning: \f20a; +$fa-var-person-hiking: \f6ec; +$fa-var-hiking: \f6ec; +$fa-var-venus-double: \f226; +$fa-var-images: \f302; +$fa-var-calculator: \f1ec; +$fa-var-people-pulling: \e535; +$fa-var-n: \4e; +$fa-var-cable-car: \f7da; +$fa-var-tram: \f7da; +$fa-var-cloud-rain: \f73d; +$fa-var-building-circle-xmark: \e4d4; +$fa-var-ship: \f21a; +$fa-var-arrows-down-to-line: \e4b8; +$fa-var-download: \f019; +$fa-var-face-grin: \f580; +$fa-var-grin: \f580; +$fa-var-delete-left: \f55a; +$fa-var-backspace: \f55a; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-dropper-empty: \f1fb; +$fa-var-eyedropper: \f1fb; +$fa-var-file-circle-check: \e5a0; +$fa-var-forward: \f04e; +$fa-var-mobile: \f3ce; +$fa-var-mobile-android: \f3ce; +$fa-var-mobile-phone: \f3ce; +$fa-var-face-meh: \f11a; +$fa-var-meh: \f11a; +$fa-var-align-center: \f037; +$fa-var-book-skull: \f6b7; +$fa-var-book-dead: \f6b7; +$fa-var-id-card: \f2c2; +$fa-var-drivers-license: \f2c2; +$fa-var-outdent: \f03b; +$fa-var-dedent: \f03b; +$fa-var-heart-circle-exclamation: \e4fe; +$fa-var-house: \f015; +$fa-var-home: \f015; +$fa-var-home-alt: \f015; +$fa-var-home-lg-alt: \f015; +$fa-var-calendar-week: \f784; +$fa-var-laptop-medical: \f812; +$fa-var-b: \42; +$fa-var-file-medical: \f477; +$fa-var-dice-one: \f525; +$fa-var-kiwi-bird: \f535; +$fa-var-arrow-right-arrow-left: \f0ec; +$fa-var-exchange: \f0ec; +$fa-var-rotate-right: \f2f9; +$fa-var-redo-alt: \f2f9; +$fa-var-rotate-forward: \f2f9; +$fa-var-utensils: \f2e7; +$fa-var-cutlery: \f2e7; +$fa-var-arrow-up-wide-short: \f161; +$fa-var-sort-amount-up: \f161; +$fa-var-mill-sign: \e1ed; +$fa-var-bowl-rice: \e2eb; +$fa-var-skull: \f54c; +$fa-var-tower-broadcast: \f519; +$fa-var-broadcast-tower: \f519; +$fa-var-truck-pickup: \f63c; +$fa-var-up-long: \f30c; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-stop: \f04d; +$fa-var-code-merge: \f387; +$fa-var-upload: \f093; +$fa-var-hurricane: \f751; +$fa-var-mound: \e52d; +$fa-var-toilet-portable: \e583; +$fa-var-compact-disc: \f51f; +$fa-var-file-arrow-down: \f56d; +$fa-var-file-download: \f56d; +$fa-var-caravan: \f8ff; +$fa-var-shield-cat: \e572; +$fa-var-bolt: \f0e7; +$fa-var-zap: \f0e7; +$fa-var-glass-water: \e4f4; +$fa-var-oil-well: \e532; +$fa-var-vault: \e2c5; +$fa-var-mars: \f222; +$fa-var-toilet: \f7d8; +$fa-var-plane-circle-xmark: \e557; +$fa-var-yen-sign: \f157; +$fa-var-cny: \f157; +$fa-var-jpy: \f157; +$fa-var-rmb: \f157; +$fa-var-yen: \f157; +$fa-var-ruble-sign: \f158; +$fa-var-rouble: \f158; +$fa-var-rub: \f158; +$fa-var-ruble: \f158; +$fa-var-sun: \f185; +$fa-var-guitar: \f7a6; +$fa-var-face-laugh-wink: \f59c; +$fa-var-laugh-wink: \f59c; +$fa-var-horse-head: \f7ab; +$fa-var-bore-hole: \e4c3; +$fa-var-industry: \f275; +$fa-var-circle-down: \f358; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrows-turn-to-dots: \e4c1; +$fa-var-florin-sign: \e184; +$fa-var-arrow-down-short-wide: \f884; +$fa-var-sort-amount-desc: \f884; +$fa-var-sort-amount-down-alt: \f884; +$fa-var-less-than: \3c; +$fa-var-angle-down: \f107; +$fa-var-car-tunnel: \e4de; +$fa-var-head-side-cough: \e061; +$fa-var-grip-lines: \f7a4; +$fa-var-thumbs-down: \f165; +$fa-var-user-lock: \f502; +$fa-var-arrow-right-long: \f178; +$fa-var-long-arrow-right: \f178; +$fa-var-anchor-circle-xmark: \e4ac; +$fa-var-ellipsis: \f141; +$fa-var-ellipsis-h: \f141; +$fa-var-chess-pawn: \f443; +$fa-var-kit-medical: \f479; +$fa-var-first-aid: \f479; +$fa-var-person-through-window: \e5a9; +$fa-var-toolbox: \f552; +$fa-var-hands-holding-circle: \e4fb; +$fa-var-bug: \f188; +$fa-var-credit-card: \f09d; +$fa-var-credit-card-alt: \f09d; +$fa-var-car: \f1b9; +$fa-var-automobile: \f1b9; +$fa-var-hand-holding-hand: \e4f7; +$fa-var-book-open-reader: \f5da; +$fa-var-book-reader: \f5da; +$fa-var-mountain-sun: \e52f; +$fa-var-arrows-left-right-to-line: \e4ba; +$fa-var-dice-d20: \f6cf; +$fa-var-truck-droplet: \e58c; +$fa-var-file-circle-xmark: \e5a1; +$fa-var-temperature-arrow-up: \e040; +$fa-var-temperature-up: \e040; +$fa-var-medal: \f5a2; +$fa-var-bed: \f236; +$fa-var-square-h: \f0fd; +$fa-var-h-square: \f0fd; +$fa-var-podcast: \f2ce; +$fa-var-temperature-full: \f2c7; +$fa-var-temperature-4: \f2c7; +$fa-var-thermometer-4: \f2c7; +$fa-var-thermometer-full: \f2c7; +$fa-var-bell: \f0f3; +$fa-var-superscript: \f12b; +$fa-var-plug-circle-xmark: \e560; +$fa-var-star-of-life: \f621; +$fa-var-phone-slash: \f3dd; +$fa-var-paint-roller: \f5aa; +$fa-var-handshake-angle: \f4c4; +$fa-var-hands-helping: \f4c4; +$fa-var-location-dot: \f3c5; +$fa-var-map-marker-alt: \f3c5; +$fa-var-file: \f15b; +$fa-var-greater-than: \3e; +$fa-var-person-swimming: \f5c4; +$fa-var-swimmer: \f5c4; +$fa-var-arrow-down: \f063; +$fa-var-droplet: \f043; +$fa-var-tint: \f043; +$fa-var-eraser: \f12d; +$fa-var-earth-americas: \f57d; +$fa-var-earth: \f57d; +$fa-var-earth-america: \f57d; +$fa-var-globe-americas: \f57d; +$fa-var-person-burst: \e53b; +$fa-var-dove: \f4ba; +$fa-var-battery-empty: \f244; +$fa-var-battery-0: \f244; +$fa-var-socks: \f696; +$fa-var-inbox: \f01c; +$fa-var-section: \e447; +$fa-var-gauge-high: \f625; +$fa-var-tachometer-alt: \f625; +$fa-var-tachometer-alt-fast: \f625; +$fa-var-envelope-open-text: \f658; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f0f8; +$fa-var-hospital-wide: \f0f8; +$fa-var-wine-bottle: \f72f; +$fa-var-chess-rook: \f447; +$fa-var-bars-staggered: \f550; +$fa-var-reorder: \f550; +$fa-var-stream: \f550; +$fa-var-dharmachakra: \f655; +$fa-var-hotdog: \f80f; +$fa-var-person-walking-with-cane: \f29d; +$fa-var-blind: \f29d; +$fa-var-drum: \f569; +$fa-var-ice-cream: \f810; +$fa-var-heart-circle-bolt: \e4fc; +$fa-var-fax: \f1ac; +$fa-var-paragraph: \f1dd; +$fa-var-check-to-slot: \f772; +$fa-var-vote-yea: \f772; +$fa-var-star-half: \f089; +$fa-var-boxes-stacked: \f468; +$fa-var-boxes: \f468; +$fa-var-boxes-alt: \f468; +$fa-var-link: \f0c1; +$fa-var-chain: \f0c1; +$fa-var-ear-listen: \f2a2; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-tree-city: \e587; +$fa-var-play: \f04b; +$fa-var-font: \f031; +$fa-var-rupiah-sign: \e23d; +$fa-var-magnifying-glass: \f002; +$fa-var-search: \f002; +$fa-var-table-tennis-paddle-ball: \f45d; +$fa-var-ping-pong-paddle-ball: \f45d; +$fa-var-table-tennis: \f45d; +$fa-var-person-dots-from-line: \f470; +$fa-var-diagnoses: \f470; +$fa-var-trash-can-arrow-up: \f82a; +$fa-var-trash-restore-alt: \f82a; +$fa-var-naira-sign: \e1f6; +$fa-var-cart-arrow-down: \f218; +$fa-var-walkie-talkie: \f8ef; +$fa-var-file-pen: \f31c; +$fa-var-file-edit: \f31c; +$fa-var-receipt: \f543; +$fa-var-square-pen: \f14b; +$fa-var-pen-square: \f14b; +$fa-var-pencil-square: \f14b; +$fa-var-suitcase-rolling: \f5c1; +$fa-var-person-circle-exclamation: \e53f; +$fa-var-chevron-down: \f078; +$fa-var-battery-full: \f240; +$fa-var-battery: \f240; +$fa-var-battery-5: \f240; +$fa-var-skull-crossbones: \f714; +$fa-var-code-compare: \e13a; +$fa-var-list-ul: \f0ca; +$fa-var-list-dots: \f0ca; +$fa-var-school-lock: \e56f; +$fa-var-tower-cell: \e585; +$fa-var-down-long: \f309; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-ranking-star: \e561; +$fa-var-chess-king: \f43f; +$fa-var-person-harassing: \e549; +$fa-var-brazilian-real-sign: \e46c; +$fa-var-landmark-dome: \f752; +$fa-var-landmark-alt: \f752; +$fa-var-arrow-up: \f062; +$fa-var-tv: \f26c; +$fa-var-television: \f26c; +$fa-var-tv-alt: \f26c; +$fa-var-shrimp: \e448; +$fa-var-list-check: \f0ae; +$fa-var-tasks: \f0ae; +$fa-var-jug-detergent: \e519; +$fa-var-circle-user: \f2bd; +$fa-var-user-circle: \f2bd; +$fa-var-user-shield: \f505; +$fa-var-wind: \f72e; +$fa-var-car-burst: \f5e1; +$fa-var-car-crash: \f5e1; +$fa-var-y: \59; +$fa-var-person-snowboarding: \f7ce; +$fa-var-snowboarding: \f7ce; +$fa-var-truck-fast: \f48b; +$fa-var-shipping-fast: \f48b; +$fa-var-fish: \f578; +$fa-var-user-graduate: \f501; +$fa-var-circle-half-stroke: \f042; +$fa-var-adjust: \f042; +$fa-var-clapperboard: \e131; +$fa-var-circle-radiation: \f7ba; +$fa-var-radiation-alt: \f7ba; +$fa-var-baseball: \f433; +$fa-var-baseball-ball: \f433; +$fa-var-jet-fighter-up: \e518; +$fa-var-diagram-project: \f542; +$fa-var-project-diagram: \f542; +$fa-var-copy: \f0c5; +$fa-var-volume-xmark: \f6a9; +$fa-var-volume-mute: \f6a9; +$fa-var-volume-times: \f6a9; +$fa-var-hand-sparkles: \e05d; +$fa-var-grip: \f58d; +$fa-var-grip-horizontal: \f58d; +$fa-var-share-from-square: \f14d; +$fa-var-share-square: \f14d; +$fa-var-child-combatant: \e4e0; +$fa-var-child-rifle: \e4e0; +$fa-var-gun: \e19b; +$fa-var-square-phone: \f098; +$fa-var-phone-square: \f098; +$fa-var-plus: \2b; +$fa-var-add: \2b; +$fa-var-expand: \f065; +$fa-var-computer: \e4e5; +$fa-var-xmark: \f00d; +$fa-var-close: \f00d; +$fa-var-multiply: \f00d; +$fa-var-remove: \f00d; +$fa-var-times: \f00d; +$fa-var-arrows-up-down-left-right: \f047; +$fa-var-arrows: \f047; +$fa-var-chalkboard-user: \f51c; +$fa-var-chalkboard-teacher: \f51c; +$fa-var-peso-sign: \e222; +$fa-var-building-shield: \e4d8; +$fa-var-baby: \f77c; +$fa-var-users-line: \e592; +$fa-var-quote-left: \f10d; +$fa-var-quote-left-alt: \f10d; +$fa-var-tractor: \f722; +$fa-var-trash-arrow-up: \f829; +$fa-var-trash-restore: \f829; +$fa-var-arrow-down-up-lock: \e4b0; +$fa-var-lines-leaning: \e51e; +$fa-var-ruler-combined: \f546; +$fa-var-copyright: \f1f9; +$fa-var-equals: \3d; +$fa-var-blender: \f517; +$fa-var-teeth: \f62e; +$fa-var-shekel-sign: \f20b; +$fa-var-ils: \f20b; +$fa-var-shekel: \f20b; +$fa-var-sheqel: \f20b; +$fa-var-sheqel-sign: \f20b; +$fa-var-map: \f279; +$fa-var-rocket: \f135; +$fa-var-photo-film: \f87c; +$fa-var-photo-video: \f87c; +$fa-var-folder-minus: \f65d; +$fa-var-store: \f54e; +$fa-var-arrow-trend-up: \e098; +$fa-var-plug-circle-minus: \e55e; +$fa-var-sign-hanging: \f4d9; +$fa-var-sign: \f4d9; +$fa-var-bezier-curve: \f55b; +$fa-var-bell-slash: \f1f6; +$fa-var-tablet: \f3fb; +$fa-var-tablet-android: \f3fb; +$fa-var-school-flag: \e56e; +$fa-var-fill: \f575; +$fa-var-angle-up: \f106; +$fa-var-drumstick-bite: \f6d7; +$fa-var-holly-berry: \f7aa; +$fa-var-chevron-left: \f053; +$fa-var-bacteria: \e059; +$fa-var-hand-lizard: \f258; +$fa-var-notdef: \e1fe; +$fa-var-disease: \f7fa; +$fa-var-briefcase-medical: \f469; +$fa-var-genderless: \f22d; +$fa-var-chevron-right: \f054; +$fa-var-retweet: \f079; +$fa-var-car-rear: \f5de; +$fa-var-car-alt: \f5de; +$fa-var-pump-soap: \e06b; +$fa-var-video-slash: \f4e2; +$fa-var-battery-quarter: \f243; +$fa-var-battery-2: \f243; +$fa-var-radio: \f8d7; +$fa-var-baby-carriage: \f77d; +$fa-var-carriage-baby: \f77d; +$fa-var-traffic-light: \f637; +$fa-var-thermometer: \f491; +$fa-var-vr-cardboard: \f729; +$fa-var-hand-middle-finger: \f806; +$fa-var-percent: \25; +$fa-var-percentage: \25; +$fa-var-truck-moving: \f4df; +$fa-var-glass-water-droplet: \e4f5; +$fa-var-display: \e163; +$fa-var-face-smile: \f118; +$fa-var-smile: \f118; +$fa-var-thumbtack: \f08d; +$fa-var-thumb-tack: \f08d; +$fa-var-trophy: \f091; +$fa-var-person-praying: \f683; +$fa-var-pray: \f683; +$fa-var-hammer: \f6e3; +$fa-var-hand-peace: \f25b; +$fa-var-rotate: \f2f1; +$fa-var-sync-alt: \f2f1; +$fa-var-spinner: \f110; +$fa-var-robot: \f544; +$fa-var-peace: \f67c; +$fa-var-gears: \f085; +$fa-var-cogs: \f085; +$fa-var-warehouse: \f494; +$fa-var-arrow-up-right-dots: \e4b7; +$fa-var-splotch: \f5bc; +$fa-var-face-grin-hearts: \f584; +$fa-var-grin-hearts: \f584; +$fa-var-dice-four: \f524; +$fa-var-sim-card: \f7c4; +$fa-var-transgender: \f225; +$fa-var-transgender-alt: \f225; +$fa-var-mercury: \f223; +$fa-var-arrow-turn-down: \f149; +$fa-var-level-down: \f149; +$fa-var-person-falling-burst: \e547; +$fa-var-award: \f559; +$fa-var-ticket-simple: \f3ff; +$fa-var-ticket-alt: \f3ff; +$fa-var-building: \f1ad; +$fa-var-angles-left: \f100; +$fa-var-angle-double-left: \f100; +$fa-var-qrcode: \f029; +$fa-var-clock-rotate-left: \f1da; +$fa-var-history: \f1da; +$fa-var-face-grin-beam-sweat: \f583; +$fa-var-grin-beam-sweat: \f583; +$fa-var-file-export: \f56e; +$fa-var-arrow-right-from-file: \f56e; +$fa-var-shield: \f132; +$fa-var-shield-blank: \f132; +$fa-var-arrow-up-short-wide: \f885; +$fa-var-sort-amount-up-alt: \f885; +$fa-var-house-medical: \e3b2; +$fa-var-golf-ball-tee: \f450; +$fa-var-golf-ball: \f450; +$fa-var-circle-chevron-left: \f137; +$fa-var-chevron-circle-left: \f137; +$fa-var-house-chimney-window: \e00d; +$fa-var-pen-nib: \f5ad; +$fa-var-tent-arrow-turn-left: \e580; +$fa-var-tents: \e582; +$fa-var-wand-magic: \f0d0; +$fa-var-magic: \f0d0; +$fa-var-dog: \f6d3; +$fa-var-carrot: \f787; +$fa-var-moon: \f186; +$fa-var-wine-glass-empty: \f5ce; +$fa-var-wine-glass-alt: \f5ce; +$fa-var-cheese: \f7ef; +$fa-var-yin-yang: \f6ad; +$fa-var-music: \f001; +$fa-var-code-commit: \f386; +$fa-var-temperature-low: \f76b; +$fa-var-person-biking: \f84a; +$fa-var-biking: \f84a; +$fa-var-broom: \f51a; +$fa-var-shield-heart: \e574; +$fa-var-gopuram: \f664; +$fa-var-earth-oceania: \e47b; +$fa-var-globe-oceania: \e47b; +$fa-var-square-xmark: \f2d3; +$fa-var-times-square: \f2d3; +$fa-var-xmark-square: \f2d3; +$fa-var-hashtag: \23; +$fa-var-up-right-and-down-left-from-center: \f424; +$fa-var-expand-alt: \f424; +$fa-var-oil-can: \f613; +$fa-var-t: \54; +$fa-var-hippo: \f6ed; +$fa-var-chart-column: \e0e3; +$fa-var-infinity: \f534; +$fa-var-vial-circle-check: \e596; +$fa-var-person-arrow-down-to-line: \e538; +$fa-var-voicemail: \f897; +$fa-var-fan: \f863; +$fa-var-person-walking-luggage: \e554; +$fa-var-up-down: \f338; +$fa-var-arrows-alt-v: \f338; +$fa-var-cloud-moon-rain: \f73c; +$fa-var-calendar: \f133; +$fa-var-trailer: \e041; +$fa-var-bahai: \f666; +$fa-var-haykal: \f666; +$fa-var-sd-card: \f7c2; +$fa-var-dragon: \f6d5; +$fa-var-shoe-prints: \f54b; +$fa-var-circle-plus: \f055; +$fa-var-plus-circle: \f055; +$fa-var-face-grin-tongue-wink: \f58b; +$fa-var-grin-tongue-wink: \f58b; +$fa-var-hand-holding: \f4bd; +$fa-var-plug-circle-exclamation: \e55d; +$fa-var-link-slash: \f127; +$fa-var-chain-broken: \f127; +$fa-var-chain-slash: \f127; +$fa-var-unlink: \f127; +$fa-var-clone: \f24d; +$fa-var-person-walking-arrow-loop-left: \e551; +$fa-var-arrow-up-z-a: \f882; +$fa-var-sort-alpha-up-alt: \f882; +$fa-var-fire-flame-curved: \f7e4; +$fa-var-fire-alt: \f7e4; +$fa-var-tornado: \f76f; +$fa-var-file-circle-plus: \e494; +$fa-var-book-quran: \f687; +$fa-var-quran: \f687; +$fa-var-anchor: \f13d; +$fa-var-border-all: \f84c; +$fa-var-face-angry: \f556; +$fa-var-angry: \f556; +$fa-var-cookie-bite: \f564; +$fa-var-arrow-trend-down: \e097; +$fa-var-rss: \f09e; +$fa-var-feed: \f09e; +$fa-var-draw-polygon: \f5ee; +$fa-var-scale-balanced: \f24e; +$fa-var-balance-scale: \f24e; +$fa-var-gauge-simple-high: \f62a; +$fa-var-tachometer: \f62a; +$fa-var-tachometer-fast: \f62a; +$fa-var-shower: \f2cc; +$fa-var-desktop: \f390; +$fa-var-desktop-alt: \f390; +$fa-var-m: \4d; +$fa-var-table-list: \f00b; +$fa-var-th-list: \f00b; +$fa-var-comment-sms: \f7cd; +$fa-var-sms: \f7cd; +$fa-var-book: \f02d; +$fa-var-user-plus: \f234; +$fa-var-check: \f00c; +$fa-var-battery-three-quarters: \f241; +$fa-var-battery-4: \f241; +$fa-var-house-circle-check: \e509; +$fa-var-angle-left: \f104; +$fa-var-diagram-successor: \e47a; +$fa-var-truck-arrow-right: \e58b; +$fa-var-arrows-split-up-and-left: \e4bc; +$fa-var-hand-fist: \f6de; +$fa-var-fist-raised: \f6de; +$fa-var-cloud-moon: \f6c3; +$fa-var-briefcase: \f0b1; +$fa-var-person-falling: \e546; +$fa-var-image-portrait: \f3e0; +$fa-var-portrait: \f3e0; +$fa-var-user-tag: \f507; +$fa-var-rug: \e569; +$fa-var-earth-europe: \f7a2; +$fa-var-globe-europe: \f7a2; +$fa-var-cart-flatbed-suitcase: \f59d; +$fa-var-luggage-cart: \f59d; +$fa-var-rectangle-xmark: \f410; +$fa-var-rectangle-times: \f410; +$fa-var-times-rectangle: \f410; +$fa-var-window-close: \f410; +$fa-var-baht-sign: \e0ac; +$fa-var-book-open: \f518; +$fa-var-book-journal-whills: \f66a; +$fa-var-journal-whills: \f66a; +$fa-var-handcuffs: \e4f8; +$fa-var-triangle-exclamation: \f071; +$fa-var-exclamation-triangle: \f071; +$fa-var-warning: \f071; +$fa-var-database: \f1c0; +$fa-var-share: \f064; +$fa-var-arrow-turn-right: \f064; +$fa-var-mail-forward: \f064; +$fa-var-bottle-droplet: \e4c4; +$fa-var-mask-face: \e1d7; +$fa-var-hill-rockslide: \e508; +$fa-var-right-left: \f362; +$fa-var-exchange-alt: \f362; +$fa-var-paper-plane: \f1d8; +$fa-var-road-circle-exclamation: \e565; +$fa-var-dungeon: \f6d9; +$fa-var-align-right: \f038; +$fa-var-money-bill-1-wave: \f53b; +$fa-var-money-bill-wave-alt: \f53b; +$fa-var-life-ring: \f1cd; +$fa-var-hands: \f2a7; +$fa-var-sign-language: \f2a7; +$fa-var-signing: \f2a7; +$fa-var-calendar-day: \f783; +$fa-var-water-ladder: \f5c5; +$fa-var-ladder-water: \f5c5; +$fa-var-swimming-pool: \f5c5; +$fa-var-arrows-up-down: \f07d; +$fa-var-arrows-v: \f07d; +$fa-var-face-grimace: \f57f; +$fa-var-grimace: \f57f; +$fa-var-wheelchair-move: \e2ce; +$fa-var-wheelchair-alt: \e2ce; +$fa-var-turn-down: \f3be; +$fa-var-level-down-alt: \f3be; +$fa-var-person-walking-arrow-right: \e552; +$fa-var-square-envelope: \f199; +$fa-var-envelope-square: \f199; +$fa-var-dice: \f522; +$fa-var-bowling-ball: \f436; +$fa-var-brain: \f5dc; +$fa-var-bandage: \f462; +$fa-var-band-aid: \f462; +$fa-var-calendar-minus: \f272; +$fa-var-circle-xmark: \f057; +$fa-var-times-circle: \f057; +$fa-var-xmark-circle: \f057; +$fa-var-gifts: \f79c; +$fa-var-hotel: \f594; +$fa-var-earth-asia: \f57e; +$fa-var-globe-asia: \f57e; +$fa-var-id-card-clip: \f47f; +$fa-var-id-card-alt: \f47f; +$fa-var-magnifying-glass-plus: \f00e; +$fa-var-search-plus: \f00e; +$fa-var-thumbs-up: \f164; +$fa-var-user-clock: \f4fd; +$fa-var-hand-dots: \f461; +$fa-var-allergies: \f461; +$fa-var-file-invoice: \f570; +$fa-var-window-minimize: \f2d1; +$fa-var-mug-saucer: \f0f4; +$fa-var-coffee: \f0f4; +$fa-var-brush: \f55d; +$fa-var-mask: \f6fa; +$fa-var-magnifying-glass-minus: \f010; +$fa-var-search-minus: \f010; +$fa-var-ruler-vertical: \f548; +$fa-var-user-large: \f406; +$fa-var-user-alt: \f406; +$fa-var-train-tram: \e5b4; +$fa-var-user-nurse: \f82f; +$fa-var-syringe: \f48e; +$fa-var-cloud-sun: \f6c4; +$fa-var-stopwatch-20: \e06f; +$fa-var-square-full: \f45c; +$fa-var-magnet: \f076; +$fa-var-jar: \e516; +$fa-var-note-sticky: \f249; +$fa-var-sticky-note: \f249; +$fa-var-bug-slash: \e490; +$fa-var-arrow-up-from-water-pump: \e4b6; +$fa-var-bone: \f5d7; +$fa-var-user-injured: \f728; +$fa-var-face-sad-tear: \f5b4; +$fa-var-sad-tear: \f5b4; +$fa-var-plane: \f072; +$fa-var-tent-arrows-down: \e581; +$fa-var-exclamation: \21; +$fa-var-arrows-spin: \e4bb; +$fa-var-print: \f02f; +$fa-var-turkish-lira-sign: \e2bb; +$fa-var-try: \e2bb; +$fa-var-turkish-lira: \e2bb; +$fa-var-dollar-sign: \24; +$fa-var-dollar: \24; +$fa-var-usd: \24; +$fa-var-x: \58; +$fa-var-magnifying-glass-dollar: \f688; +$fa-var-search-dollar: \f688; +$fa-var-users-gear: \f509; +$fa-var-users-cog: \f509; +$fa-var-person-military-pointing: \e54a; +$fa-var-building-columns: \f19c; +$fa-var-bank: \f19c; +$fa-var-institution: \f19c; +$fa-var-museum: \f19c; +$fa-var-university: \f19c; +$fa-var-umbrella: \f0e9; +$fa-var-trowel: \e589; +$fa-var-d: \44; +$fa-var-stapler: \e5af; +$fa-var-masks-theater: \f630; +$fa-var-theater-masks: \f630; +$fa-var-kip-sign: \e1c4; +$fa-var-hand-point-left: \f0a5; +$fa-var-handshake-simple: \f4c6; +$fa-var-handshake-alt: \f4c6; +$fa-var-jet-fighter: \f0fb; +$fa-var-fighter-jet: \f0fb; +$fa-var-square-share-nodes: \f1e1; +$fa-var-share-alt-square: \f1e1; +$fa-var-barcode: \f02a; +$fa-var-plus-minus: \e43c; +$fa-var-video: \f03d; +$fa-var-video-camera: \f03d; +$fa-var-graduation-cap: \f19d; +$fa-var-mortar-board: \f19d; +$fa-var-hand-holding-medical: \e05c; +$fa-var-person-circle-check: \e53e; +$fa-var-turn-up: \f3bf; +$fa-var-level-up-alt: \f3bf; + +$fa-var-monero: \f3d0; +$fa-var-hooli: \f427; +$fa-var-yelp: \f1e9; +$fa-var-cc-visa: \f1f0; +$fa-var-lastfm: \f202; +$fa-var-shopware: \f5b5; +$fa-var-creative-commons-nc: \f4e8; +$fa-var-aws: \f375; +$fa-var-redhat: \f7bc; +$fa-var-yoast: \f2b1; +$fa-var-cloudflare: \e07d; +$fa-var-ups: \f7e0; +$fa-var-wpexplorer: \f2de; +$fa-var-dyalog: \f399; +$fa-var-bity: \f37a; +$fa-var-stackpath: \f842; +$fa-var-buysellads: \f20d; +$fa-var-first-order: \f2b0; +$fa-var-modx: \f285; +$fa-var-guilded: \e07e; +$fa-var-vnv: \f40b; +$fa-var-square-js: \f3b9; +$fa-var-js-square: \f3b9; +$fa-var-microsoft: \f3ca; +$fa-var-qq: \f1d6; +$fa-var-orcid: \f8d2; +$fa-var-java: \f4e4; +$fa-var-invision: \f7b0; +$fa-var-creative-commons-pd-alt: \f4ed; +$fa-var-centercode: \f380; +$fa-var-glide-g: \f2a6; +$fa-var-drupal: \f1a9; +$fa-var-hire-a-helper: \f3b0; +$fa-var-creative-commons-by: \f4e7; +$fa-var-unity: \e049; +$fa-var-whmcs: \f40d; +$fa-var-rocketchat: \f3e8; +$fa-var-vk: \f189; +$fa-var-untappd: \f405; +$fa-var-mailchimp: \f59e; +$fa-var-css3-alt: \f38b; +$fa-var-square-reddit: \f1a2; +$fa-var-reddit-square: \f1a2; +$fa-var-vimeo-v: \f27d; +$fa-var-contao: \f26d; +$fa-var-square-font-awesome: \e5ad; +$fa-var-deskpro: \f38f; +$fa-var-sistrix: \f3ee; +$fa-var-square-instagram: \e055; +$fa-var-instagram-square: \e055; +$fa-var-battle-net: \f835; +$fa-var-the-red-yeti: \f69d; +$fa-var-square-hacker-news: \f3af; +$fa-var-hacker-news-square: \f3af; +$fa-var-edge: \f282; +$fa-var-threads: \e618; +$fa-var-napster: \f3d2; +$fa-var-square-snapchat: \f2ad; +$fa-var-snapchat-square: \f2ad; +$fa-var-google-plus-g: \f0d5; +$fa-var-artstation: \f77a; +$fa-var-markdown: \f60f; +$fa-var-sourcetree: \f7d3; +$fa-var-google-plus: \f2b3; +$fa-var-diaspora: \f791; +$fa-var-foursquare: \f180; +$fa-var-stack-overflow: \f16c; +$fa-var-github-alt: \f113; +$fa-var-phoenix-squadron: \f511; +$fa-var-pagelines: \f18c; +$fa-var-algolia: \f36c; +$fa-var-red-river: \f3e3; +$fa-var-creative-commons-sa: \f4ef; +$fa-var-safari: \f267; +$fa-var-google: \f1a0; +$fa-var-square-font-awesome-stroke: \f35c; +$fa-var-font-awesome-alt: \f35c; +$fa-var-atlassian: \f77b; +$fa-var-linkedin-in: \f0e1; +$fa-var-digital-ocean: \f391; +$fa-var-nimblr: \f5a8; +$fa-var-chromecast: \f838; +$fa-var-evernote: \f839; +$fa-var-hacker-news: \f1d4; +$fa-var-creative-commons-sampling: \f4f0; +$fa-var-adversal: \f36a; +$fa-var-creative-commons: \f25e; +$fa-var-watchman-monitoring: \e087; +$fa-var-fonticons: \f280; +$fa-var-weixin: \f1d7; +$fa-var-shirtsinbulk: \f214; +$fa-var-codepen: \f1cb; +$fa-var-git-alt: \f841; +$fa-var-lyft: \f3c3; +$fa-var-rev: \f5b2; +$fa-var-windows: \f17a; +$fa-var-wizards-of-the-coast: \f730; +$fa-var-square-viadeo: \f2aa; +$fa-var-viadeo-square: \f2aa; +$fa-var-meetup: \f2e0; +$fa-var-centos: \f789; +$fa-var-adn: \f170; +$fa-var-cloudsmith: \f384; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-square-dribbble: \f397; +$fa-var-dribbble-square: \f397; +$fa-var-codiepie: \f284; +$fa-var-node: \f419; +$fa-var-mix: \f3cb; +$fa-var-steam: \f1b6; +$fa-var-cc-apple-pay: \f416; +$fa-var-scribd: \f28a; +$fa-var-debian: \e60b; +$fa-var-openid: \f19b; +$fa-var-instalod: \e081; +$fa-var-expeditedssl: \f23e; +$fa-var-sellcast: \f2da; +$fa-var-square-twitter: \f081; +$fa-var-twitter-square: \f081; +$fa-var-r-project: \f4f7; +$fa-var-delicious: \f1a5; +$fa-var-freebsd: \f3a4; +$fa-var-vuejs: \f41f; +$fa-var-accusoft: \f369; +$fa-var-ioxhost: \f208; +$fa-var-fonticons-fi: \f3a2; +$fa-var-app-store: \f36f; +$fa-var-cc-mastercard: \f1f1; +$fa-var-itunes-note: \f3b5; +$fa-var-golang: \e40f; +$fa-var-kickstarter: \f3bb; +$fa-var-grav: \f2d6; +$fa-var-weibo: \f18a; +$fa-var-uncharted: \e084; +$fa-var-firstdraft: \f3a1; +$fa-var-square-youtube: \f431; +$fa-var-youtube-square: \f431; +$fa-var-wikipedia-w: \f266; +$fa-var-wpressr: \f3e4; +$fa-var-rendact: \f3e4; +$fa-var-angellist: \f209; +$fa-var-galactic-republic: \f50c; +$fa-var-nfc-directional: \e530; +$fa-var-skype: \f17e; +$fa-var-joget: \f3b7; +$fa-var-fedora: \f798; +$fa-var-stripe-s: \f42a; +$fa-var-meta: \e49b; +$fa-var-laravel: \f3bd; +$fa-var-hotjar: \f3b1; +$fa-var-bluetooth-b: \f294; +$fa-var-sticker-mule: \f3f7; +$fa-var-creative-commons-zero: \f4f3; +$fa-var-hips: \f452; +$fa-var-behance: \f1b4; +$fa-var-reddit: \f1a1; +$fa-var-discord: \f392; +$fa-var-chrome: \f268; +$fa-var-app-store-ios: \f370; +$fa-var-cc-discover: \f1f2; +$fa-var-wpbeginner: \f297; +$fa-var-confluence: \f78d; +$fa-var-mdb: \f8ca; +$fa-var-dochub: \f394; +$fa-var-accessible-icon: \f368; +$fa-var-ebay: \f4f4; +$fa-var-amazon: \f270; +$fa-var-unsplash: \e07c; +$fa-var-yarn: \f7e3; +$fa-var-square-steam: \f1b7; +$fa-var-steam-square: \f1b7; +$fa-var-500px: \f26e; +$fa-var-square-vimeo: \f194; +$fa-var-vimeo-square: \f194; +$fa-var-asymmetrik: \f372; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-flag: \f2b4; +$fa-var-font-awesome-logo-full: \f2b4; +$fa-var-gratipay: \f184; +$fa-var-apple: \f179; +$fa-var-hive: \e07f; +$fa-var-gitkraken: \f3a6; +$fa-var-keybase: \f4f5; +$fa-var-apple-pay: \f415; +$fa-var-padlet: \e4a0; +$fa-var-amazon-pay: \f42c; +$fa-var-square-github: \f092; +$fa-var-github-square: \f092; +$fa-var-stumbleupon: \f1a4; +$fa-var-fedex: \f797; +$fa-var-phoenix-framework: \f3dc; +$fa-var-shopify: \e057; +$fa-var-neos: \f612; +$fa-var-square-threads: \e619; +$fa-var-hackerrank: \f5f7; +$fa-var-researchgate: \f4f8; +$fa-var-swift: \f8e1; +$fa-var-angular: \f420; +$fa-var-speakap: \f3f3; +$fa-var-angrycreative: \f36e; +$fa-var-y-combinator: \f23b; +$fa-var-empire: \f1d1; +$fa-var-envira: \f299; +$fa-var-square-gitlab: \e5ae; +$fa-var-gitlab-square: \e5ae; +$fa-var-studiovinari: \f3f8; +$fa-var-pied-piper: \f2ae; +$fa-var-wordpress: \f19a; +$fa-var-product-hunt: \f288; +$fa-var-firefox: \f269; +$fa-var-linode: \f2b8; +$fa-var-goodreads: \f3a8; +$fa-var-square-odnoklassniki: \f264; +$fa-var-odnoklassniki-square: \f264; +$fa-var-jsfiddle: \f1cc; +$fa-var-sith: \f512; +$fa-var-themeisle: \f2b2; +$fa-var-page4: \f3d7; +$fa-var-hashnode: \e499; +$fa-var-react: \f41b; +$fa-var-cc-paypal: \f1f4; +$fa-var-squarespace: \f5be; +$fa-var-cc-stripe: \f1f5; +$fa-var-creative-commons-share: \f4f2; +$fa-var-bitcoin: \f379; +$fa-var-keycdn: \f3ba; +$fa-var-opera: \f26a; +$fa-var-itch-io: \f83a; +$fa-var-umbraco: \f8e8; +$fa-var-galactic-senate: \f50d; +$fa-var-ubuntu: \f7df; +$fa-var-draft2digital: \f396; +$fa-var-stripe: \f429; +$fa-var-houzz: \f27c; +$fa-var-gg: \f260; +$fa-var-dhl: \f790; +$fa-var-square-pinterest: \f0d3; +$fa-var-pinterest-square: \f0d3; +$fa-var-xing: \f168; +$fa-var-blackberry: \f37b; +$fa-var-creative-commons-pd: \f4ec; +$fa-var-playstation: \f3df; +$fa-var-quinscape: \f459; +$fa-var-less: \f41d; +$fa-var-blogger-b: \f37d; +$fa-var-opencart: \f23d; +$fa-var-vine: \f1ca; +$fa-var-paypal: \f1ed; +$fa-var-gitlab: \f296; +$fa-var-typo3: \f42b; +$fa-var-reddit-alien: \f281; +$fa-var-yahoo: \f19e; +$fa-var-dailymotion: \e052; +$fa-var-affiliatetheme: \f36b; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-bootstrap: \f836; +$fa-var-odnoklassniki: \f263; +$fa-var-nfc-symbol: \e531; +$fa-var-ethereum: \f42e; +$fa-var-speaker-deck: \f83c; +$fa-var-creative-commons-nc-eu: \f4e9; +$fa-var-patreon: \f3d9; +$fa-var-avianex: \f374; +$fa-var-ello: \f5f1; +$fa-var-gofore: \f3a7; +$fa-var-bimobject: \f378; +$fa-var-facebook-f: \f39e; +$fa-var-square-google-plus: \f0d4; +$fa-var-google-plus-square: \f0d4; +$fa-var-mandalorian: \f50f; +$fa-var-first-order-alt: \f50a; +$fa-var-osi: \f41a; +$fa-var-google-wallet: \f1ee; +$fa-var-d-and-d-beyond: \f6ca; +$fa-var-periscope: \f3da; +$fa-var-fulcrum: \f50b; +$fa-var-cloudscale: \f383; +$fa-var-forumbee: \f211; +$fa-var-mizuni: \f3cc; +$fa-var-schlix: \f3ea; +$fa-var-square-xing: \f169; +$fa-var-xing-square: \f169; +$fa-var-bandcamp: \f2d5; +$fa-var-wpforms: \f298; +$fa-var-cloudversify: \f385; +$fa-var-usps: \f7e1; +$fa-var-megaport: \f5a3; +$fa-var-magento: \f3c4; +$fa-var-spotify: \f1bc; +$fa-var-optin-monster: \f23c; +$fa-var-fly: \f417; +$fa-var-aviato: \f421; +$fa-var-itunes: \f3b4; +$fa-var-cuttlefish: \f38c; +$fa-var-blogger: \f37c; +$fa-var-flickr: \f16e; +$fa-var-viber: \f409; +$fa-var-soundcloud: \f1be; +$fa-var-digg: \f1a6; +$fa-var-tencent-weibo: \f1d5; +$fa-var-symfony: \f83d; +$fa-var-maxcdn: \f136; +$fa-var-etsy: \f2d7; +$fa-var-facebook-messenger: \f39f; +$fa-var-audible: \f373; +$fa-var-think-peaks: \f731; +$fa-var-bilibili: \e3d9; +$fa-var-erlang: \f39d; +$fa-var-x-twitter: \e61b; +$fa-var-cotton-bureau: \f89e; +$fa-var-dashcube: \f210; +$fa-var-42-group: \e080; +$fa-var-innosoft: \e080; +$fa-var-stack-exchange: \f18d; +$fa-var-elementor: \f430; +$fa-var-square-pied-piper: \e01e; +$fa-var-pied-piper-square: \e01e; +$fa-var-creative-commons-nd: \f4eb; +$fa-var-palfed: \f3d8; +$fa-var-superpowers: \f2dd; +$fa-var-resolving: \f3e7; +$fa-var-xbox: \f412; +$fa-var-searchengin: \f3eb; +$fa-var-tiktok: \e07b; +$fa-var-square-facebook: \f082; +$fa-var-facebook-square: \f082; +$fa-var-renren: \f18b; +$fa-var-linux: \f17c; +$fa-var-glide: \f2a5; +$fa-var-linkedin: \f08c; +$fa-var-hubspot: \f3b2; +$fa-var-deploydog: \f38e; +$fa-var-twitch: \f1e8; +$fa-var-ravelry: \f2d9; +$fa-var-mixer: \e056; +$fa-var-square-lastfm: \f203; +$fa-var-lastfm-square: \f203; +$fa-var-vimeo: \f40a; +$fa-var-mendeley: \f7b3; +$fa-var-uniregistry: \f404; +$fa-var-figma: \f799; +$fa-var-creative-commons-remix: \f4ee; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-dropbox: \f16b; +$fa-var-instagram: \f16d; +$fa-var-cmplid: \e360; +$fa-var-facebook: \f09a; +$fa-var-gripfire: \f3ac; +$fa-var-jedi-order: \f50e; +$fa-var-uikit: \f403; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-phabricator: \f3db; +$fa-var-ussunnah: \f407; +$fa-var-earlybirds: \f39a; +$fa-var-trade-federation: \f513; +$fa-var-autoprefixer: \f41c; +$fa-var-whatsapp: \f232; +$fa-var-slideshare: \f1e7; +$fa-var-google-play: \f3ab; +$fa-var-viadeo: \f2a9; +$fa-var-line: \f3c0; +$fa-var-google-drive: \f3aa; +$fa-var-servicestack: \f3ec; +$fa-var-simplybuilt: \f215; +$fa-var-bitbucket: \f171; +$fa-var-imdb: \f2d8; +$fa-var-deezer: \e077; +$fa-var-raspberry-pi: \f7bb; +$fa-var-jira: \f7b1; +$fa-var-docker: \f395; +$fa-var-screenpal: \e570; +$fa-var-bluetooth: \f293; +$fa-var-gitter: \f426; +$fa-var-d-and-d: \f38d; +$fa-var-microblog: \e01a; +$fa-var-cc-diners-club: \f24c; +$fa-var-gg-circle: \f261; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-kickstarter-k: \f3bc; +$fa-var-yandex: \f413; +$fa-var-readme: \f4d5; +$fa-var-html5: \f13b; +$fa-var-sellsy: \f213; +$fa-var-sass: \f41e; +$fa-var-wirsindhandwerk: \e2d0; +$fa-var-wsh: \e2d0; +$fa-var-buromobelexperte: \f37f; +$fa-var-salesforce: \f83b; +$fa-var-octopus-deploy: \e082; +$fa-var-medapps: \f3c6; +$fa-var-ns8: \f3d5; +$fa-var-pinterest-p: \f231; +$fa-var-apper: \f371; +$fa-var-fort-awesome: \f286; +$fa-var-waze: \f83f; +$fa-var-cc-jcb: \f24b; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ab; +$fa-var-fantasy-flight-games: \f6dc; +$fa-var-rust: \e07a; +$fa-var-wix: \f5cf; +$fa-var-square-behance: \f1b5; +$fa-var-behance-square: \f1b5; +$fa-var-supple: \f3f9; +$fa-var-rebel: \f1d0; +$fa-var-css3: \f13c; +$fa-var-staylinked: \f3f5; +$fa-var-kaggle: \f5fa; +$fa-var-space-awesome: \e5ac; +$fa-var-deviantart: \f1bd; +$fa-var-cpanel: \f388; +$fa-var-goodreads-g: \f3a9; +$fa-var-square-git: \f1d2; +$fa-var-git-square: \f1d2; +$fa-var-square-tumblr: \f174; +$fa-var-tumblr-square: \f174; +$fa-var-trello: \f181; +$fa-var-creative-commons-nc-jp: \f4ea; +$fa-var-get-pocket: \f265; +$fa-var-perbyte: \e083; +$fa-var-grunt: \f3ad; +$fa-var-weebly: \f5cc; +$fa-var-connectdevelop: \f20e; +$fa-var-leanpub: \f212; +$fa-var-black-tie: \f27e; +$fa-var-themeco: \f5c6; +$fa-var-python: \f3e2; +$fa-var-android: \f17b; +$fa-var-bots: \e340; +$fa-var-free-code-camp: \f2c5; +$fa-var-hornbill: \f592; +$fa-var-js: \f3b8; +$fa-var-ideal: \e013; +$fa-var-git: \f1d3; +$fa-var-dev: \f6cc; +$fa-var-sketch: \f7c6; +$fa-var-yandex-international: \f414; +$fa-var-cc-amex: \f1f3; +$fa-var-uber: \f402; +$fa-var-github: \f09b; +$fa-var-php: \f457; +$fa-var-alipay: \f642; +$fa-var-youtube: \f167; +$fa-var-skyatlas: \f216; +$fa-var-firefox-browser: \e007; +$fa-var-replyd: \f3e6; +$fa-var-suse: \f7d6; +$fa-var-jenkins: \f3b6; +$fa-var-twitter: \f099; +$fa-var-rockrms: \f3e9; +$fa-var-pinterest: \f0d2; +$fa-var-buffer: \f837; +$fa-var-npm: \f3d4; +$fa-var-yammer: \f840; +$fa-var-btc: \f15a; +$fa-var-dribbble: \f17d; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-internet-explorer: \f26b; +$fa-var-stubber: \e5c7; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f2c6; +$fa-var-old-republic: \f510; +$fa-var-odysee: \e5c6; +$fa-var-square-whatsapp: \f40c; +$fa-var-whatsapp-square: \f40c; +$fa-var-node-js: \f3d3; +$fa-var-edge-legacy: \e078; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f198; +$fa-var-medrt: \f3c8; +$fa-var-usb: \f287; +$fa-var-tumblr: \f173; +$fa-var-vaadin: \f408; +$fa-var-quora: \f2c4; +$fa-var-square-x-twitter: \e61a; +$fa-var-reacteurope: \f75d; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f23a; +$fa-var-amilia: \f36d; +$fa-var-mixcloud: \f289; +$fa-var-flipboard: \f44d; +$fa-var-viacoin: \f237; +$fa-var-critical-role: \f6c9; +$fa-var-sitrox: \e44a; +$fa-var-discourse: \f393; +$fa-var-joomla: \f1aa; +$fa-var-mastodon: \f4f6; +$fa-var-airbnb: \f834; +$fa-var-wolf-pack-battalion: \f514; +$fa-var-buy-n-large: \f8a6; +$fa-var-gulp: \f3ae; +$fa-var-creative-commons-sampling-plus: \f4f1; +$fa-var-strava: \f428; +$fa-var-ember: \f423; +$fa-var-canadian-maple-leaf: \f785; +$fa-var-teamspeak: \f4f9; +$fa-var-pushed: \f3e1; +$fa-var-wordpress-simple: \f411; +$fa-var-nutritionix: \f3d6; +$fa-var-wodu: \e088; +$fa-var-google-pay: \e079; +$fa-var-intercom: \f7af; +$fa-var-zhihu: \f63f; +$fa-var-korvue: \f42f; +$fa-var-pix: \e43a; +$fa-var-steam-symbol: \f3f6; + +$fa-icons: ( + "0": $fa-var-0, + "1": $fa-var-1, + "2": $fa-var-2, + "3": $fa-var-3, + "4": $fa-var-4, + "5": $fa-var-5, + "6": $fa-var-6, + "7": $fa-var-7, + "8": $fa-var-8, + "9": $fa-var-9, + "fill-drip": $fa-var-fill-drip, + "arrows-to-circle": $fa-var-arrows-to-circle, + "circle-chevron-right": $fa-var-circle-chevron-right, + "chevron-circle-right": $fa-var-chevron-circle-right, + "at": $fa-var-at, + "trash-can": $fa-var-trash-can, + "trash-alt": $fa-var-trash-alt, + "text-height": $fa-var-text-height, + "user-xmark": $fa-var-user-xmark, + "user-times": $fa-var-user-times, + "stethoscope": $fa-var-stethoscope, + "message": $fa-var-message, + "comment-alt": $fa-var-comment-alt, + "info": $fa-var-info, + "down-left-and-up-right-to-center": $fa-var-down-left-and-up-right-to-center, + "compress-alt": $fa-var-compress-alt, + "explosion": $fa-var-explosion, + "file-lines": $fa-var-file-lines, + "file-alt": $fa-var-file-alt, + "file-text": $fa-var-file-text, + "wave-square": $fa-var-wave-square, + "ring": $fa-var-ring, + "building-un": $fa-var-building-un, + "dice-three": $fa-var-dice-three, + "calendar-days": $fa-var-calendar-days, + "calendar-alt": $fa-var-calendar-alt, + "anchor-circle-check": $fa-var-anchor-circle-check, + "building-circle-arrow-right": $fa-var-building-circle-arrow-right, + "volleyball": $fa-var-volleyball, + "volleyball-ball": $fa-var-volleyball-ball, + "arrows-up-to-line": $fa-var-arrows-up-to-line, + "sort-down": $fa-var-sort-down, + "sort-desc": $fa-var-sort-desc, + "circle-minus": $fa-var-circle-minus, + "minus-circle": $fa-var-minus-circle, + "door-open": $fa-var-door-open, + "right-from-bracket": $fa-var-right-from-bracket, + "sign-out-alt": $fa-var-sign-out-alt, + "atom": $fa-var-atom, + "soap": $fa-var-soap, + "icons": $fa-var-icons, + "heart-music-camera-bolt": $fa-var-heart-music-camera-bolt, + "microphone-lines-slash": $fa-var-microphone-lines-slash, + "microphone-alt-slash": $fa-var-microphone-alt-slash, + "bridge-circle-check": $fa-var-bridge-circle-check, + "pump-medical": $fa-var-pump-medical, + "fingerprint": $fa-var-fingerprint, + "hand-point-right": $fa-var-hand-point-right, + "magnifying-glass-location": $fa-var-magnifying-glass-location, + "search-location": $fa-var-search-location, + "forward-step": $fa-var-forward-step, + "step-forward": $fa-var-step-forward, + "face-smile-beam": $fa-var-face-smile-beam, + "smile-beam": $fa-var-smile-beam, + "flag-checkered": $fa-var-flag-checkered, + "football": $fa-var-football, + "football-ball": $fa-var-football-ball, + "school-circle-exclamation": $fa-var-school-circle-exclamation, + "crop": $fa-var-crop, + "angles-down": $fa-var-angles-down, + "angle-double-down": $fa-var-angle-double-down, + "users-rectangle": $fa-var-users-rectangle, + "people-roof": $fa-var-people-roof, + "people-line": $fa-var-people-line, + "beer-mug-empty": $fa-var-beer-mug-empty, + "beer": $fa-var-beer, + "diagram-predecessor": $fa-var-diagram-predecessor, + "arrow-up-long": $fa-var-arrow-up-long, + "long-arrow-up": $fa-var-long-arrow-up, + "fire-flame-simple": $fa-var-fire-flame-simple, + "burn": $fa-var-burn, + "person": $fa-var-person, + "male": $fa-var-male, + "laptop": $fa-var-laptop, + "file-csv": $fa-var-file-csv, + "menorah": $fa-var-menorah, + "truck-plane": $fa-var-truck-plane, + "record-vinyl": $fa-var-record-vinyl, + "face-grin-stars": $fa-var-face-grin-stars, + "grin-stars": $fa-var-grin-stars, + "bong": $fa-var-bong, + "spaghetti-monster-flying": $fa-var-spaghetti-monster-flying, + "pastafarianism": $fa-var-pastafarianism, + "arrow-down-up-across-line": $fa-var-arrow-down-up-across-line, + "spoon": $fa-var-spoon, + "utensil-spoon": $fa-var-utensil-spoon, + "jar-wheat": $fa-var-jar-wheat, + "envelopes-bulk": $fa-var-envelopes-bulk, + "mail-bulk": $fa-var-mail-bulk, + "file-circle-exclamation": $fa-var-file-circle-exclamation, + "circle-h": $fa-var-circle-h, + "hospital-symbol": $fa-var-hospital-symbol, + "pager": $fa-var-pager, + "address-book": $fa-var-address-book, + "contact-book": $fa-var-contact-book, + "strikethrough": $fa-var-strikethrough, + "k": $fa-var-k, + "landmark-flag": $fa-var-landmark-flag, + "pencil": $fa-var-pencil, + "pencil-alt": $fa-var-pencil-alt, + "backward": $fa-var-backward, + "caret-right": $fa-var-caret-right, + "comments": $fa-var-comments, + "paste": $fa-var-paste, + "file-clipboard": $fa-var-file-clipboard, + "code-pull-request": $fa-var-code-pull-request, + "clipboard-list": $fa-var-clipboard-list, + "truck-ramp-box": $fa-var-truck-ramp-box, + "truck-loading": $fa-var-truck-loading, + "user-check": $fa-var-user-check, + "vial-virus": $fa-var-vial-virus, + "sheet-plastic": $fa-var-sheet-plastic, + "blog": $fa-var-blog, + "user-ninja": $fa-var-user-ninja, + "person-arrow-up-from-line": $fa-var-person-arrow-up-from-line, + "scroll-torah": $fa-var-scroll-torah, + "torah": $fa-var-torah, + "broom-ball": $fa-var-broom-ball, + "quidditch": $fa-var-quidditch, + "quidditch-broom-ball": $fa-var-quidditch-broom-ball, + "toggle-off": $fa-var-toggle-off, + "box-archive": $fa-var-box-archive, + "archive": $fa-var-archive, + "person-drowning": $fa-var-person-drowning, + "arrow-down-9-1": $fa-var-arrow-down-9-1, + "sort-numeric-desc": $fa-var-sort-numeric-desc, + "sort-numeric-down-alt": $fa-var-sort-numeric-down-alt, + "face-grin-tongue-squint": $fa-var-face-grin-tongue-squint, + "grin-tongue-squint": $fa-var-grin-tongue-squint, + "spray-can": $fa-var-spray-can, + "truck-monster": $fa-var-truck-monster, + "w": $fa-var-w, + "earth-africa": $fa-var-earth-africa, + "globe-africa": $fa-var-globe-africa, + "rainbow": $fa-var-rainbow, + "circle-notch": $fa-var-circle-notch, + "tablet-screen-button": $fa-var-tablet-screen-button, + "tablet-alt": $fa-var-tablet-alt, + "paw": $fa-var-paw, + "cloud": $fa-var-cloud, + "trowel-bricks": $fa-var-trowel-bricks, + "face-flushed": $fa-var-face-flushed, + "flushed": $fa-var-flushed, + "hospital-user": $fa-var-hospital-user, + "tent-arrow-left-right": $fa-var-tent-arrow-left-right, + "gavel": $fa-var-gavel, + "legal": $fa-var-legal, + "binoculars": $fa-var-binoculars, + "microphone-slash": $fa-var-microphone-slash, + "box-tissue": $fa-var-box-tissue, + "motorcycle": $fa-var-motorcycle, + "bell-concierge": $fa-var-bell-concierge, + "concierge-bell": $fa-var-concierge-bell, + "pen-ruler": $fa-var-pen-ruler, + "pencil-ruler": $fa-var-pencil-ruler, + "people-arrows": $fa-var-people-arrows, + "people-arrows-left-right": $fa-var-people-arrows-left-right, + "mars-and-venus-burst": $fa-var-mars-and-venus-burst, + "square-caret-right": $fa-var-square-caret-right, + "caret-square-right": $fa-var-caret-square-right, + "scissors": $fa-var-scissors, + "cut": $fa-var-cut, + "sun-plant-wilt": $fa-var-sun-plant-wilt, + "toilets-portable": $fa-var-toilets-portable, + "hockey-puck": $fa-var-hockey-puck, + "table": $fa-var-table, + "magnifying-glass-arrow-right": $fa-var-magnifying-glass-arrow-right, + "tachograph-digital": $fa-var-tachograph-digital, + "digital-tachograph": $fa-var-digital-tachograph, + "users-slash": $fa-var-users-slash, + "clover": $fa-var-clover, + "reply": $fa-var-reply, + "mail-reply": $fa-var-mail-reply, + "star-and-crescent": $fa-var-star-and-crescent, + "house-fire": $fa-var-house-fire, + "square-minus": $fa-var-square-minus, + "minus-square": $fa-var-minus-square, + "helicopter": $fa-var-helicopter, + "compass": $fa-var-compass, + "square-caret-down": $fa-var-square-caret-down, + "caret-square-down": $fa-var-caret-square-down, + "file-circle-question": $fa-var-file-circle-question, + "laptop-code": $fa-var-laptop-code, + "swatchbook": $fa-var-swatchbook, + "prescription-bottle": $fa-var-prescription-bottle, + "bars": $fa-var-bars, + "navicon": $fa-var-navicon, + "people-group": $fa-var-people-group, + "hourglass-end": $fa-var-hourglass-end, + "hourglass-3": $fa-var-hourglass-3, + "heart-crack": $fa-var-heart-crack, + "heart-broken": $fa-var-heart-broken, + "square-up-right": $fa-var-square-up-right, + "external-link-square-alt": $fa-var-external-link-square-alt, + "face-kiss-beam": $fa-var-face-kiss-beam, + "kiss-beam": $fa-var-kiss-beam, + "film": $fa-var-film, + "ruler-horizontal": $fa-var-ruler-horizontal, + "people-robbery": $fa-var-people-robbery, + "lightbulb": $fa-var-lightbulb, + "caret-left": $fa-var-caret-left, + "circle-exclamation": $fa-var-circle-exclamation, + "exclamation-circle": $fa-var-exclamation-circle, + "school-circle-xmark": $fa-var-school-circle-xmark, + "arrow-right-from-bracket": $fa-var-arrow-right-from-bracket, + "sign-out": $fa-var-sign-out, + "circle-chevron-down": $fa-var-circle-chevron-down, + "chevron-circle-down": $fa-var-chevron-circle-down, + "unlock-keyhole": $fa-var-unlock-keyhole, + "unlock-alt": $fa-var-unlock-alt, + "cloud-showers-heavy": $fa-var-cloud-showers-heavy, + "headphones-simple": $fa-var-headphones-simple, + "headphones-alt": $fa-var-headphones-alt, + "sitemap": $fa-var-sitemap, + "circle-dollar-to-slot": $fa-var-circle-dollar-to-slot, + "donate": $fa-var-donate, + "memory": $fa-var-memory, + "road-spikes": $fa-var-road-spikes, + "fire-burner": $fa-var-fire-burner, + "flag": $fa-var-flag, + "hanukiah": $fa-var-hanukiah, + "feather": $fa-var-feather, + "volume-low": $fa-var-volume-low, + "volume-down": $fa-var-volume-down, + "comment-slash": $fa-var-comment-slash, + "cloud-sun-rain": $fa-var-cloud-sun-rain, + "compress": $fa-var-compress, + "wheat-awn": $fa-var-wheat-awn, + "wheat-alt": $fa-var-wheat-alt, + "ankh": $fa-var-ankh, + "hands-holding-child": $fa-var-hands-holding-child, + "asterisk": $fa-var-asterisk, + "square-check": $fa-var-square-check, + "check-square": $fa-var-check-square, + "peseta-sign": $fa-var-peseta-sign, + "heading": $fa-var-heading, + "header": $fa-var-header, + "ghost": $fa-var-ghost, + "list": $fa-var-list, + "list-squares": $fa-var-list-squares, + "square-phone-flip": $fa-var-square-phone-flip, + "phone-square-alt": $fa-var-phone-square-alt, + "cart-plus": $fa-var-cart-plus, + "gamepad": $fa-var-gamepad, + "circle-dot": $fa-var-circle-dot, + "dot-circle": $fa-var-dot-circle, + "face-dizzy": $fa-var-face-dizzy, + "dizzy": $fa-var-dizzy, + "egg": $fa-var-egg, + "house-medical-circle-xmark": $fa-var-house-medical-circle-xmark, + "campground": $fa-var-campground, + "folder-plus": $fa-var-folder-plus, + "futbol": $fa-var-futbol, + "futbol-ball": $fa-var-futbol-ball, + "soccer-ball": $fa-var-soccer-ball, + "paintbrush": $fa-var-paintbrush, + "paint-brush": $fa-var-paint-brush, + "lock": $fa-var-lock, + "gas-pump": $fa-var-gas-pump, + "hot-tub-person": $fa-var-hot-tub-person, + "hot-tub": $fa-var-hot-tub, + "map-location": $fa-var-map-location, + "map-marked": $fa-var-map-marked, + "house-flood-water": $fa-var-house-flood-water, + "tree": $fa-var-tree, + "bridge-lock": $fa-var-bridge-lock, + "sack-dollar": $fa-var-sack-dollar, + "pen-to-square": $fa-var-pen-to-square, + "edit": $fa-var-edit, + "car-side": $fa-var-car-side, + "share-nodes": $fa-var-share-nodes, + "share-alt": $fa-var-share-alt, + "heart-circle-minus": $fa-var-heart-circle-minus, + "hourglass-half": $fa-var-hourglass-half, + "hourglass-2": $fa-var-hourglass-2, + "microscope": $fa-var-microscope, + "sink": $fa-var-sink, + "bag-shopping": $fa-var-bag-shopping, + "shopping-bag": $fa-var-shopping-bag, + "arrow-down-z-a": $fa-var-arrow-down-z-a, + "sort-alpha-desc": $fa-var-sort-alpha-desc, + "sort-alpha-down-alt": $fa-var-sort-alpha-down-alt, + "mitten": $fa-var-mitten, + "person-rays": $fa-var-person-rays, + "users": $fa-var-users, + "eye-slash": $fa-var-eye-slash, + "flask-vial": $fa-var-flask-vial, + "hand": $fa-var-hand, + "hand-paper": $fa-var-hand-paper, + "om": $fa-var-om, + "worm": $fa-var-worm, + "house-circle-xmark": $fa-var-house-circle-xmark, + "plug": $fa-var-plug, + "chevron-up": $fa-var-chevron-up, + "hand-spock": $fa-var-hand-spock, + "stopwatch": $fa-var-stopwatch, + "face-kiss": $fa-var-face-kiss, + "kiss": $fa-var-kiss, + "bridge-circle-xmark": $fa-var-bridge-circle-xmark, + "face-grin-tongue": $fa-var-face-grin-tongue, + "grin-tongue": $fa-var-grin-tongue, + "chess-bishop": $fa-var-chess-bishop, + "face-grin-wink": $fa-var-face-grin-wink, + "grin-wink": $fa-var-grin-wink, + "ear-deaf": $fa-var-ear-deaf, + "deaf": $fa-var-deaf, + "deafness": $fa-var-deafness, + "hard-of-hearing": $fa-var-hard-of-hearing, + "road-circle-check": $fa-var-road-circle-check, + "dice-five": $fa-var-dice-five, + "square-rss": $fa-var-square-rss, + "rss-square": $fa-var-rss-square, + "land-mine-on": $fa-var-land-mine-on, + "i-cursor": $fa-var-i-cursor, + "stamp": $fa-var-stamp, + "stairs": $fa-var-stairs, + "i": $fa-var-i, + "hryvnia-sign": $fa-var-hryvnia-sign, + "hryvnia": $fa-var-hryvnia, + "pills": $fa-var-pills, + "face-grin-wide": $fa-var-face-grin-wide, + "grin-alt": $fa-var-grin-alt, + "tooth": $fa-var-tooth, + "v": $fa-var-v, + "bangladeshi-taka-sign": $fa-var-bangladeshi-taka-sign, + "bicycle": $fa-var-bicycle, + "staff-snake": $fa-var-staff-snake, + "rod-asclepius": $fa-var-rod-asclepius, + "rod-snake": $fa-var-rod-snake, + "staff-aesculapius": $fa-var-staff-aesculapius, + "head-side-cough-slash": $fa-var-head-side-cough-slash, + "truck-medical": $fa-var-truck-medical, + "ambulance": $fa-var-ambulance, + "wheat-awn-circle-exclamation": $fa-var-wheat-awn-circle-exclamation, + "snowman": $fa-var-snowman, + "mortar-pestle": $fa-var-mortar-pestle, + "road-barrier": $fa-var-road-barrier, + "school": $fa-var-school, + "igloo": $fa-var-igloo, + "joint": $fa-var-joint, + "angle-right": $fa-var-angle-right, + "horse": $fa-var-horse, + "q": $fa-var-q, + "g": $fa-var-g, + "notes-medical": $fa-var-notes-medical, + "temperature-half": $fa-var-temperature-half, + "temperature-2": $fa-var-temperature-2, + "thermometer-2": $fa-var-thermometer-2, + "thermometer-half": $fa-var-thermometer-half, + "dong-sign": $fa-var-dong-sign, + "capsules": $fa-var-capsules, + "poo-storm": $fa-var-poo-storm, + "poo-bolt": $fa-var-poo-bolt, + "face-frown-open": $fa-var-face-frown-open, + "frown-open": $fa-var-frown-open, + "hand-point-up": $fa-var-hand-point-up, + "money-bill": $fa-var-money-bill, + "bookmark": $fa-var-bookmark, + "align-justify": $fa-var-align-justify, + "umbrella-beach": $fa-var-umbrella-beach, + "helmet-un": $fa-var-helmet-un, + "bullseye": $fa-var-bullseye, + "bacon": $fa-var-bacon, + "hand-point-down": $fa-var-hand-point-down, + "arrow-up-from-bracket": $fa-var-arrow-up-from-bracket, + "folder": $fa-var-folder, + "folder-blank": $fa-var-folder-blank, + "file-waveform": $fa-var-file-waveform, + "file-medical-alt": $fa-var-file-medical-alt, + "radiation": $fa-var-radiation, + "chart-simple": $fa-var-chart-simple, + "mars-stroke": $fa-var-mars-stroke, + "vial": $fa-var-vial, + "gauge": $fa-var-gauge, + "dashboard": $fa-var-dashboard, + "gauge-med": $fa-var-gauge-med, + "tachometer-alt-average": $fa-var-tachometer-alt-average, + "wand-magic-sparkles": $fa-var-wand-magic-sparkles, + "magic-wand-sparkles": $fa-var-magic-wand-sparkles, + "e": $fa-var-e, + "pen-clip": $fa-var-pen-clip, + "pen-alt": $fa-var-pen-alt, + "bridge-circle-exclamation": $fa-var-bridge-circle-exclamation, + "user": $fa-var-user, + "school-circle-check": $fa-var-school-circle-check, + "dumpster": $fa-var-dumpster, + "van-shuttle": $fa-var-van-shuttle, + "shuttle-van": $fa-var-shuttle-van, + "building-user": $fa-var-building-user, + "square-caret-left": $fa-var-square-caret-left, + "caret-square-left": $fa-var-caret-square-left, + "highlighter": $fa-var-highlighter, + "key": $fa-var-key, + "bullhorn": $fa-var-bullhorn, + "globe": $fa-var-globe, + "synagogue": $fa-var-synagogue, + "person-half-dress": $fa-var-person-half-dress, + "road-bridge": $fa-var-road-bridge, + "location-arrow": $fa-var-location-arrow, + "c": $fa-var-c, + "tablet-button": $fa-var-tablet-button, + "building-lock": $fa-var-building-lock, + "pizza-slice": $fa-var-pizza-slice, + "money-bill-wave": $fa-var-money-bill-wave, + "chart-area": $fa-var-chart-area, + "area-chart": $fa-var-area-chart, + "house-flag": $fa-var-house-flag, + "person-circle-minus": $fa-var-person-circle-minus, + "ban": $fa-var-ban, + "cancel": $fa-var-cancel, + "camera-rotate": $fa-var-camera-rotate, + "spray-can-sparkles": $fa-var-spray-can-sparkles, + "air-freshener": $fa-var-air-freshener, + "star": $fa-var-star, + "repeat": $fa-var-repeat, + "cross": $fa-var-cross, + "box": $fa-var-box, + "venus-mars": $fa-var-venus-mars, + "arrow-pointer": $fa-var-arrow-pointer, + "mouse-pointer": $fa-var-mouse-pointer, + "maximize": $fa-var-maximize, + "expand-arrows-alt": $fa-var-expand-arrows-alt, + "charging-station": $fa-var-charging-station, + "shapes": $fa-var-shapes, + "triangle-circle-square": $fa-var-triangle-circle-square, + "shuffle": $fa-var-shuffle, + "random": $fa-var-random, + "person-running": $fa-var-person-running, + "running": $fa-var-running, + "mobile-retro": $fa-var-mobile-retro, + "grip-lines-vertical": $fa-var-grip-lines-vertical, + "spider": $fa-var-spider, + "hands-bound": $fa-var-hands-bound, + "file-invoice-dollar": $fa-var-file-invoice-dollar, + "plane-circle-exclamation": $fa-var-plane-circle-exclamation, + "x-ray": $fa-var-x-ray, + "spell-check": $fa-var-spell-check, + "slash": $fa-var-slash, + "computer-mouse": $fa-var-computer-mouse, + "mouse": $fa-var-mouse, + "arrow-right-to-bracket": $fa-var-arrow-right-to-bracket, + "sign-in": $fa-var-sign-in, + "shop-slash": $fa-var-shop-slash, + "store-alt-slash": $fa-var-store-alt-slash, + "server": $fa-var-server, + "virus-covid-slash": $fa-var-virus-covid-slash, + "shop-lock": $fa-var-shop-lock, + "hourglass-start": $fa-var-hourglass-start, + "hourglass-1": $fa-var-hourglass-1, + "blender-phone": $fa-var-blender-phone, + "building-wheat": $fa-var-building-wheat, + "person-breastfeeding": $fa-var-person-breastfeeding, + "right-to-bracket": $fa-var-right-to-bracket, + "sign-in-alt": $fa-var-sign-in-alt, + "venus": $fa-var-venus, + "passport": $fa-var-passport, + "heart-pulse": $fa-var-heart-pulse, + "heartbeat": $fa-var-heartbeat, + "people-carry-box": $fa-var-people-carry-box, + "people-carry": $fa-var-people-carry, + "temperature-high": $fa-var-temperature-high, + "microchip": $fa-var-microchip, + "crown": $fa-var-crown, + "weight-hanging": $fa-var-weight-hanging, + "xmarks-lines": $fa-var-xmarks-lines, + "file-prescription": $fa-var-file-prescription, + "weight-scale": $fa-var-weight-scale, + "weight": $fa-var-weight, + "user-group": $fa-var-user-group, + "user-friends": $fa-var-user-friends, + "arrow-up-a-z": $fa-var-arrow-up-a-z, + "sort-alpha-up": $fa-var-sort-alpha-up, + "chess-knight": $fa-var-chess-knight, + "face-laugh-squint": $fa-var-face-laugh-squint, + "laugh-squint": $fa-var-laugh-squint, + "wheelchair": $fa-var-wheelchair, + "circle-arrow-up": $fa-var-circle-arrow-up, + "arrow-circle-up": $fa-var-arrow-circle-up, + "toggle-on": $fa-var-toggle-on, + "person-walking": $fa-var-person-walking, + "walking": $fa-var-walking, + "l": $fa-var-l, + "fire": $fa-var-fire, + "bed-pulse": $fa-var-bed-pulse, + "procedures": $fa-var-procedures, + "shuttle-space": $fa-var-shuttle-space, + "space-shuttle": $fa-var-space-shuttle, + "face-laugh": $fa-var-face-laugh, + "laugh": $fa-var-laugh, + "folder-open": $fa-var-folder-open, + "heart-circle-plus": $fa-var-heart-circle-plus, + "code-fork": $fa-var-code-fork, + "city": $fa-var-city, + "microphone-lines": $fa-var-microphone-lines, + "microphone-alt": $fa-var-microphone-alt, + "pepper-hot": $fa-var-pepper-hot, + "unlock": $fa-var-unlock, + "colon-sign": $fa-var-colon-sign, + "headset": $fa-var-headset, + "store-slash": $fa-var-store-slash, + "road-circle-xmark": $fa-var-road-circle-xmark, + "user-minus": $fa-var-user-minus, + "mars-stroke-up": $fa-var-mars-stroke-up, + "mars-stroke-v": $fa-var-mars-stroke-v, + "champagne-glasses": $fa-var-champagne-glasses, + "glass-cheers": $fa-var-glass-cheers, + "clipboard": $fa-var-clipboard, + "house-circle-exclamation": $fa-var-house-circle-exclamation, + "file-arrow-up": $fa-var-file-arrow-up, + "file-upload": $fa-var-file-upload, + "wifi": $fa-var-wifi, + "wifi-3": $fa-var-wifi-3, + "wifi-strong": $fa-var-wifi-strong, + "bath": $fa-var-bath, + "bathtub": $fa-var-bathtub, + "underline": $fa-var-underline, + "user-pen": $fa-var-user-pen, + "user-edit": $fa-var-user-edit, + "signature": $fa-var-signature, + "stroopwafel": $fa-var-stroopwafel, + "bold": $fa-var-bold, + "anchor-lock": $fa-var-anchor-lock, + "building-ngo": $fa-var-building-ngo, + "manat-sign": $fa-var-manat-sign, + "not-equal": $fa-var-not-equal, + "border-top-left": $fa-var-border-top-left, + "border-style": $fa-var-border-style, + "map-location-dot": $fa-var-map-location-dot, + "map-marked-alt": $fa-var-map-marked-alt, + "jedi": $fa-var-jedi, + "square-poll-vertical": $fa-var-square-poll-vertical, + "poll": $fa-var-poll, + "mug-hot": $fa-var-mug-hot, + "car-battery": $fa-var-car-battery, + "battery-car": $fa-var-battery-car, + "gift": $fa-var-gift, + "dice-two": $fa-var-dice-two, + "chess-queen": $fa-var-chess-queen, + "glasses": $fa-var-glasses, + "chess-board": $fa-var-chess-board, + "building-circle-check": $fa-var-building-circle-check, + "person-chalkboard": $fa-var-person-chalkboard, + "mars-stroke-right": $fa-var-mars-stroke-right, + "mars-stroke-h": $fa-var-mars-stroke-h, + "hand-back-fist": $fa-var-hand-back-fist, + "hand-rock": $fa-var-hand-rock, + "square-caret-up": $fa-var-square-caret-up, + "caret-square-up": $fa-var-caret-square-up, + "cloud-showers-water": $fa-var-cloud-showers-water, + "chart-bar": $fa-var-chart-bar, + "bar-chart": $fa-var-bar-chart, + "hands-bubbles": $fa-var-hands-bubbles, + "hands-wash": $fa-var-hands-wash, + "less-than-equal": $fa-var-less-than-equal, + "train": $fa-var-train, + "eye-low-vision": $fa-var-eye-low-vision, + "low-vision": $fa-var-low-vision, + "crow": $fa-var-crow, + "sailboat": $fa-var-sailboat, + "window-restore": $fa-var-window-restore, + "square-plus": $fa-var-square-plus, + "plus-square": $fa-var-plus-square, + "torii-gate": $fa-var-torii-gate, + "frog": $fa-var-frog, + "bucket": $fa-var-bucket, + "image": $fa-var-image, + "microphone": $fa-var-microphone, + "cow": $fa-var-cow, + "caret-up": $fa-var-caret-up, + "screwdriver": $fa-var-screwdriver, + "folder-closed": $fa-var-folder-closed, + "house-tsunami": $fa-var-house-tsunami, + "square-nfi": $fa-var-square-nfi, + "arrow-up-from-ground-water": $fa-var-arrow-up-from-ground-water, + "martini-glass": $fa-var-martini-glass, + "glass-martini-alt": $fa-var-glass-martini-alt, + "rotate-left": $fa-var-rotate-left, + "rotate-back": $fa-var-rotate-back, + "rotate-backward": $fa-var-rotate-backward, + "undo-alt": $fa-var-undo-alt, + "table-columns": $fa-var-table-columns, + "columns": $fa-var-columns, + "lemon": $fa-var-lemon, + "head-side-mask": $fa-var-head-side-mask, + "handshake": $fa-var-handshake, + "gem": $fa-var-gem, + "dolly": $fa-var-dolly, + "dolly-box": $fa-var-dolly-box, + "smoking": $fa-var-smoking, + "minimize": $fa-var-minimize, + "compress-arrows-alt": $fa-var-compress-arrows-alt, + "monument": $fa-var-monument, + "snowplow": $fa-var-snowplow, + "angles-right": $fa-var-angles-right, + "angle-double-right": $fa-var-angle-double-right, + "cannabis": $fa-var-cannabis, + "circle-play": $fa-var-circle-play, + "play-circle": $fa-var-play-circle, + "tablets": $fa-var-tablets, + "ethernet": $fa-var-ethernet, + "euro-sign": $fa-var-euro-sign, + "eur": $fa-var-eur, + "euro": $fa-var-euro, + "chair": $fa-var-chair, + "circle-check": $fa-var-circle-check, + "check-circle": $fa-var-check-circle, + "circle-stop": $fa-var-circle-stop, + "stop-circle": $fa-var-stop-circle, + "compass-drafting": $fa-var-compass-drafting, + "drafting-compass": $fa-var-drafting-compass, + "plate-wheat": $fa-var-plate-wheat, + "icicles": $fa-var-icicles, + "person-shelter": $fa-var-person-shelter, + "neuter": $fa-var-neuter, + "id-badge": $fa-var-id-badge, + "marker": $fa-var-marker, + "face-laugh-beam": $fa-var-face-laugh-beam, + "laugh-beam": $fa-var-laugh-beam, + "helicopter-symbol": $fa-var-helicopter-symbol, + "universal-access": $fa-var-universal-access, + "circle-chevron-up": $fa-var-circle-chevron-up, + "chevron-circle-up": $fa-var-chevron-circle-up, + "lari-sign": $fa-var-lari-sign, + "volcano": $fa-var-volcano, + "person-walking-dashed-line-arrow-right": $fa-var-person-walking-dashed-line-arrow-right, + "sterling-sign": $fa-var-sterling-sign, + "gbp": $fa-var-gbp, + "pound-sign": $fa-var-pound-sign, + "viruses": $fa-var-viruses, + "square-person-confined": $fa-var-square-person-confined, + "user-tie": $fa-var-user-tie, + "arrow-down-long": $fa-var-arrow-down-long, + "long-arrow-down": $fa-var-long-arrow-down, + "tent-arrow-down-to-line": $fa-var-tent-arrow-down-to-line, + "certificate": $fa-var-certificate, + "reply-all": $fa-var-reply-all, + "mail-reply-all": $fa-var-mail-reply-all, + "suitcase": $fa-var-suitcase, + "person-skating": $fa-var-person-skating, + "skating": $fa-var-skating, + "filter-circle-dollar": $fa-var-filter-circle-dollar, + "funnel-dollar": $fa-var-funnel-dollar, + "camera-retro": $fa-var-camera-retro, + "circle-arrow-down": $fa-var-circle-arrow-down, + "arrow-circle-down": $fa-var-arrow-circle-down, + "file-import": $fa-var-file-import, + "arrow-right-to-file": $fa-var-arrow-right-to-file, + "square-arrow-up-right": $fa-var-square-arrow-up-right, + "external-link-square": $fa-var-external-link-square, + "box-open": $fa-var-box-open, + "scroll": $fa-var-scroll, + "spa": $fa-var-spa, + "location-pin-lock": $fa-var-location-pin-lock, + "pause": $fa-var-pause, + "hill-avalanche": $fa-var-hill-avalanche, + "temperature-empty": $fa-var-temperature-empty, + "temperature-0": $fa-var-temperature-0, + "thermometer-0": $fa-var-thermometer-0, + "thermometer-empty": $fa-var-thermometer-empty, + "bomb": $fa-var-bomb, + "registered": $fa-var-registered, + "address-card": $fa-var-address-card, + "contact-card": $fa-var-contact-card, + "vcard": $fa-var-vcard, + "scale-unbalanced-flip": $fa-var-scale-unbalanced-flip, + "balance-scale-right": $fa-var-balance-scale-right, + "subscript": $fa-var-subscript, + "diamond-turn-right": $fa-var-diamond-turn-right, + "directions": $fa-var-directions, + "burst": $fa-var-burst, + "house-laptop": $fa-var-house-laptop, + "laptop-house": $fa-var-laptop-house, + "face-tired": $fa-var-face-tired, + "tired": $fa-var-tired, + "money-bills": $fa-var-money-bills, + "smog": $fa-var-smog, + "crutch": $fa-var-crutch, + "cloud-arrow-up": $fa-var-cloud-arrow-up, + "cloud-upload": $fa-var-cloud-upload, + "cloud-upload-alt": $fa-var-cloud-upload-alt, + "palette": $fa-var-palette, + "arrows-turn-right": $fa-var-arrows-turn-right, + "vest": $fa-var-vest, + "ferry": $fa-var-ferry, + "arrows-down-to-people": $fa-var-arrows-down-to-people, + "seedling": $fa-var-seedling, + "sprout": $fa-var-sprout, + "left-right": $fa-var-left-right, + "arrows-alt-h": $fa-var-arrows-alt-h, + "boxes-packing": $fa-var-boxes-packing, + "circle-arrow-left": $fa-var-circle-arrow-left, + "arrow-circle-left": $fa-var-arrow-circle-left, + "group-arrows-rotate": $fa-var-group-arrows-rotate, + "bowl-food": $fa-var-bowl-food, + "candy-cane": $fa-var-candy-cane, + "arrow-down-wide-short": $fa-var-arrow-down-wide-short, + "sort-amount-asc": $fa-var-sort-amount-asc, + "sort-amount-down": $fa-var-sort-amount-down, + "cloud-bolt": $fa-var-cloud-bolt, + "thunderstorm": $fa-var-thunderstorm, + "text-slash": $fa-var-text-slash, + "remove-format": $fa-var-remove-format, + "face-smile-wink": $fa-var-face-smile-wink, + "smile-wink": $fa-var-smile-wink, + "file-word": $fa-var-file-word, + "file-powerpoint": $fa-var-file-powerpoint, + "arrows-left-right": $fa-var-arrows-left-right, + "arrows-h": $fa-var-arrows-h, + "house-lock": $fa-var-house-lock, + "cloud-arrow-down": $fa-var-cloud-arrow-down, + "cloud-download": $fa-var-cloud-download, + "cloud-download-alt": $fa-var-cloud-download-alt, + "children": $fa-var-children, + "chalkboard": $fa-var-chalkboard, + "blackboard": $fa-var-blackboard, + "user-large-slash": $fa-var-user-large-slash, + "user-alt-slash": $fa-var-user-alt-slash, + "envelope-open": $fa-var-envelope-open, + "handshake-simple-slash": $fa-var-handshake-simple-slash, + "handshake-alt-slash": $fa-var-handshake-alt-slash, + "mattress-pillow": $fa-var-mattress-pillow, + "guarani-sign": $fa-var-guarani-sign, + "arrows-rotate": $fa-var-arrows-rotate, + "refresh": $fa-var-refresh, + "sync": $fa-var-sync, + "fire-extinguisher": $fa-var-fire-extinguisher, + "cruzeiro-sign": $fa-var-cruzeiro-sign, + "greater-than-equal": $fa-var-greater-than-equal, + "shield-halved": $fa-var-shield-halved, + "shield-alt": $fa-var-shield-alt, + "book-atlas": $fa-var-book-atlas, + "atlas": $fa-var-atlas, + "virus": $fa-var-virus, + "envelope-circle-check": $fa-var-envelope-circle-check, + "layer-group": $fa-var-layer-group, + "arrows-to-dot": $fa-var-arrows-to-dot, + "archway": $fa-var-archway, + "heart-circle-check": $fa-var-heart-circle-check, + "house-chimney-crack": $fa-var-house-chimney-crack, + "house-damage": $fa-var-house-damage, + "file-zipper": $fa-var-file-zipper, + "file-archive": $fa-var-file-archive, + "square": $fa-var-square, + "martini-glass-empty": $fa-var-martini-glass-empty, + "glass-martini": $fa-var-glass-martini, + "couch": $fa-var-couch, + "cedi-sign": $fa-var-cedi-sign, + "italic": $fa-var-italic, + "church": $fa-var-church, + "comments-dollar": $fa-var-comments-dollar, + "democrat": $fa-var-democrat, + "z": $fa-var-z, + "person-skiing": $fa-var-person-skiing, + "skiing": $fa-var-skiing, + "road-lock": $fa-var-road-lock, + "a": $fa-var-a, + "temperature-arrow-down": $fa-var-temperature-arrow-down, + "temperature-down": $fa-var-temperature-down, + "feather-pointed": $fa-var-feather-pointed, + "feather-alt": $fa-var-feather-alt, + "p": $fa-var-p, + "snowflake": $fa-var-snowflake, + "newspaper": $fa-var-newspaper, + "rectangle-ad": $fa-var-rectangle-ad, + "ad": $fa-var-ad, + "circle-arrow-right": $fa-var-circle-arrow-right, + "arrow-circle-right": $fa-var-arrow-circle-right, + "filter-circle-xmark": $fa-var-filter-circle-xmark, + "locust": $fa-var-locust, + "sort": $fa-var-sort, + "unsorted": $fa-var-unsorted, + "list-ol": $fa-var-list-ol, + "list-1-2": $fa-var-list-1-2, + "list-numeric": $fa-var-list-numeric, + "person-dress-burst": $fa-var-person-dress-burst, + "money-check-dollar": $fa-var-money-check-dollar, + "money-check-alt": $fa-var-money-check-alt, + "vector-square": $fa-var-vector-square, + "bread-slice": $fa-var-bread-slice, + "language": $fa-var-language, + "face-kiss-wink-heart": $fa-var-face-kiss-wink-heart, + "kiss-wink-heart": $fa-var-kiss-wink-heart, + "filter": $fa-var-filter, + "question": $fa-var-question, + "file-signature": $fa-var-file-signature, + "up-down-left-right": $fa-var-up-down-left-right, + "arrows-alt": $fa-var-arrows-alt, + "house-chimney-user": $fa-var-house-chimney-user, + "hand-holding-heart": $fa-var-hand-holding-heart, + "puzzle-piece": $fa-var-puzzle-piece, + "money-check": $fa-var-money-check, + "star-half-stroke": $fa-var-star-half-stroke, + "star-half-alt": $fa-var-star-half-alt, + "code": $fa-var-code, + "whiskey-glass": $fa-var-whiskey-glass, + "glass-whiskey": $fa-var-glass-whiskey, + "building-circle-exclamation": $fa-var-building-circle-exclamation, + "magnifying-glass-chart": $fa-var-magnifying-glass-chart, + "arrow-up-right-from-square": $fa-var-arrow-up-right-from-square, + "external-link": $fa-var-external-link, + "cubes-stacked": $fa-var-cubes-stacked, + "won-sign": $fa-var-won-sign, + "krw": $fa-var-krw, + "won": $fa-var-won, + "virus-covid": $fa-var-virus-covid, + "austral-sign": $fa-var-austral-sign, + "f": $fa-var-f, + "leaf": $fa-var-leaf, + "road": $fa-var-road, + "taxi": $fa-var-taxi, + "cab": $fa-var-cab, + "person-circle-plus": $fa-var-person-circle-plus, + "chart-pie": $fa-var-chart-pie, + "pie-chart": $fa-var-pie-chart, + "bolt-lightning": $fa-var-bolt-lightning, + "sack-xmark": $fa-var-sack-xmark, + "file-excel": $fa-var-file-excel, + "file-contract": $fa-var-file-contract, + "fish-fins": $fa-var-fish-fins, + "building-flag": $fa-var-building-flag, + "face-grin-beam": $fa-var-face-grin-beam, + "grin-beam": $fa-var-grin-beam, + "object-ungroup": $fa-var-object-ungroup, + "poop": $fa-var-poop, + "location-pin": $fa-var-location-pin, + "map-marker": $fa-var-map-marker, + "kaaba": $fa-var-kaaba, + "toilet-paper": $fa-var-toilet-paper, + "helmet-safety": $fa-var-helmet-safety, + "hard-hat": $fa-var-hard-hat, + "hat-hard": $fa-var-hat-hard, + "eject": $fa-var-eject, + "circle-right": $fa-var-circle-right, + "arrow-alt-circle-right": $fa-var-arrow-alt-circle-right, + "plane-circle-check": $fa-var-plane-circle-check, + "face-rolling-eyes": $fa-var-face-rolling-eyes, + "meh-rolling-eyes": $fa-var-meh-rolling-eyes, + "object-group": $fa-var-object-group, + "chart-line": $fa-var-chart-line, + "line-chart": $fa-var-line-chart, + "mask-ventilator": $fa-var-mask-ventilator, + "arrow-right": $fa-var-arrow-right, + "signs-post": $fa-var-signs-post, + "map-signs": $fa-var-map-signs, + "cash-register": $fa-var-cash-register, + "person-circle-question": $fa-var-person-circle-question, + "h": $fa-var-h, + "tarp": $fa-var-tarp, + "screwdriver-wrench": $fa-var-screwdriver-wrench, + "tools": $fa-var-tools, + "arrows-to-eye": $fa-var-arrows-to-eye, + "plug-circle-bolt": $fa-var-plug-circle-bolt, + "heart": $fa-var-heart, + "mars-and-venus": $fa-var-mars-and-venus, + "house-user": $fa-var-house-user, + "home-user": $fa-var-home-user, + "dumpster-fire": $fa-var-dumpster-fire, + "house-crack": $fa-var-house-crack, + "martini-glass-citrus": $fa-var-martini-glass-citrus, + "cocktail": $fa-var-cocktail, + "face-surprise": $fa-var-face-surprise, + "surprise": $fa-var-surprise, + "bottle-water": $fa-var-bottle-water, + "circle-pause": $fa-var-circle-pause, + "pause-circle": $fa-var-pause-circle, + "toilet-paper-slash": $fa-var-toilet-paper-slash, + "apple-whole": $fa-var-apple-whole, + "apple-alt": $fa-var-apple-alt, + "kitchen-set": $fa-var-kitchen-set, + "r": $fa-var-r, + "temperature-quarter": $fa-var-temperature-quarter, + "temperature-1": $fa-var-temperature-1, + "thermometer-1": $fa-var-thermometer-1, + "thermometer-quarter": $fa-var-thermometer-quarter, + "cube": $fa-var-cube, + "bitcoin-sign": $fa-var-bitcoin-sign, + "shield-dog": $fa-var-shield-dog, + "solar-panel": $fa-var-solar-panel, + "lock-open": $fa-var-lock-open, + "elevator": $fa-var-elevator, + "money-bill-transfer": $fa-var-money-bill-transfer, + "money-bill-trend-up": $fa-var-money-bill-trend-up, + "house-flood-water-circle-arrow-right": $fa-var-house-flood-water-circle-arrow-right, + "square-poll-horizontal": $fa-var-square-poll-horizontal, + "poll-h": $fa-var-poll-h, + "circle": $fa-var-circle, + "backward-fast": $fa-var-backward-fast, + "fast-backward": $fa-var-fast-backward, + "recycle": $fa-var-recycle, + "user-astronaut": $fa-var-user-astronaut, + "plane-slash": $fa-var-plane-slash, + "trademark": $fa-var-trademark, + "basketball": $fa-var-basketball, + "basketball-ball": $fa-var-basketball-ball, + "satellite-dish": $fa-var-satellite-dish, + "circle-up": $fa-var-circle-up, + "arrow-alt-circle-up": $fa-var-arrow-alt-circle-up, + "mobile-screen-button": $fa-var-mobile-screen-button, + "mobile-alt": $fa-var-mobile-alt, + "volume-high": $fa-var-volume-high, + "volume-up": $fa-var-volume-up, + "users-rays": $fa-var-users-rays, + "wallet": $fa-var-wallet, + "clipboard-check": $fa-var-clipboard-check, + "file-audio": $fa-var-file-audio, + "burger": $fa-var-burger, + "hamburger": $fa-var-hamburger, + "wrench": $fa-var-wrench, + "bugs": $fa-var-bugs, + "rupee-sign": $fa-var-rupee-sign, + "rupee": $fa-var-rupee, + "file-image": $fa-var-file-image, + "circle-question": $fa-var-circle-question, + "question-circle": $fa-var-question-circle, + "plane-departure": $fa-var-plane-departure, + "handshake-slash": $fa-var-handshake-slash, + "book-bookmark": $fa-var-book-bookmark, + "code-branch": $fa-var-code-branch, + "hat-cowboy": $fa-var-hat-cowboy, + "bridge": $fa-var-bridge, + "phone-flip": $fa-var-phone-flip, + "phone-alt": $fa-var-phone-alt, + "truck-front": $fa-var-truck-front, + "cat": $fa-var-cat, + "anchor-circle-exclamation": $fa-var-anchor-circle-exclamation, + "truck-field": $fa-var-truck-field, + "route": $fa-var-route, + "clipboard-question": $fa-var-clipboard-question, + "panorama": $fa-var-panorama, + "comment-medical": $fa-var-comment-medical, + "teeth-open": $fa-var-teeth-open, + "file-circle-minus": $fa-var-file-circle-minus, + "tags": $fa-var-tags, + "wine-glass": $fa-var-wine-glass, + "forward-fast": $fa-var-forward-fast, + "fast-forward": $fa-var-fast-forward, + "face-meh-blank": $fa-var-face-meh-blank, + "meh-blank": $fa-var-meh-blank, + "square-parking": $fa-var-square-parking, + "parking": $fa-var-parking, + "house-signal": $fa-var-house-signal, + "bars-progress": $fa-var-bars-progress, + "tasks-alt": $fa-var-tasks-alt, + "faucet-drip": $fa-var-faucet-drip, + "cart-flatbed": $fa-var-cart-flatbed, + "dolly-flatbed": $fa-var-dolly-flatbed, + "ban-smoking": $fa-var-ban-smoking, + "smoking-ban": $fa-var-smoking-ban, + "terminal": $fa-var-terminal, + "mobile-button": $fa-var-mobile-button, + "house-medical-flag": $fa-var-house-medical-flag, + "basket-shopping": $fa-var-basket-shopping, + "shopping-basket": $fa-var-shopping-basket, + "tape": $fa-var-tape, + "bus-simple": $fa-var-bus-simple, + "bus-alt": $fa-var-bus-alt, + "eye": $fa-var-eye, + "face-sad-cry": $fa-var-face-sad-cry, + "sad-cry": $fa-var-sad-cry, + "audio-description": $fa-var-audio-description, + "person-military-to-person": $fa-var-person-military-to-person, + "file-shield": $fa-var-file-shield, + "user-slash": $fa-var-user-slash, + "pen": $fa-var-pen, + "tower-observation": $fa-var-tower-observation, + "file-code": $fa-var-file-code, + "signal": $fa-var-signal, + "signal-5": $fa-var-signal-5, + "signal-perfect": $fa-var-signal-perfect, + "bus": $fa-var-bus, + "heart-circle-xmark": $fa-var-heart-circle-xmark, + "house-chimney": $fa-var-house-chimney, + "home-lg": $fa-var-home-lg, + "window-maximize": $fa-var-window-maximize, + "face-frown": $fa-var-face-frown, + "frown": $fa-var-frown, + "prescription": $fa-var-prescription, + "shop": $fa-var-shop, + "store-alt": $fa-var-store-alt, + "floppy-disk": $fa-var-floppy-disk, + "save": $fa-var-save, + "vihara": $fa-var-vihara, + "scale-unbalanced": $fa-var-scale-unbalanced, + "balance-scale-left": $fa-var-balance-scale-left, + "sort-up": $fa-var-sort-up, + "sort-asc": $fa-var-sort-asc, + "comment-dots": $fa-var-comment-dots, + "commenting": $fa-var-commenting, + "plant-wilt": $fa-var-plant-wilt, + "diamond": $fa-var-diamond, + "face-grin-squint": $fa-var-face-grin-squint, + "grin-squint": $fa-var-grin-squint, + "hand-holding-dollar": $fa-var-hand-holding-dollar, + "hand-holding-usd": $fa-var-hand-holding-usd, + "bacterium": $fa-var-bacterium, + "hand-pointer": $fa-var-hand-pointer, + "drum-steelpan": $fa-var-drum-steelpan, + "hand-scissors": $fa-var-hand-scissors, + "hands-praying": $fa-var-hands-praying, + "praying-hands": $fa-var-praying-hands, + "arrow-rotate-right": $fa-var-arrow-rotate-right, + "arrow-right-rotate": $fa-var-arrow-right-rotate, + "arrow-rotate-forward": $fa-var-arrow-rotate-forward, + "redo": $fa-var-redo, + "biohazard": $fa-var-biohazard, + "location-crosshairs": $fa-var-location-crosshairs, + "location": $fa-var-location, + "mars-double": $fa-var-mars-double, + "child-dress": $fa-var-child-dress, + "users-between-lines": $fa-var-users-between-lines, + "lungs-virus": $fa-var-lungs-virus, + "face-grin-tears": $fa-var-face-grin-tears, + "grin-tears": $fa-var-grin-tears, + "phone": $fa-var-phone, + "calendar-xmark": $fa-var-calendar-xmark, + "calendar-times": $fa-var-calendar-times, + "child-reaching": $fa-var-child-reaching, + "head-side-virus": $fa-var-head-side-virus, + "user-gear": $fa-var-user-gear, + "user-cog": $fa-var-user-cog, + "arrow-up-1-9": $fa-var-arrow-up-1-9, + "sort-numeric-up": $fa-var-sort-numeric-up, + "door-closed": $fa-var-door-closed, + "shield-virus": $fa-var-shield-virus, + "dice-six": $fa-var-dice-six, + "mosquito-net": $fa-var-mosquito-net, + "bridge-water": $fa-var-bridge-water, + "person-booth": $fa-var-person-booth, + "text-width": $fa-var-text-width, + "hat-wizard": $fa-var-hat-wizard, + "pen-fancy": $fa-var-pen-fancy, + "person-digging": $fa-var-person-digging, + "digging": $fa-var-digging, + "trash": $fa-var-trash, + "gauge-simple": $fa-var-gauge-simple, + "gauge-simple-med": $fa-var-gauge-simple-med, + "tachometer-average": $fa-var-tachometer-average, + "book-medical": $fa-var-book-medical, + "poo": $fa-var-poo, + "quote-right": $fa-var-quote-right, + "quote-right-alt": $fa-var-quote-right-alt, + "shirt": $fa-var-shirt, + "t-shirt": $fa-var-t-shirt, + "tshirt": $fa-var-tshirt, + "cubes": $fa-var-cubes, + "divide": $fa-var-divide, + "tenge-sign": $fa-var-tenge-sign, + "tenge": $fa-var-tenge, + "headphones": $fa-var-headphones, + "hands-holding": $fa-var-hands-holding, + "hands-clapping": $fa-var-hands-clapping, + "republican": $fa-var-republican, + "arrow-left": $fa-var-arrow-left, + "person-circle-xmark": $fa-var-person-circle-xmark, + "ruler": $fa-var-ruler, + "align-left": $fa-var-align-left, + "dice-d6": $fa-var-dice-d6, + "restroom": $fa-var-restroom, + "j": $fa-var-j, + "users-viewfinder": $fa-var-users-viewfinder, + "file-video": $fa-var-file-video, + "up-right-from-square": $fa-var-up-right-from-square, + "external-link-alt": $fa-var-external-link-alt, + "table-cells": $fa-var-table-cells, + "th": $fa-var-th, + "file-pdf": $fa-var-file-pdf, + "book-bible": $fa-var-book-bible, + "bible": $fa-var-bible, + "o": $fa-var-o, + "suitcase-medical": $fa-var-suitcase-medical, + "medkit": $fa-var-medkit, + "user-secret": $fa-var-user-secret, + "otter": $fa-var-otter, + "person-dress": $fa-var-person-dress, + "female": $fa-var-female, + "comment-dollar": $fa-var-comment-dollar, + "business-time": $fa-var-business-time, + "briefcase-clock": $fa-var-briefcase-clock, + "table-cells-large": $fa-var-table-cells-large, + "th-large": $fa-var-th-large, + "book-tanakh": $fa-var-book-tanakh, + "tanakh": $fa-var-tanakh, + "phone-volume": $fa-var-phone-volume, + "volume-control-phone": $fa-var-volume-control-phone, + "hat-cowboy-side": $fa-var-hat-cowboy-side, + "clipboard-user": $fa-var-clipboard-user, + "child": $fa-var-child, + "lira-sign": $fa-var-lira-sign, + "satellite": $fa-var-satellite, + "plane-lock": $fa-var-plane-lock, + "tag": $fa-var-tag, + "comment": $fa-var-comment, + "cake-candles": $fa-var-cake-candles, + "birthday-cake": $fa-var-birthday-cake, + "cake": $fa-var-cake, + "envelope": $fa-var-envelope, + "angles-up": $fa-var-angles-up, + "angle-double-up": $fa-var-angle-double-up, + "paperclip": $fa-var-paperclip, + "arrow-right-to-city": $fa-var-arrow-right-to-city, + "ribbon": $fa-var-ribbon, + "lungs": $fa-var-lungs, + "arrow-up-9-1": $fa-var-arrow-up-9-1, + "sort-numeric-up-alt": $fa-var-sort-numeric-up-alt, + "litecoin-sign": $fa-var-litecoin-sign, + "border-none": $fa-var-border-none, + "circle-nodes": $fa-var-circle-nodes, + "parachute-box": $fa-var-parachute-box, + "indent": $fa-var-indent, + "truck-field-un": $fa-var-truck-field-un, + "hourglass": $fa-var-hourglass, + "hourglass-empty": $fa-var-hourglass-empty, + "mountain": $fa-var-mountain, + "user-doctor": $fa-var-user-doctor, + "user-md": $fa-var-user-md, + "circle-info": $fa-var-circle-info, + "info-circle": $fa-var-info-circle, + "cloud-meatball": $fa-var-cloud-meatball, + "camera": $fa-var-camera, + "camera-alt": $fa-var-camera-alt, + "square-virus": $fa-var-square-virus, + "meteor": $fa-var-meteor, + "car-on": $fa-var-car-on, + "sleigh": $fa-var-sleigh, + "arrow-down-1-9": $fa-var-arrow-down-1-9, + "sort-numeric-asc": $fa-var-sort-numeric-asc, + "sort-numeric-down": $fa-var-sort-numeric-down, + "hand-holding-droplet": $fa-var-hand-holding-droplet, + "hand-holding-water": $fa-var-hand-holding-water, + "water": $fa-var-water, + "calendar-check": $fa-var-calendar-check, + "braille": $fa-var-braille, + "prescription-bottle-medical": $fa-var-prescription-bottle-medical, + "prescription-bottle-alt": $fa-var-prescription-bottle-alt, + "landmark": $fa-var-landmark, + "truck": $fa-var-truck, + "crosshairs": $fa-var-crosshairs, + "person-cane": $fa-var-person-cane, + "tent": $fa-var-tent, + "vest-patches": $fa-var-vest-patches, + "check-double": $fa-var-check-double, + "arrow-down-a-z": $fa-var-arrow-down-a-z, + "sort-alpha-asc": $fa-var-sort-alpha-asc, + "sort-alpha-down": $fa-var-sort-alpha-down, + "money-bill-wheat": $fa-var-money-bill-wheat, + "cookie": $fa-var-cookie, + "arrow-rotate-left": $fa-var-arrow-rotate-left, + "arrow-left-rotate": $fa-var-arrow-left-rotate, + "arrow-rotate-back": $fa-var-arrow-rotate-back, + "arrow-rotate-backward": $fa-var-arrow-rotate-backward, + "undo": $fa-var-undo, + "hard-drive": $fa-var-hard-drive, + "hdd": $fa-var-hdd, + "face-grin-squint-tears": $fa-var-face-grin-squint-tears, + "grin-squint-tears": $fa-var-grin-squint-tears, + "dumbbell": $fa-var-dumbbell, + "rectangle-list": $fa-var-rectangle-list, + "list-alt": $fa-var-list-alt, + "tarp-droplet": $fa-var-tarp-droplet, + "house-medical-circle-check": $fa-var-house-medical-circle-check, + "person-skiing-nordic": $fa-var-person-skiing-nordic, + "skiing-nordic": $fa-var-skiing-nordic, + "calendar-plus": $fa-var-calendar-plus, + "plane-arrival": $fa-var-plane-arrival, + "circle-left": $fa-var-circle-left, + "arrow-alt-circle-left": $fa-var-arrow-alt-circle-left, + "train-subway": $fa-var-train-subway, + "subway": $fa-var-subway, + "chart-gantt": $fa-var-chart-gantt, + "indian-rupee-sign": $fa-var-indian-rupee-sign, + "indian-rupee": $fa-var-indian-rupee, + "inr": $fa-var-inr, + "crop-simple": $fa-var-crop-simple, + "crop-alt": $fa-var-crop-alt, + "money-bill-1": $fa-var-money-bill-1, + "money-bill-alt": $fa-var-money-bill-alt, + "left-long": $fa-var-left-long, + "long-arrow-alt-left": $fa-var-long-arrow-alt-left, + "dna": $fa-var-dna, + "virus-slash": $fa-var-virus-slash, + "minus": $fa-var-minus, + "subtract": $fa-var-subtract, + "chess": $fa-var-chess, + "arrow-left-long": $fa-var-arrow-left-long, + "long-arrow-left": $fa-var-long-arrow-left, + "plug-circle-check": $fa-var-plug-circle-check, + "street-view": $fa-var-street-view, + "franc-sign": $fa-var-franc-sign, + "volume-off": $fa-var-volume-off, + "hands-asl-interpreting": $fa-var-hands-asl-interpreting, + "american-sign-language-interpreting": $fa-var-american-sign-language-interpreting, + "asl-interpreting": $fa-var-asl-interpreting, + "hands-american-sign-language-interpreting": $fa-var-hands-american-sign-language-interpreting, + "gear": $fa-var-gear, + "cog": $fa-var-cog, + "droplet-slash": $fa-var-droplet-slash, + "tint-slash": $fa-var-tint-slash, + "mosque": $fa-var-mosque, + "mosquito": $fa-var-mosquito, + "star-of-david": $fa-var-star-of-david, + "person-military-rifle": $fa-var-person-military-rifle, + "cart-shopping": $fa-var-cart-shopping, + "shopping-cart": $fa-var-shopping-cart, + "vials": $fa-var-vials, + "plug-circle-plus": $fa-var-plug-circle-plus, + "place-of-worship": $fa-var-place-of-worship, + "grip-vertical": $fa-var-grip-vertical, + "arrow-turn-up": $fa-var-arrow-turn-up, + "level-up": $fa-var-level-up, + "u": $fa-var-u, + "square-root-variable": $fa-var-square-root-variable, + "square-root-alt": $fa-var-square-root-alt, + "clock": $fa-var-clock, + "clock-four": $fa-var-clock-four, + "backward-step": $fa-var-backward-step, + "step-backward": $fa-var-step-backward, + "pallet": $fa-var-pallet, + "faucet": $fa-var-faucet, + "baseball-bat-ball": $fa-var-baseball-bat-ball, + "s": $fa-var-s, + "timeline": $fa-var-timeline, + "keyboard": $fa-var-keyboard, + "caret-down": $fa-var-caret-down, + "house-chimney-medical": $fa-var-house-chimney-medical, + "clinic-medical": $fa-var-clinic-medical, + "temperature-three-quarters": $fa-var-temperature-three-quarters, + "temperature-3": $fa-var-temperature-3, + "thermometer-3": $fa-var-thermometer-3, + "thermometer-three-quarters": $fa-var-thermometer-three-quarters, + "mobile-screen": $fa-var-mobile-screen, + "mobile-android-alt": $fa-var-mobile-android-alt, + "plane-up": $fa-var-plane-up, + "piggy-bank": $fa-var-piggy-bank, + "battery-half": $fa-var-battery-half, + "battery-3": $fa-var-battery-3, + "mountain-city": $fa-var-mountain-city, + "coins": $fa-var-coins, + "khanda": $fa-var-khanda, + "sliders": $fa-var-sliders, + "sliders-h": $fa-var-sliders-h, + "folder-tree": $fa-var-folder-tree, + "network-wired": $fa-var-network-wired, + "map-pin": $fa-var-map-pin, + "hamsa": $fa-var-hamsa, + "cent-sign": $fa-var-cent-sign, + "flask": $fa-var-flask, + "person-pregnant": $fa-var-person-pregnant, + "wand-sparkles": $fa-var-wand-sparkles, + "ellipsis-vertical": $fa-var-ellipsis-vertical, + "ellipsis-v": $fa-var-ellipsis-v, + "ticket": $fa-var-ticket, + "power-off": $fa-var-power-off, + "right-long": $fa-var-right-long, + "long-arrow-alt-right": $fa-var-long-arrow-alt-right, + "flag-usa": $fa-var-flag-usa, + "laptop-file": $fa-var-laptop-file, + "tty": $fa-var-tty, + "teletype": $fa-var-teletype, + "diagram-next": $fa-var-diagram-next, + "person-rifle": $fa-var-person-rifle, + "house-medical-circle-exclamation": $fa-var-house-medical-circle-exclamation, + "closed-captioning": $fa-var-closed-captioning, + "person-hiking": $fa-var-person-hiking, + "hiking": $fa-var-hiking, + "venus-double": $fa-var-venus-double, + "images": $fa-var-images, + "calculator": $fa-var-calculator, + "people-pulling": $fa-var-people-pulling, + "n": $fa-var-n, + "cable-car": $fa-var-cable-car, + "tram": $fa-var-tram, + "cloud-rain": $fa-var-cloud-rain, + "building-circle-xmark": $fa-var-building-circle-xmark, + "ship": $fa-var-ship, + "arrows-down-to-line": $fa-var-arrows-down-to-line, + "download": $fa-var-download, + "face-grin": $fa-var-face-grin, + "grin": $fa-var-grin, + "delete-left": $fa-var-delete-left, + "backspace": $fa-var-backspace, + "eye-dropper": $fa-var-eye-dropper, + "eye-dropper-empty": $fa-var-eye-dropper-empty, + "eyedropper": $fa-var-eyedropper, + "file-circle-check": $fa-var-file-circle-check, + "forward": $fa-var-forward, + "mobile": $fa-var-mobile, + "mobile-android": $fa-var-mobile-android, + "mobile-phone": $fa-var-mobile-phone, + "face-meh": $fa-var-face-meh, + "meh": $fa-var-meh, + "align-center": $fa-var-align-center, + "book-skull": $fa-var-book-skull, + "book-dead": $fa-var-book-dead, + "id-card": $fa-var-id-card, + "drivers-license": $fa-var-drivers-license, + "outdent": $fa-var-outdent, + "dedent": $fa-var-dedent, + "heart-circle-exclamation": $fa-var-heart-circle-exclamation, + "house": $fa-var-house, + "home": $fa-var-home, + "home-alt": $fa-var-home-alt, + "home-lg-alt": $fa-var-home-lg-alt, + "calendar-week": $fa-var-calendar-week, + "laptop-medical": $fa-var-laptop-medical, + "b": $fa-var-b, + "file-medical": $fa-var-file-medical, + "dice-one": $fa-var-dice-one, + "kiwi-bird": $fa-var-kiwi-bird, + "arrow-right-arrow-left": $fa-var-arrow-right-arrow-left, + "exchange": $fa-var-exchange, + "rotate-right": $fa-var-rotate-right, + "redo-alt": $fa-var-redo-alt, + "rotate-forward": $fa-var-rotate-forward, + "utensils": $fa-var-utensils, + "cutlery": $fa-var-cutlery, + "arrow-up-wide-short": $fa-var-arrow-up-wide-short, + "sort-amount-up": $fa-var-sort-amount-up, + "mill-sign": $fa-var-mill-sign, + "bowl-rice": $fa-var-bowl-rice, + "skull": $fa-var-skull, + "tower-broadcast": $fa-var-tower-broadcast, + "broadcast-tower": $fa-var-broadcast-tower, + "truck-pickup": $fa-var-truck-pickup, + "up-long": $fa-var-up-long, + "long-arrow-alt-up": $fa-var-long-arrow-alt-up, + "stop": $fa-var-stop, + "code-merge": $fa-var-code-merge, + "upload": $fa-var-upload, + "hurricane": $fa-var-hurricane, + "mound": $fa-var-mound, + "toilet-portable": $fa-var-toilet-portable, + "compact-disc": $fa-var-compact-disc, + "file-arrow-down": $fa-var-file-arrow-down, + "file-download": $fa-var-file-download, + "caravan": $fa-var-caravan, + "shield-cat": $fa-var-shield-cat, + "bolt": $fa-var-bolt, + "zap": $fa-var-zap, + "glass-water": $fa-var-glass-water, + "oil-well": $fa-var-oil-well, + "vault": $fa-var-vault, + "mars": $fa-var-mars, + "toilet": $fa-var-toilet, + "plane-circle-xmark": $fa-var-plane-circle-xmark, + "yen-sign": $fa-var-yen-sign, + "cny": $fa-var-cny, + "jpy": $fa-var-jpy, + "rmb": $fa-var-rmb, + "yen": $fa-var-yen, + "ruble-sign": $fa-var-ruble-sign, + "rouble": $fa-var-rouble, + "rub": $fa-var-rub, + "ruble": $fa-var-ruble, + "sun": $fa-var-sun, + "guitar": $fa-var-guitar, + "face-laugh-wink": $fa-var-face-laugh-wink, + "laugh-wink": $fa-var-laugh-wink, + "horse-head": $fa-var-horse-head, + "bore-hole": $fa-var-bore-hole, + "industry": $fa-var-industry, + "circle-down": $fa-var-circle-down, + "arrow-alt-circle-down": $fa-var-arrow-alt-circle-down, + "arrows-turn-to-dots": $fa-var-arrows-turn-to-dots, + "florin-sign": $fa-var-florin-sign, + "arrow-down-short-wide": $fa-var-arrow-down-short-wide, + "sort-amount-desc": $fa-var-sort-amount-desc, + "sort-amount-down-alt": $fa-var-sort-amount-down-alt, + "less-than": $fa-var-less-than, + "angle-down": $fa-var-angle-down, + "car-tunnel": $fa-var-car-tunnel, + "head-side-cough": $fa-var-head-side-cough, + "grip-lines": $fa-var-grip-lines, + "thumbs-down": $fa-var-thumbs-down, + "user-lock": $fa-var-user-lock, + "arrow-right-long": $fa-var-arrow-right-long, + "long-arrow-right": $fa-var-long-arrow-right, + "anchor-circle-xmark": $fa-var-anchor-circle-xmark, + "ellipsis": $fa-var-ellipsis, + "ellipsis-h": $fa-var-ellipsis-h, + "chess-pawn": $fa-var-chess-pawn, + "kit-medical": $fa-var-kit-medical, + "first-aid": $fa-var-first-aid, + "person-through-window": $fa-var-person-through-window, + "toolbox": $fa-var-toolbox, + "hands-holding-circle": $fa-var-hands-holding-circle, + "bug": $fa-var-bug, + "credit-card": $fa-var-credit-card, + "credit-card-alt": $fa-var-credit-card-alt, + "car": $fa-var-car, + "automobile": $fa-var-automobile, + "hand-holding-hand": $fa-var-hand-holding-hand, + "book-open-reader": $fa-var-book-open-reader, + "book-reader": $fa-var-book-reader, + "mountain-sun": $fa-var-mountain-sun, + "arrows-left-right-to-line": $fa-var-arrows-left-right-to-line, + "dice-d20": $fa-var-dice-d20, + "truck-droplet": $fa-var-truck-droplet, + "file-circle-xmark": $fa-var-file-circle-xmark, + "temperature-arrow-up": $fa-var-temperature-arrow-up, + "temperature-up": $fa-var-temperature-up, + "medal": $fa-var-medal, + "bed": $fa-var-bed, + "square-h": $fa-var-square-h, + "h-square": $fa-var-h-square, + "podcast": $fa-var-podcast, + "temperature-full": $fa-var-temperature-full, + "temperature-4": $fa-var-temperature-4, + "thermometer-4": $fa-var-thermometer-4, + "thermometer-full": $fa-var-thermometer-full, + "bell": $fa-var-bell, + "superscript": $fa-var-superscript, + "plug-circle-xmark": $fa-var-plug-circle-xmark, + "star-of-life": $fa-var-star-of-life, + "phone-slash": $fa-var-phone-slash, + "paint-roller": $fa-var-paint-roller, + "handshake-angle": $fa-var-handshake-angle, + "hands-helping": $fa-var-hands-helping, + "location-dot": $fa-var-location-dot, + "map-marker-alt": $fa-var-map-marker-alt, + "file": $fa-var-file, + "greater-than": $fa-var-greater-than, + "person-swimming": $fa-var-person-swimming, + "swimmer": $fa-var-swimmer, + "arrow-down": $fa-var-arrow-down, + "droplet": $fa-var-droplet, + "tint": $fa-var-tint, + "eraser": $fa-var-eraser, + "earth-americas": $fa-var-earth-americas, + "earth": $fa-var-earth, + "earth-america": $fa-var-earth-america, + "globe-americas": $fa-var-globe-americas, + "person-burst": $fa-var-person-burst, + "dove": $fa-var-dove, + "battery-empty": $fa-var-battery-empty, + "battery-0": $fa-var-battery-0, + "socks": $fa-var-socks, + "inbox": $fa-var-inbox, + "section": $fa-var-section, + "gauge-high": $fa-var-gauge-high, + "tachometer-alt": $fa-var-tachometer-alt, + "tachometer-alt-fast": $fa-var-tachometer-alt-fast, + "envelope-open-text": $fa-var-envelope-open-text, + "hospital": $fa-var-hospital, + "hospital-alt": $fa-var-hospital-alt, + "hospital-wide": $fa-var-hospital-wide, + "wine-bottle": $fa-var-wine-bottle, + "chess-rook": $fa-var-chess-rook, + "bars-staggered": $fa-var-bars-staggered, + "reorder": $fa-var-reorder, + "stream": $fa-var-stream, + "dharmachakra": $fa-var-dharmachakra, + "hotdog": $fa-var-hotdog, + "person-walking-with-cane": $fa-var-person-walking-with-cane, + "blind": $fa-var-blind, + "drum": $fa-var-drum, + "ice-cream": $fa-var-ice-cream, + "heart-circle-bolt": $fa-var-heart-circle-bolt, + "fax": $fa-var-fax, + "paragraph": $fa-var-paragraph, + "check-to-slot": $fa-var-check-to-slot, + "vote-yea": $fa-var-vote-yea, + "star-half": $fa-var-star-half, + "boxes-stacked": $fa-var-boxes-stacked, + "boxes": $fa-var-boxes, + "boxes-alt": $fa-var-boxes-alt, + "link": $fa-var-link, + "chain": $fa-var-chain, + "ear-listen": $fa-var-ear-listen, + "assistive-listening-systems": $fa-var-assistive-listening-systems, + "tree-city": $fa-var-tree-city, + "play": $fa-var-play, + "font": $fa-var-font, + "rupiah-sign": $fa-var-rupiah-sign, + "magnifying-glass": $fa-var-magnifying-glass, + "search": $fa-var-search, + "table-tennis-paddle-ball": $fa-var-table-tennis-paddle-ball, + "ping-pong-paddle-ball": $fa-var-ping-pong-paddle-ball, + "table-tennis": $fa-var-table-tennis, + "person-dots-from-line": $fa-var-person-dots-from-line, + "diagnoses": $fa-var-diagnoses, + "trash-can-arrow-up": $fa-var-trash-can-arrow-up, + "trash-restore-alt": $fa-var-trash-restore-alt, + "naira-sign": $fa-var-naira-sign, + "cart-arrow-down": $fa-var-cart-arrow-down, + "walkie-talkie": $fa-var-walkie-talkie, + "file-pen": $fa-var-file-pen, + "file-edit": $fa-var-file-edit, + "receipt": $fa-var-receipt, + "square-pen": $fa-var-square-pen, + "pen-square": $fa-var-pen-square, + "pencil-square": $fa-var-pencil-square, + "suitcase-rolling": $fa-var-suitcase-rolling, + "person-circle-exclamation": $fa-var-person-circle-exclamation, + "chevron-down": $fa-var-chevron-down, + "battery-full": $fa-var-battery-full, + "battery": $fa-var-battery, + "battery-5": $fa-var-battery-5, + "skull-crossbones": $fa-var-skull-crossbones, + "code-compare": $fa-var-code-compare, + "list-ul": $fa-var-list-ul, + "list-dots": $fa-var-list-dots, + "school-lock": $fa-var-school-lock, + "tower-cell": $fa-var-tower-cell, + "down-long": $fa-var-down-long, + "long-arrow-alt-down": $fa-var-long-arrow-alt-down, + "ranking-star": $fa-var-ranking-star, + "chess-king": $fa-var-chess-king, + "person-harassing": $fa-var-person-harassing, + "brazilian-real-sign": $fa-var-brazilian-real-sign, + "landmark-dome": $fa-var-landmark-dome, + "landmark-alt": $fa-var-landmark-alt, + "arrow-up": $fa-var-arrow-up, + "tv": $fa-var-tv, + "television": $fa-var-television, + "tv-alt": $fa-var-tv-alt, + "shrimp": $fa-var-shrimp, + "list-check": $fa-var-list-check, + "tasks": $fa-var-tasks, + "jug-detergent": $fa-var-jug-detergent, + "circle-user": $fa-var-circle-user, + "user-circle": $fa-var-user-circle, + "user-shield": $fa-var-user-shield, + "wind": $fa-var-wind, + "car-burst": $fa-var-car-burst, + "car-crash": $fa-var-car-crash, + "y": $fa-var-y, + "person-snowboarding": $fa-var-person-snowboarding, + "snowboarding": $fa-var-snowboarding, + "truck-fast": $fa-var-truck-fast, + "shipping-fast": $fa-var-shipping-fast, + "fish": $fa-var-fish, + "user-graduate": $fa-var-user-graduate, + "circle-half-stroke": $fa-var-circle-half-stroke, + "adjust": $fa-var-adjust, + "clapperboard": $fa-var-clapperboard, + "circle-radiation": $fa-var-circle-radiation, + "radiation-alt": $fa-var-radiation-alt, + "baseball": $fa-var-baseball, + "baseball-ball": $fa-var-baseball-ball, + "jet-fighter-up": $fa-var-jet-fighter-up, + "diagram-project": $fa-var-diagram-project, + "project-diagram": $fa-var-project-diagram, + "copy": $fa-var-copy, + "volume-xmark": $fa-var-volume-xmark, + "volume-mute": $fa-var-volume-mute, + "volume-times": $fa-var-volume-times, + "hand-sparkles": $fa-var-hand-sparkles, + "grip": $fa-var-grip, + "grip-horizontal": $fa-var-grip-horizontal, + "share-from-square": $fa-var-share-from-square, + "share-square": $fa-var-share-square, + "child-combatant": $fa-var-child-combatant, + "child-rifle": $fa-var-child-rifle, + "gun": $fa-var-gun, + "square-phone": $fa-var-square-phone, + "phone-square": $fa-var-phone-square, + "plus": $fa-var-plus, + "add": $fa-var-add, + "expand": $fa-var-expand, + "computer": $fa-var-computer, + "xmark": $fa-var-xmark, + "close": $fa-var-close, + "multiply": $fa-var-multiply, + "remove": $fa-var-remove, + "times": $fa-var-times, + "arrows-up-down-left-right": $fa-var-arrows-up-down-left-right, + "arrows": $fa-var-arrows, + "chalkboard-user": $fa-var-chalkboard-user, + "chalkboard-teacher": $fa-var-chalkboard-teacher, + "peso-sign": $fa-var-peso-sign, + "building-shield": $fa-var-building-shield, + "baby": $fa-var-baby, + "users-line": $fa-var-users-line, + "quote-left": $fa-var-quote-left, + "quote-left-alt": $fa-var-quote-left-alt, + "tractor": $fa-var-tractor, + "trash-arrow-up": $fa-var-trash-arrow-up, + "trash-restore": $fa-var-trash-restore, + "arrow-down-up-lock": $fa-var-arrow-down-up-lock, + "lines-leaning": $fa-var-lines-leaning, + "ruler-combined": $fa-var-ruler-combined, + "copyright": $fa-var-copyright, + "equals": $fa-var-equals, + "blender": $fa-var-blender, + "teeth": $fa-var-teeth, + "shekel-sign": $fa-var-shekel-sign, + "ils": $fa-var-ils, + "shekel": $fa-var-shekel, + "sheqel": $fa-var-sheqel, + "sheqel-sign": $fa-var-sheqel-sign, + "map": $fa-var-map, + "rocket": $fa-var-rocket, + "photo-film": $fa-var-photo-film, + "photo-video": $fa-var-photo-video, + "folder-minus": $fa-var-folder-minus, + "store": $fa-var-store, + "arrow-trend-up": $fa-var-arrow-trend-up, + "plug-circle-minus": $fa-var-plug-circle-minus, + "sign-hanging": $fa-var-sign-hanging, + "sign": $fa-var-sign, + "bezier-curve": $fa-var-bezier-curve, + "bell-slash": $fa-var-bell-slash, + "tablet": $fa-var-tablet, + "tablet-android": $fa-var-tablet-android, + "school-flag": $fa-var-school-flag, + "fill": $fa-var-fill, + "angle-up": $fa-var-angle-up, + "drumstick-bite": $fa-var-drumstick-bite, + "holly-berry": $fa-var-holly-berry, + "chevron-left": $fa-var-chevron-left, + "bacteria": $fa-var-bacteria, + "hand-lizard": $fa-var-hand-lizard, + "notdef": $fa-var-notdef, + "disease": $fa-var-disease, + "briefcase-medical": $fa-var-briefcase-medical, + "genderless": $fa-var-genderless, + "chevron-right": $fa-var-chevron-right, + "retweet": $fa-var-retweet, + "car-rear": $fa-var-car-rear, + "car-alt": $fa-var-car-alt, + "pump-soap": $fa-var-pump-soap, + "video-slash": $fa-var-video-slash, + "battery-quarter": $fa-var-battery-quarter, + "battery-2": $fa-var-battery-2, + "radio": $fa-var-radio, + "baby-carriage": $fa-var-baby-carriage, + "carriage-baby": $fa-var-carriage-baby, + "traffic-light": $fa-var-traffic-light, + "thermometer": $fa-var-thermometer, + "vr-cardboard": $fa-var-vr-cardboard, + "hand-middle-finger": $fa-var-hand-middle-finger, + "percent": $fa-var-percent, + "percentage": $fa-var-percentage, + "truck-moving": $fa-var-truck-moving, + "glass-water-droplet": $fa-var-glass-water-droplet, + "display": $fa-var-display, + "face-smile": $fa-var-face-smile, + "smile": $fa-var-smile, + "thumbtack": $fa-var-thumbtack, + "thumb-tack": $fa-var-thumb-tack, + "trophy": $fa-var-trophy, + "person-praying": $fa-var-person-praying, + "pray": $fa-var-pray, + "hammer": $fa-var-hammer, + "hand-peace": $fa-var-hand-peace, + "rotate": $fa-var-rotate, + "sync-alt": $fa-var-sync-alt, + "spinner": $fa-var-spinner, + "robot": $fa-var-robot, + "peace": $fa-var-peace, + "gears": $fa-var-gears, + "cogs": $fa-var-cogs, + "warehouse": $fa-var-warehouse, + "arrow-up-right-dots": $fa-var-arrow-up-right-dots, + "splotch": $fa-var-splotch, + "face-grin-hearts": $fa-var-face-grin-hearts, + "grin-hearts": $fa-var-grin-hearts, + "dice-four": $fa-var-dice-four, + "sim-card": $fa-var-sim-card, + "transgender": $fa-var-transgender, + "transgender-alt": $fa-var-transgender-alt, + "mercury": $fa-var-mercury, + "arrow-turn-down": $fa-var-arrow-turn-down, + "level-down": $fa-var-level-down, + "person-falling-burst": $fa-var-person-falling-burst, + "award": $fa-var-award, + "ticket-simple": $fa-var-ticket-simple, + "ticket-alt": $fa-var-ticket-alt, + "building": $fa-var-building, + "angles-left": $fa-var-angles-left, + "angle-double-left": $fa-var-angle-double-left, + "qrcode": $fa-var-qrcode, + "clock-rotate-left": $fa-var-clock-rotate-left, + "history": $fa-var-history, + "face-grin-beam-sweat": $fa-var-face-grin-beam-sweat, + "grin-beam-sweat": $fa-var-grin-beam-sweat, + "file-export": $fa-var-file-export, + "arrow-right-from-file": $fa-var-arrow-right-from-file, + "shield": $fa-var-shield, + "shield-blank": $fa-var-shield-blank, + "arrow-up-short-wide": $fa-var-arrow-up-short-wide, + "sort-amount-up-alt": $fa-var-sort-amount-up-alt, + "house-medical": $fa-var-house-medical, + "golf-ball-tee": $fa-var-golf-ball-tee, + "golf-ball": $fa-var-golf-ball, + "circle-chevron-left": $fa-var-circle-chevron-left, + "chevron-circle-left": $fa-var-chevron-circle-left, + "house-chimney-window": $fa-var-house-chimney-window, + "pen-nib": $fa-var-pen-nib, + "tent-arrow-turn-left": $fa-var-tent-arrow-turn-left, + "tents": $fa-var-tents, + "wand-magic": $fa-var-wand-magic, + "magic": $fa-var-magic, + "dog": $fa-var-dog, + "carrot": $fa-var-carrot, + "moon": $fa-var-moon, + "wine-glass-empty": $fa-var-wine-glass-empty, + "wine-glass-alt": $fa-var-wine-glass-alt, + "cheese": $fa-var-cheese, + "yin-yang": $fa-var-yin-yang, + "music": $fa-var-music, + "code-commit": $fa-var-code-commit, + "temperature-low": $fa-var-temperature-low, + "person-biking": $fa-var-person-biking, + "biking": $fa-var-biking, + "broom": $fa-var-broom, + "shield-heart": $fa-var-shield-heart, + "gopuram": $fa-var-gopuram, + "earth-oceania": $fa-var-earth-oceania, + "globe-oceania": $fa-var-globe-oceania, + "square-xmark": $fa-var-square-xmark, + "times-square": $fa-var-times-square, + "xmark-square": $fa-var-xmark-square, + "hashtag": $fa-var-hashtag, + "up-right-and-down-left-from-center": $fa-var-up-right-and-down-left-from-center, + "expand-alt": $fa-var-expand-alt, + "oil-can": $fa-var-oil-can, + "t": $fa-var-t, + "hippo": $fa-var-hippo, + "chart-column": $fa-var-chart-column, + "infinity": $fa-var-infinity, + "vial-circle-check": $fa-var-vial-circle-check, + "person-arrow-down-to-line": $fa-var-person-arrow-down-to-line, + "voicemail": $fa-var-voicemail, + "fan": $fa-var-fan, + "person-walking-luggage": $fa-var-person-walking-luggage, + "up-down": $fa-var-up-down, + "arrows-alt-v": $fa-var-arrows-alt-v, + "cloud-moon-rain": $fa-var-cloud-moon-rain, + "calendar": $fa-var-calendar, + "trailer": $fa-var-trailer, + "bahai": $fa-var-bahai, + "haykal": $fa-var-haykal, + "sd-card": $fa-var-sd-card, + "dragon": $fa-var-dragon, + "shoe-prints": $fa-var-shoe-prints, + "circle-plus": $fa-var-circle-plus, + "plus-circle": $fa-var-plus-circle, + "face-grin-tongue-wink": $fa-var-face-grin-tongue-wink, + "grin-tongue-wink": $fa-var-grin-tongue-wink, + "hand-holding": $fa-var-hand-holding, + "plug-circle-exclamation": $fa-var-plug-circle-exclamation, + "link-slash": $fa-var-link-slash, + "chain-broken": $fa-var-chain-broken, + "chain-slash": $fa-var-chain-slash, + "unlink": $fa-var-unlink, + "clone": $fa-var-clone, + "person-walking-arrow-loop-left": $fa-var-person-walking-arrow-loop-left, + "arrow-up-z-a": $fa-var-arrow-up-z-a, + "sort-alpha-up-alt": $fa-var-sort-alpha-up-alt, + "fire-flame-curved": $fa-var-fire-flame-curved, + "fire-alt": $fa-var-fire-alt, + "tornado": $fa-var-tornado, + "file-circle-plus": $fa-var-file-circle-plus, + "book-quran": $fa-var-book-quran, + "quran": $fa-var-quran, + "anchor": $fa-var-anchor, + "border-all": $fa-var-border-all, + "face-angry": $fa-var-face-angry, + "angry": $fa-var-angry, + "cookie-bite": $fa-var-cookie-bite, + "arrow-trend-down": $fa-var-arrow-trend-down, + "rss": $fa-var-rss, + "feed": $fa-var-feed, + "draw-polygon": $fa-var-draw-polygon, + "scale-balanced": $fa-var-scale-balanced, + "balance-scale": $fa-var-balance-scale, + "gauge-simple-high": $fa-var-gauge-simple-high, + "tachometer": $fa-var-tachometer, + "tachometer-fast": $fa-var-tachometer-fast, + "shower": $fa-var-shower, + "desktop": $fa-var-desktop, + "desktop-alt": $fa-var-desktop-alt, + "m": $fa-var-m, + "table-list": $fa-var-table-list, + "th-list": $fa-var-th-list, + "comment-sms": $fa-var-comment-sms, + "sms": $fa-var-sms, + "book": $fa-var-book, + "user-plus": $fa-var-user-plus, + "check": $fa-var-check, + "battery-three-quarters": $fa-var-battery-three-quarters, + "battery-4": $fa-var-battery-4, + "house-circle-check": $fa-var-house-circle-check, + "angle-left": $fa-var-angle-left, + "diagram-successor": $fa-var-diagram-successor, + "truck-arrow-right": $fa-var-truck-arrow-right, + "arrows-split-up-and-left": $fa-var-arrows-split-up-and-left, + "hand-fist": $fa-var-hand-fist, + "fist-raised": $fa-var-fist-raised, + "cloud-moon": $fa-var-cloud-moon, + "briefcase": $fa-var-briefcase, + "person-falling": $fa-var-person-falling, + "image-portrait": $fa-var-image-portrait, + "portrait": $fa-var-portrait, + "user-tag": $fa-var-user-tag, + "rug": $fa-var-rug, + "earth-europe": $fa-var-earth-europe, + "globe-europe": $fa-var-globe-europe, + "cart-flatbed-suitcase": $fa-var-cart-flatbed-suitcase, + "luggage-cart": $fa-var-luggage-cart, + "rectangle-xmark": $fa-var-rectangle-xmark, + "rectangle-times": $fa-var-rectangle-times, + "times-rectangle": $fa-var-times-rectangle, + "window-close": $fa-var-window-close, + "baht-sign": $fa-var-baht-sign, + "book-open": $fa-var-book-open, + "book-journal-whills": $fa-var-book-journal-whills, + "journal-whills": $fa-var-journal-whills, + "handcuffs": $fa-var-handcuffs, + "triangle-exclamation": $fa-var-triangle-exclamation, + "exclamation-triangle": $fa-var-exclamation-triangle, + "warning": $fa-var-warning, + "database": $fa-var-database, + "share": $fa-var-share, + "arrow-turn-right": $fa-var-arrow-turn-right, + "mail-forward": $fa-var-mail-forward, + "bottle-droplet": $fa-var-bottle-droplet, + "mask-face": $fa-var-mask-face, + "hill-rockslide": $fa-var-hill-rockslide, + "right-left": $fa-var-right-left, + "exchange-alt": $fa-var-exchange-alt, + "paper-plane": $fa-var-paper-plane, + "road-circle-exclamation": $fa-var-road-circle-exclamation, + "dungeon": $fa-var-dungeon, + "align-right": $fa-var-align-right, + "money-bill-1-wave": $fa-var-money-bill-1-wave, + "money-bill-wave-alt": $fa-var-money-bill-wave-alt, + "life-ring": $fa-var-life-ring, + "hands": $fa-var-hands, + "sign-language": $fa-var-sign-language, + "signing": $fa-var-signing, + "calendar-day": $fa-var-calendar-day, + "water-ladder": $fa-var-water-ladder, + "ladder-water": $fa-var-ladder-water, + "swimming-pool": $fa-var-swimming-pool, + "arrows-up-down": $fa-var-arrows-up-down, + "arrows-v": $fa-var-arrows-v, + "face-grimace": $fa-var-face-grimace, + "grimace": $fa-var-grimace, + "wheelchair-move": $fa-var-wheelchair-move, + "wheelchair-alt": $fa-var-wheelchair-alt, + "turn-down": $fa-var-turn-down, + "level-down-alt": $fa-var-level-down-alt, + "person-walking-arrow-right": $fa-var-person-walking-arrow-right, + "square-envelope": $fa-var-square-envelope, + "envelope-square": $fa-var-envelope-square, + "dice": $fa-var-dice, + "bowling-ball": $fa-var-bowling-ball, + "brain": $fa-var-brain, + "bandage": $fa-var-bandage, + "band-aid": $fa-var-band-aid, + "calendar-minus": $fa-var-calendar-minus, + "circle-xmark": $fa-var-circle-xmark, + "times-circle": $fa-var-times-circle, + "xmark-circle": $fa-var-xmark-circle, + "gifts": $fa-var-gifts, + "hotel": $fa-var-hotel, + "earth-asia": $fa-var-earth-asia, + "globe-asia": $fa-var-globe-asia, + "id-card-clip": $fa-var-id-card-clip, + "id-card-alt": $fa-var-id-card-alt, + "magnifying-glass-plus": $fa-var-magnifying-glass-plus, + "search-plus": $fa-var-search-plus, + "thumbs-up": $fa-var-thumbs-up, + "user-clock": $fa-var-user-clock, + "hand-dots": $fa-var-hand-dots, + "allergies": $fa-var-allergies, + "file-invoice": $fa-var-file-invoice, + "window-minimize": $fa-var-window-minimize, + "mug-saucer": $fa-var-mug-saucer, + "coffee": $fa-var-coffee, + "brush": $fa-var-brush, + "mask": $fa-var-mask, + "magnifying-glass-minus": $fa-var-magnifying-glass-minus, + "search-minus": $fa-var-search-minus, + "ruler-vertical": $fa-var-ruler-vertical, + "user-large": $fa-var-user-large, + "user-alt": $fa-var-user-alt, + "train-tram": $fa-var-train-tram, + "user-nurse": $fa-var-user-nurse, + "syringe": $fa-var-syringe, + "cloud-sun": $fa-var-cloud-sun, + "stopwatch-20": $fa-var-stopwatch-20, + "square-full": $fa-var-square-full, + "magnet": $fa-var-magnet, + "jar": $fa-var-jar, + "note-sticky": $fa-var-note-sticky, + "sticky-note": $fa-var-sticky-note, + "bug-slash": $fa-var-bug-slash, + "arrow-up-from-water-pump": $fa-var-arrow-up-from-water-pump, + "bone": $fa-var-bone, + "user-injured": $fa-var-user-injured, + "face-sad-tear": $fa-var-face-sad-tear, + "sad-tear": $fa-var-sad-tear, + "plane": $fa-var-plane, + "tent-arrows-down": $fa-var-tent-arrows-down, + "exclamation": $fa-var-exclamation, + "arrows-spin": $fa-var-arrows-spin, + "print": $fa-var-print, + "turkish-lira-sign": $fa-var-turkish-lira-sign, + "try": $fa-var-try, + "turkish-lira": $fa-var-turkish-lira, + "dollar-sign": $fa-var-dollar-sign, + "dollar": $fa-var-dollar, + "usd": $fa-var-usd, + "x": $fa-var-x, + "magnifying-glass-dollar": $fa-var-magnifying-glass-dollar, + "search-dollar": $fa-var-search-dollar, + "users-gear": $fa-var-users-gear, + "users-cog": $fa-var-users-cog, + "person-military-pointing": $fa-var-person-military-pointing, + "building-columns": $fa-var-building-columns, + "bank": $fa-var-bank, + "institution": $fa-var-institution, + "museum": $fa-var-museum, + "university": $fa-var-university, + "umbrella": $fa-var-umbrella, + "trowel": $fa-var-trowel, + "d": $fa-var-d, + "stapler": $fa-var-stapler, + "masks-theater": $fa-var-masks-theater, + "theater-masks": $fa-var-theater-masks, + "kip-sign": $fa-var-kip-sign, + "hand-point-left": $fa-var-hand-point-left, + "handshake-simple": $fa-var-handshake-simple, + "handshake-alt": $fa-var-handshake-alt, + "jet-fighter": $fa-var-jet-fighter, + "fighter-jet": $fa-var-fighter-jet, + "square-share-nodes": $fa-var-square-share-nodes, + "share-alt-square": $fa-var-share-alt-square, + "barcode": $fa-var-barcode, + "plus-minus": $fa-var-plus-minus, + "video": $fa-var-video, + "video-camera": $fa-var-video-camera, + "graduation-cap": $fa-var-graduation-cap, + "mortar-board": $fa-var-mortar-board, + "hand-holding-medical": $fa-var-hand-holding-medical, + "person-circle-check": $fa-var-person-circle-check, + "turn-up": $fa-var-turn-up, + "level-up-alt": $fa-var-level-up-alt, +); + +$fa-brand-icons: ( + "monero": $fa-var-monero, + "hooli": $fa-var-hooli, + "yelp": $fa-var-yelp, + "cc-visa": $fa-var-cc-visa, + "lastfm": $fa-var-lastfm, + "shopware": $fa-var-shopware, + "creative-commons-nc": $fa-var-creative-commons-nc, + "aws": $fa-var-aws, + "redhat": $fa-var-redhat, + "yoast": $fa-var-yoast, + "cloudflare": $fa-var-cloudflare, + "ups": $fa-var-ups, + "wpexplorer": $fa-var-wpexplorer, + "dyalog": $fa-var-dyalog, + "bity": $fa-var-bity, + "stackpath": $fa-var-stackpath, + "buysellads": $fa-var-buysellads, + "first-order": $fa-var-first-order, + "modx": $fa-var-modx, + "guilded": $fa-var-guilded, + "vnv": $fa-var-vnv, + "square-js": $fa-var-square-js, + "js-square": $fa-var-js-square, + "microsoft": $fa-var-microsoft, + "qq": $fa-var-qq, + "orcid": $fa-var-orcid, + "java": $fa-var-java, + "invision": $fa-var-invision, + "creative-commons-pd-alt": $fa-var-creative-commons-pd-alt, + "centercode": $fa-var-centercode, + "glide-g": $fa-var-glide-g, + "drupal": $fa-var-drupal, + "hire-a-helper": $fa-var-hire-a-helper, + "creative-commons-by": $fa-var-creative-commons-by, + "unity": $fa-var-unity, + "whmcs": $fa-var-whmcs, + "rocketchat": $fa-var-rocketchat, + "vk": $fa-var-vk, + "untappd": $fa-var-untappd, + "mailchimp": $fa-var-mailchimp, + "css3-alt": $fa-var-css3-alt, + "square-reddit": $fa-var-square-reddit, + "reddit-square": $fa-var-reddit-square, + "vimeo-v": $fa-var-vimeo-v, + "contao": $fa-var-contao, + "square-font-awesome": $fa-var-square-font-awesome, + "deskpro": $fa-var-deskpro, + "sistrix": $fa-var-sistrix, + "square-instagram": $fa-var-square-instagram, + "instagram-square": $fa-var-instagram-square, + "battle-net": $fa-var-battle-net, + "the-red-yeti": $fa-var-the-red-yeti, + "square-hacker-news": $fa-var-square-hacker-news, + "hacker-news-square": $fa-var-hacker-news-square, + "edge": $fa-var-edge, + "threads": $fa-var-threads, + "napster": $fa-var-napster, + "square-snapchat": $fa-var-square-snapchat, + "snapchat-square": $fa-var-snapchat-square, + "google-plus-g": $fa-var-google-plus-g, + "artstation": $fa-var-artstation, + "markdown": $fa-var-markdown, + "sourcetree": $fa-var-sourcetree, + "google-plus": $fa-var-google-plus, + "diaspora": $fa-var-diaspora, + "foursquare": $fa-var-foursquare, + "stack-overflow": $fa-var-stack-overflow, + "github-alt": $fa-var-github-alt, + "phoenix-squadron": $fa-var-phoenix-squadron, + "pagelines": $fa-var-pagelines, + "algolia": $fa-var-algolia, + "red-river": $fa-var-red-river, + "creative-commons-sa": $fa-var-creative-commons-sa, + "safari": $fa-var-safari, + "google": $fa-var-google, + "square-font-awesome-stroke": $fa-var-square-font-awesome-stroke, + "font-awesome-alt": $fa-var-font-awesome-alt, + "atlassian": $fa-var-atlassian, + "linkedin-in": $fa-var-linkedin-in, + "digital-ocean": $fa-var-digital-ocean, + "nimblr": $fa-var-nimblr, + "chromecast": $fa-var-chromecast, + "evernote": $fa-var-evernote, + "hacker-news": $fa-var-hacker-news, + "creative-commons-sampling": $fa-var-creative-commons-sampling, + "adversal": $fa-var-adversal, + "creative-commons": $fa-var-creative-commons, + "watchman-monitoring": $fa-var-watchman-monitoring, + "fonticons": $fa-var-fonticons, + "weixin": $fa-var-weixin, + "shirtsinbulk": $fa-var-shirtsinbulk, + "codepen": $fa-var-codepen, + "git-alt": $fa-var-git-alt, + "lyft": $fa-var-lyft, + "rev": $fa-var-rev, + "windows": $fa-var-windows, + "wizards-of-the-coast": $fa-var-wizards-of-the-coast, + "square-viadeo": $fa-var-square-viadeo, + "viadeo-square": $fa-var-viadeo-square, + "meetup": $fa-var-meetup, + "centos": $fa-var-centos, + "adn": $fa-var-adn, + "cloudsmith": $fa-var-cloudsmith, + "pied-piper-alt": $fa-var-pied-piper-alt, + "square-dribbble": $fa-var-square-dribbble, + "dribbble-square": $fa-var-dribbble-square, + "codiepie": $fa-var-codiepie, + "node": $fa-var-node, + "mix": $fa-var-mix, + "steam": $fa-var-steam, + "cc-apple-pay": $fa-var-cc-apple-pay, + "scribd": $fa-var-scribd, + "debian": $fa-var-debian, + "openid": $fa-var-openid, + "instalod": $fa-var-instalod, + "expeditedssl": $fa-var-expeditedssl, + "sellcast": $fa-var-sellcast, + "square-twitter": $fa-var-square-twitter, + "twitter-square": $fa-var-twitter-square, + "r-project": $fa-var-r-project, + "delicious": $fa-var-delicious, + "freebsd": $fa-var-freebsd, + "vuejs": $fa-var-vuejs, + "accusoft": $fa-var-accusoft, + "ioxhost": $fa-var-ioxhost, + "fonticons-fi": $fa-var-fonticons-fi, + "app-store": $fa-var-app-store, + "cc-mastercard": $fa-var-cc-mastercard, + "itunes-note": $fa-var-itunes-note, + "golang": $fa-var-golang, + "kickstarter": $fa-var-kickstarter, + "grav": $fa-var-grav, + "weibo": $fa-var-weibo, + "uncharted": $fa-var-uncharted, + "firstdraft": $fa-var-firstdraft, + "square-youtube": $fa-var-square-youtube, + "youtube-square": $fa-var-youtube-square, + "wikipedia-w": $fa-var-wikipedia-w, + "wpressr": $fa-var-wpressr, + "rendact": $fa-var-rendact, + "angellist": $fa-var-angellist, + "galactic-republic": $fa-var-galactic-republic, + "nfc-directional": $fa-var-nfc-directional, + "skype": $fa-var-skype, + "joget": $fa-var-joget, + "fedora": $fa-var-fedora, + "stripe-s": $fa-var-stripe-s, + "meta": $fa-var-meta, + "laravel": $fa-var-laravel, + "hotjar": $fa-var-hotjar, + "bluetooth-b": $fa-var-bluetooth-b, + "sticker-mule": $fa-var-sticker-mule, + "creative-commons-zero": $fa-var-creative-commons-zero, + "hips": $fa-var-hips, + "behance": $fa-var-behance, + "reddit": $fa-var-reddit, + "discord": $fa-var-discord, + "chrome": $fa-var-chrome, + "app-store-ios": $fa-var-app-store-ios, + "cc-discover": $fa-var-cc-discover, + "wpbeginner": $fa-var-wpbeginner, + "confluence": $fa-var-confluence, + "mdb": $fa-var-mdb, + "dochub": $fa-var-dochub, + "accessible-icon": $fa-var-accessible-icon, + "ebay": $fa-var-ebay, + "amazon": $fa-var-amazon, + "unsplash": $fa-var-unsplash, + "yarn": $fa-var-yarn, + "square-steam": $fa-var-square-steam, + "steam-square": $fa-var-steam-square, + "500px": $fa-var-500px, + "square-vimeo": $fa-var-square-vimeo, + "vimeo-square": $fa-var-vimeo-square, + "asymmetrik": $fa-var-asymmetrik, + "font-awesome": $fa-var-font-awesome, + "font-awesome-flag": $fa-var-font-awesome-flag, + "font-awesome-logo-full": $fa-var-font-awesome-logo-full, + "gratipay": $fa-var-gratipay, + "apple": $fa-var-apple, + "hive": $fa-var-hive, + "gitkraken": $fa-var-gitkraken, + "keybase": $fa-var-keybase, + "apple-pay": $fa-var-apple-pay, + "padlet": $fa-var-padlet, + "amazon-pay": $fa-var-amazon-pay, + "square-github": $fa-var-square-github, + "github-square": $fa-var-github-square, + "stumbleupon": $fa-var-stumbleupon, + "fedex": $fa-var-fedex, + "phoenix-framework": $fa-var-phoenix-framework, + "shopify": $fa-var-shopify, + "neos": $fa-var-neos, + "square-threads": $fa-var-square-threads, + "hackerrank": $fa-var-hackerrank, + "researchgate": $fa-var-researchgate, + "swift": $fa-var-swift, + "angular": $fa-var-angular, + "speakap": $fa-var-speakap, + "angrycreative": $fa-var-angrycreative, + "y-combinator": $fa-var-y-combinator, + "empire": $fa-var-empire, + "envira": $fa-var-envira, + "square-gitlab": $fa-var-square-gitlab, + "gitlab-square": $fa-var-gitlab-square, + "studiovinari": $fa-var-studiovinari, + "pied-piper": $fa-var-pied-piper, + "wordpress": $fa-var-wordpress, + "product-hunt": $fa-var-product-hunt, + "firefox": $fa-var-firefox, + "linode": $fa-var-linode, + "goodreads": $fa-var-goodreads, + "square-odnoklassniki": $fa-var-square-odnoklassniki, + "odnoklassniki-square": $fa-var-odnoklassniki-square, + "jsfiddle": $fa-var-jsfiddle, + "sith": $fa-var-sith, + "themeisle": $fa-var-themeisle, + "page4": $fa-var-page4, + "hashnode": $fa-var-hashnode, + "react": $fa-var-react, + "cc-paypal": $fa-var-cc-paypal, + "squarespace": $fa-var-squarespace, + "cc-stripe": $fa-var-cc-stripe, + "creative-commons-share": $fa-var-creative-commons-share, + "bitcoin": $fa-var-bitcoin, + "keycdn": $fa-var-keycdn, + "opera": $fa-var-opera, + "itch-io": $fa-var-itch-io, + "umbraco": $fa-var-umbraco, + "galactic-senate": $fa-var-galactic-senate, + "ubuntu": $fa-var-ubuntu, + "draft2digital": $fa-var-draft2digital, + "stripe": $fa-var-stripe, + "houzz": $fa-var-houzz, + "gg": $fa-var-gg, + "dhl": $fa-var-dhl, + "square-pinterest": $fa-var-square-pinterest, + "pinterest-square": $fa-var-pinterest-square, + "xing": $fa-var-xing, + "blackberry": $fa-var-blackberry, + "creative-commons-pd": $fa-var-creative-commons-pd, + "playstation": $fa-var-playstation, + "quinscape": $fa-var-quinscape, + "less": $fa-var-less, + "blogger-b": $fa-var-blogger-b, + "opencart": $fa-var-opencart, + "vine": $fa-var-vine, + "paypal": $fa-var-paypal, + "gitlab": $fa-var-gitlab, + "typo3": $fa-var-typo3, + "reddit-alien": $fa-var-reddit-alien, + "yahoo": $fa-var-yahoo, + "dailymotion": $fa-var-dailymotion, + "affiliatetheme": $fa-var-affiliatetheme, + "pied-piper-pp": $fa-var-pied-piper-pp, + "bootstrap": $fa-var-bootstrap, + "odnoklassniki": $fa-var-odnoklassniki, + "nfc-symbol": $fa-var-nfc-symbol, + "ethereum": $fa-var-ethereum, + "speaker-deck": $fa-var-speaker-deck, + "creative-commons-nc-eu": $fa-var-creative-commons-nc-eu, + "patreon": $fa-var-patreon, + "avianex": $fa-var-avianex, + "ello": $fa-var-ello, + "gofore": $fa-var-gofore, + "bimobject": $fa-var-bimobject, + "facebook-f": $fa-var-facebook-f, + "square-google-plus": $fa-var-square-google-plus, + "google-plus-square": $fa-var-google-plus-square, + "mandalorian": $fa-var-mandalorian, + "first-order-alt": $fa-var-first-order-alt, + "osi": $fa-var-osi, + "google-wallet": $fa-var-google-wallet, + "d-and-d-beyond": $fa-var-d-and-d-beyond, + "periscope": $fa-var-periscope, + "fulcrum": $fa-var-fulcrum, + "cloudscale": $fa-var-cloudscale, + "forumbee": $fa-var-forumbee, + "mizuni": $fa-var-mizuni, + "schlix": $fa-var-schlix, + "square-xing": $fa-var-square-xing, + "xing-square": $fa-var-xing-square, + "bandcamp": $fa-var-bandcamp, + "wpforms": $fa-var-wpforms, + "cloudversify": $fa-var-cloudversify, + "usps": $fa-var-usps, + "megaport": $fa-var-megaport, + "magento": $fa-var-magento, + "spotify": $fa-var-spotify, + "optin-monster": $fa-var-optin-monster, + "fly": $fa-var-fly, + "aviato": $fa-var-aviato, + "itunes": $fa-var-itunes, + "cuttlefish": $fa-var-cuttlefish, + "blogger": $fa-var-blogger, + "flickr": $fa-var-flickr, + "viber": $fa-var-viber, + "soundcloud": $fa-var-soundcloud, + "digg": $fa-var-digg, + "tencent-weibo": $fa-var-tencent-weibo, + "symfony": $fa-var-symfony, + "maxcdn": $fa-var-maxcdn, + "etsy": $fa-var-etsy, + "facebook-messenger": $fa-var-facebook-messenger, + "audible": $fa-var-audible, + "think-peaks": $fa-var-think-peaks, + "bilibili": $fa-var-bilibili, + "erlang": $fa-var-erlang, + "x-twitter": $fa-var-x-twitter, + "cotton-bureau": $fa-var-cotton-bureau, + "dashcube": $fa-var-dashcube, + "42-group": $fa-var-42-group, + "innosoft": $fa-var-innosoft, + "stack-exchange": $fa-var-stack-exchange, + "elementor": $fa-var-elementor, + "square-pied-piper": $fa-var-square-pied-piper, + "pied-piper-square": $fa-var-pied-piper-square, + "creative-commons-nd": $fa-var-creative-commons-nd, + "palfed": $fa-var-palfed, + "superpowers": $fa-var-superpowers, + "resolving": $fa-var-resolving, + "xbox": $fa-var-xbox, + "searchengin": $fa-var-searchengin, + "tiktok": $fa-var-tiktok, + "square-facebook": $fa-var-square-facebook, + "facebook-square": $fa-var-facebook-square, + "renren": $fa-var-renren, + "linux": $fa-var-linux, + "glide": $fa-var-glide, + "linkedin": $fa-var-linkedin, + "hubspot": $fa-var-hubspot, + "deploydog": $fa-var-deploydog, + "twitch": $fa-var-twitch, + "ravelry": $fa-var-ravelry, + "mixer": $fa-var-mixer, + "square-lastfm": $fa-var-square-lastfm, + "lastfm-square": $fa-var-lastfm-square, + "vimeo": $fa-var-vimeo, + "mendeley": $fa-var-mendeley, + "uniregistry": $fa-var-uniregistry, + "figma": $fa-var-figma, + "creative-commons-remix": $fa-var-creative-commons-remix, + "cc-amazon-pay": $fa-var-cc-amazon-pay, + "dropbox": $fa-var-dropbox, + "instagram": $fa-var-instagram, + "cmplid": $fa-var-cmplid, + "facebook": $fa-var-facebook, + "gripfire": $fa-var-gripfire, + "jedi-order": $fa-var-jedi-order, + "uikit": $fa-var-uikit, + "fort-awesome-alt": $fa-var-fort-awesome-alt, + "phabricator": $fa-var-phabricator, + "ussunnah": $fa-var-ussunnah, + "earlybirds": $fa-var-earlybirds, + "trade-federation": $fa-var-trade-federation, + "autoprefixer": $fa-var-autoprefixer, + "whatsapp": $fa-var-whatsapp, + "slideshare": $fa-var-slideshare, + "google-play": $fa-var-google-play, + "viadeo": $fa-var-viadeo, + "line": $fa-var-line, + "google-drive": $fa-var-google-drive, + "servicestack": $fa-var-servicestack, + "simplybuilt": $fa-var-simplybuilt, + "bitbucket": $fa-var-bitbucket, + "imdb": $fa-var-imdb, + "deezer": $fa-var-deezer, + "raspberry-pi": $fa-var-raspberry-pi, + "jira": $fa-var-jira, + "docker": $fa-var-docker, + "screenpal": $fa-var-screenpal, + "bluetooth": $fa-var-bluetooth, + "gitter": $fa-var-gitter, + "d-and-d": $fa-var-d-and-d, + "microblog": $fa-var-microblog, + "cc-diners-club": $fa-var-cc-diners-club, + "gg-circle": $fa-var-gg-circle, + "pied-piper-hat": $fa-var-pied-piper-hat, + "kickstarter-k": $fa-var-kickstarter-k, + "yandex": $fa-var-yandex, + "readme": $fa-var-readme, + "html5": $fa-var-html5, + "sellsy": $fa-var-sellsy, + "sass": $fa-var-sass, + "wirsindhandwerk": $fa-var-wirsindhandwerk, + "wsh": $fa-var-wsh, + "buromobelexperte": $fa-var-buromobelexperte, + "salesforce": $fa-var-salesforce, + "octopus-deploy": $fa-var-octopus-deploy, + "medapps": $fa-var-medapps, + "ns8": $fa-var-ns8, + "pinterest-p": $fa-var-pinterest-p, + "apper": $fa-var-apper, + "fort-awesome": $fa-var-fort-awesome, + "waze": $fa-var-waze, + "cc-jcb": $fa-var-cc-jcb, + "snapchat": $fa-var-snapchat, + "snapchat-ghost": $fa-var-snapchat-ghost, + "fantasy-flight-games": $fa-var-fantasy-flight-games, + "rust": $fa-var-rust, + "wix": $fa-var-wix, + "square-behance": $fa-var-square-behance, + "behance-square": $fa-var-behance-square, + "supple": $fa-var-supple, + "rebel": $fa-var-rebel, + "css3": $fa-var-css3, + "staylinked": $fa-var-staylinked, + "kaggle": $fa-var-kaggle, + "space-awesome": $fa-var-space-awesome, + "deviantart": $fa-var-deviantart, + "cpanel": $fa-var-cpanel, + "goodreads-g": $fa-var-goodreads-g, + "square-git": $fa-var-square-git, + "git-square": $fa-var-git-square, + "square-tumblr": $fa-var-square-tumblr, + "tumblr-square": $fa-var-tumblr-square, + "trello": $fa-var-trello, + "creative-commons-nc-jp": $fa-var-creative-commons-nc-jp, + "get-pocket": $fa-var-get-pocket, + "perbyte": $fa-var-perbyte, + "grunt": $fa-var-grunt, + "weebly": $fa-var-weebly, + "connectdevelop": $fa-var-connectdevelop, + "leanpub": $fa-var-leanpub, + "black-tie": $fa-var-black-tie, + "themeco": $fa-var-themeco, + "python": $fa-var-python, + "android": $fa-var-android, + "bots": $fa-var-bots, + "free-code-camp": $fa-var-free-code-camp, + "hornbill": $fa-var-hornbill, + "js": $fa-var-js, + "ideal": $fa-var-ideal, + "git": $fa-var-git, + "dev": $fa-var-dev, + "sketch": $fa-var-sketch, + "yandex-international": $fa-var-yandex-international, + "cc-amex": $fa-var-cc-amex, + "uber": $fa-var-uber, + "github": $fa-var-github, + "php": $fa-var-php, + "alipay": $fa-var-alipay, + "youtube": $fa-var-youtube, + "skyatlas": $fa-var-skyatlas, + "firefox-browser": $fa-var-firefox-browser, + "replyd": $fa-var-replyd, + "suse": $fa-var-suse, + "jenkins": $fa-var-jenkins, + "twitter": $fa-var-twitter, + "rockrms": $fa-var-rockrms, + "pinterest": $fa-var-pinterest, + "buffer": $fa-var-buffer, + "npm": $fa-var-npm, + "yammer": $fa-var-yammer, + "btc": $fa-var-btc, + "dribbble": $fa-var-dribbble, + "stumbleupon-circle": $fa-var-stumbleupon-circle, + "internet-explorer": $fa-var-internet-explorer, + "stubber": $fa-var-stubber, + "telegram": $fa-var-telegram, + "telegram-plane": $fa-var-telegram-plane, + "old-republic": $fa-var-old-republic, + "odysee": $fa-var-odysee, + "square-whatsapp": $fa-var-square-whatsapp, + "whatsapp-square": $fa-var-whatsapp-square, + "node-js": $fa-var-node-js, + "edge-legacy": $fa-var-edge-legacy, + "slack": $fa-var-slack, + "slack-hash": $fa-var-slack-hash, + "medrt": $fa-var-medrt, + "usb": $fa-var-usb, + "tumblr": $fa-var-tumblr, + "vaadin": $fa-var-vaadin, + "quora": $fa-var-quora, + "square-x-twitter": $fa-var-square-x-twitter, + "reacteurope": $fa-var-reacteurope, + "medium": $fa-var-medium, + "medium-m": $fa-var-medium-m, + "amilia": $fa-var-amilia, + "mixcloud": $fa-var-mixcloud, + "flipboard": $fa-var-flipboard, + "viacoin": $fa-var-viacoin, + "critical-role": $fa-var-critical-role, + "sitrox": $fa-var-sitrox, + "discourse": $fa-var-discourse, + "joomla": $fa-var-joomla, + "mastodon": $fa-var-mastodon, + "airbnb": $fa-var-airbnb, + "wolf-pack-battalion": $fa-var-wolf-pack-battalion, + "buy-n-large": $fa-var-buy-n-large, + "gulp": $fa-var-gulp, + "creative-commons-sampling-plus": $fa-var-creative-commons-sampling-plus, + "strava": $fa-var-strava, + "ember": $fa-var-ember, + "canadian-maple-leaf": $fa-var-canadian-maple-leaf, + "teamspeak": $fa-var-teamspeak, + "pushed": $fa-var-pushed, + "wordpress-simple": $fa-var-wordpress-simple, + "nutritionix": $fa-var-nutritionix, + "wodu": $fa-var-wodu, + "google-pay": $fa-var-google-pay, + "intercom": $fa-var-intercom, + "zhihu": $fa-var-zhihu, + "korvue": $fa-var-korvue, + "pix": $fa-var-pix, + "steam-symbol": $fa-var-steam-symbol, +); diff --git a/_sass/font-awesome/brands.scss b/_sass/font-awesome/brands.scss new file mode 100644 index 0000000..202ed64 --- /dev/null +++ b/_sass/font-awesome/brands.scss @@ -0,0 +1,30 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +@import 'functions'; +@import 'variables'; + +:root, :host { + --#{$fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands'; + --#{$fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; +} + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: $fa-font-display; + src: url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'); +} + +.fab, +.#{$fa-css-prefix}-brands { + font-weight: 400; +} + +@each $name, $icon in $fa-brand-icons { + .#{$fa-css-prefix}-#{$name}:before { content: unquote("\"#{ $icon }\""); } +} diff --git a/_sass/font-awesome/fontawesome.scss b/_sass/font-awesome/fontawesome.scss new file mode 100644 index 0000000..499dda2 --- /dev/null +++ b/_sass/font-awesome/fontawesome.scss @@ -0,0 +1,21 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +// Font Awesome core compile (Web Fonts-based) +// ------------------------- + +@import 'functions'; +@import 'variables'; +@import 'mixins'; +@import 'core'; +@import 'sizing'; +@import 'fixed-width'; +@import 'list'; +@import 'bordered-pulled'; +@import 'animated'; +@import 'rotated-flipped'; +@import 'stacked'; +@import 'icons'; +@import 'screen-reader'; diff --git a/_sass/font-awesome/regular.scss b/_sass/font-awesome/regular.scss new file mode 100644 index 0000000..fb1197c --- /dev/null +++ b/_sass/font-awesome/regular.scss @@ -0,0 +1,26 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +@import 'functions'; +@import 'variables'; + +:root, :host { + --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }'; + --#{$fa-css-prefix}-font-regular: normal 400 1em/1 '#{ $fa-style-family }'; +} + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: $fa-font-display; + src: url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), + url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'); +} + +.far, +.#{$fa-css-prefix}-regular { + font-weight: 400; +} diff --git a/_sass/font-awesome/solid.scss b/_sass/font-awesome/solid.scss new file mode 100644 index 0000000..e53e619 --- /dev/null +++ b/_sass/font-awesome/solid.scss @@ -0,0 +1,26 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +@import 'functions'; +@import 'variables'; + +:root, :host { + --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }'; + --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }'; +} + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: $fa-font-display; + src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), + url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'); +} + +.fas, +.#{$fa-css-prefix}-solid { + font-weight: 900; +} diff --git a/_sass/font-awesome/v4-shims.scss b/_sass/font-awesome/v4-shims.scss new file mode 100644 index 0000000..d6edb63 --- /dev/null +++ b/_sass/font-awesome/v4-shims.scss @@ -0,0 +1,11 @@ +/*! + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. + */ +// V4 shims compile (Web Fonts-based) +// ------------------------- + +@import 'functions'; +@import 'variables'; +@import 'shims'; diff --git a/assets/audio/epicaly-short-113909.mp3 b/assets/audio/epicaly-short-113909.mp3 new file mode 100644 index 0000000..5fd64b9 Binary files /dev/null and b/assets/audio/epicaly-short-113909.mp3 differ diff --git a/assets/bibliography/2018-12-22-distill.bib b/assets/bibliography/2018-12-22-distill.bib new file mode 100644 index 0000000..2b06f3c --- /dev/null +++ b/assets/bibliography/2018-12-22-distill.bib @@ -0,0 +1,7 @@ +@article{gregor2015draw, + title={DRAW: A recurrent neural network for image generation}, + author={Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan}, + journal={arXiv preprint, arXiv:1502.04623}, + year={2015}, + url={https://arxiv.org/pdf/1502.04623.pdf} +} diff --git a/assets/css/academicons.min.css b/assets/css/academicons.min.css new file mode 100644 index 0000000..29a4f84 --- /dev/null +++ b/assets/css/academicons.min.css @@ -0,0 +1 @@ + @font-face {font-family: 'Academicons';font-style: normal;font-weight: 400;font-display: block;src:url('../fonts/academicons.eot');src:url('../fonts/academicons.eot') format('embedded-opentype'), url('../fonts/academicons.ttf') format('truetype'), url('../fonts/academicons.woff') format('woff'), url('../fonts/academicons.svg') format('svg');}.ai {font-family: 'Academicons';font-weight: 400;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased;display: inline-block;font-style: normal;font-variant: normal;text-rendering: auto;line-height: 1;}.ai-academia:before {content: "\e9af";}.ai-academia-square:before {content: "\e93d";}.ai-acclaim:before {content: "\e92e";}.ai-acclaim-square:before {content: "\e93a";}.ai-acm:before {content: "\e93c";}.ai-acm-square:before {content: "\e95d";}.ai-acmdl:before {content: "\e96a";}.ai-acmdl-square:before {content: "\e9d3";}.ai-ads:before {content: "\e9cb";}.ai-ads-square:before {content: "\e94a";}.ai-africarxiv:before {content: "\e91b";}.ai-africarxiv-square:before {content: "\e90b";}.ai-archive:before {content: "\e955";}.ai-archive-square:before {content: "\e956";}.ai-arxiv:before {content: "\e974";}.ai-arxiv-square:before {content: "\e9a6";}.ai-biorxiv:before {content: "\e9a2";}.ai-biorxiv-square:before {content: "\e98b";}.ai-ceur:before {content: "\e96d";}.ai-ceur-square:before {content: "\e92f";}.ai-ciencia-vitae:before {content: "\e912";}.ai-ciencia-vitae-square:before {content: "\e913";}.ai-clarivate:before {content: "\e924";}.ai-clarivate-square:before {content: "\e925";}.ai-closed-access:before {content: "\e942";}.ai-closed-access-square:before {content: "\e943";}.ai-conversation:before {content: "\e94c";}.ai-conversation-square:before {content: "\e915";}.ai-coursera:before {content: "\e95f";}.ai-coursera-square:before {content: "\e97f";}.ai-crossref:before {content: "\e918";}.ai-crossref-square:before {content: "\e919";}.ai-cv:before {content: "\e9a5";}.ai-cv-square:before {content: "\e90a";}.ai-datacite:before {content: "\e91c";}.ai-datacite-square:before {content: "\e91d";}.ai-dataverse:before {content: "\e9f7";}.ai-dataverse-square:before {content: "\e9e4";}.ai-dblp:before {content: "\e94f";}.ai-dblp-square:before {content: "\e93f";}.ai-depsy:before {content: "\e97a";}.ai-depsy-square:before {content: "\e94b";}.ai-doi:before {content: "\e97e";}.ai-doi-square:before {content: "\e98f";}.ai-dryad:before {content: "\e97c";}.ai-dryad-square:before {content: "\e98c";}.ai-elsevier:before {content: "\e961";}.ai-elsevier-square:before {content: "\e910";}.ai-figshare:before {content: "\e981";}.ai-figshare-square:before {content: "\e9e7";}.ai-google-scholar:before {content: "\e9d4";}.ai-google-scholar-square:before {content: "\e9f9";}.ai-hal:before {content: "\e92c";}.ai-hal-square:before {content: "\e92d";}.ai-hypothesis:before {content: "\e95a";}.ai-hypothesis-square:before {content: "\e95b";}.ai-ideas-repec:before {content: "\e9ed";}.ai-ideas-repec-square:before {content: "\e9f8";}.ai-ieee:before {content: "\e929";}.ai-ieee-square:before {content: "\e9b9";}.ai-impactstory:before {content: "\e9cf";}.ai-impactstory-square:before {content: "\e9aa";}.ai-inaturalist:before {content: "\e900";}.ai-inaturalist-square:before {content: "\e901";}.ai-inpn:before {content: "\e902";}.ai-inpn-square:before {content: "\e903";}.ai-inspire:before {content: "\e9e9";}.ai-inspire-square:before {content: "\e9fe";}.ai-isidore:before {content: "\e936";}.ai-isidore-square:before {content: "\e954";}.ai-isni:before {content: "\e957";}.ai-isni-square:before {content: "\e958";}.ai-jstor:before {content: "\e938";}.ai-jstor-square:before {content: "\e944";}.ai-lattes:before {content: "\e9b3";}.ai-lattes-square:before {content: "\e99c";}.ai-mathoverflow:before {content: "\e9f6";}.ai-mathoverflow-square:before {content: "\e97b";}.ai-mendeley:before {content: "\e9f0";}.ai-mendeley-square:before {content: "\e9f3";}.ai-moodle:before {content: "\e907";}.ai-moodle-square:before {content: "\e908";}.ai-mtmt:before {content: "\e950";}.ai-mtmt-square:before {content: "\e951";}.ai-nakala:before {content: "\e940";}.ai-nakala-square:before {content: "\e941";}.ai-obp:before {content: "\e92a";}.ai-obp-square:before {content: "\e92b";}.ai-open-access:before {content: "\e939";}.ai-open-access-square:before {content: "\e9f4";}.ai-open-data:before {content: "\e966";}.ai-open-data-square:before {content: "\e967";}.ai-open-materials:before {content: "\e968";}.ai-open-materials-square:before {content: "\e969";}.ai-openedition:before {content: "\e946";}.ai-openedition-square:before {content: "\e947";}.ai-orcid:before {content: "\e9d9";}.ai-orcid-square:before {content: "\e9c3";}.ai-osf:before {content: "\e9ef";}.ai-osf-square:before {content: "\e931";}.ai-overleaf:before {content: "\e914";}.ai-overleaf-square:before {content: "\e98d";}.ai-philpapers:before {content: "\e98a";}.ai-philpapers-square:before {content: "\e96f";}.ai-piazza:before {content: "\e99a";}.ai-piazza-square:before {content: "\e90c";}.ai-preregistered:before {content: "\e906";}.ai-preregistered-square:before {content: "\e96b";}.ai-protocols:before {content: "\e952";}.ai-protocols-square:before {content: "\e953";}.ai-psyarxiv:before {content: "\e90e";}.ai-psyarxiv-square:before {content: "\e90f";}.ai-publons:before {content: "\e937";}.ai-publons-square:before {content: "\e94e";}.ai-pubmed:before {content: "\e99f";}.ai-pubmed-square:before {content: "\e97d";}.ai-pubpeer:before {content: "\e922";}.ai-pubpeer-square:before {content: "\e923";}.ai-researcherid:before {content: "\e91a";}.ai-researcherid-square:before {content: "\e95c";}.ai-researchgate:before {content: "\e95e";}.ai-researchgate-square:before {content: "\e99e";}.ai-ror:before {content: "\e948";}.ai-ror-square:before {content: "\e949";}.ai-sci-hub:before {content: "\e959";}.ai-sci-hub-square:before {content: "\e905";}.ai-scirate:before {content: "\e98e";}.ai-scirate-square:before {content: "\e99d";}.ai-scopus:before {content: "\e91e";}.ai-scopus-square:before {content: "\e91f";}.ai-semantic-scholar:before {content: "\e96e";}.ai-semantic-scholar-square:before {content: "\e96c";}.ai-springer:before {content: "\e928";}.ai-springer-square:before {content: "\e99b";}.ai-ssrn:before {content: "\e916";}.ai-ssrn-square:before {content: "\e917";}.ai-stackoverflow:before {content: "\e920";}.ai-stackoverflow-square:before {content: "\e921";}.ai-viaf:before {content: "\e933";}.ai-viaf-square:before {content: "\e934";}.ai-wiley:before {content: "\e926";}.ai-wiley-square:before {content: "\e927";}.ai-zenodo:before {content: "\e911";}.ai-zotero:before {content: "\e962";}.ai-zotero-square:before {content: "\e932";}.ai-lg {font-size: 1.33333em;line-height: 0.75em;vertical-align: -.0667em;}.ai-xs {font-size: .75em;}.ai-sm {font-size: .875em;}.ai-1x {font-size: 1em;}.ai-2x {font-size: 2em;}.ai-3x {font-size: 3em;}.ai-4x {font-size: 4em;}.ai-5x {font-size: 5em;}.ai-6x {font-size: 6em;}.ai-7x {font-size: 7em;}.ai-8x {font-size: 8em;}.ai-9x {font-size: 9em;}.ai-10x {font-size: 10em;}.ai-fw {text-align: center;width: 1.25em;}.ai-ul {list-style-type: none;margin-left: 2.5em;padding-left: 0;}.ai-ul > li {position: relative;}.ai-li {left: -2em;position: absolute;text-align: center;width: 2em;line-height: inherit;}.ai-border {border: solid 0.08em #eee;border-radius: .1em;padding: .2em .25em .15em;}.ai-pull-left {float: left;}.ai-pull-right {float: right;}.ai.ai-pull-left {margin-right: .3em;}.ai.ai-pull-right {margin-right: .3em;}.ai-stack {display: inline-block;height: 2em;line-height: 2em;position: relative;vertical-align: middle;width: 2.5em;}.ai-stack-1x, .ai-stack-2x {left: 0;position: absolute;text-align: center;width: 100%;}.ai-stack-1x {line-height: inherit;}.ai-stack-2x {font-size: 2em;}.ai-inverse {color: #fff;} diff --git a/assets/css/bootstrap-toc.min.css b/assets/css/bootstrap-toc.min.css new file mode 100644 index 0000000..3c62107 --- /dev/null +++ b/assets/css/bootstrap-toc.min.css @@ -0,0 +1,4 @@ +/*! + * Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */nav[data-toggle=toc] .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}nav[data-toggle=toc] .nav>li>a:focus,nav[data-toggle=toc] .nav>li>a:hover{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}nav[data-toggle=toc] .nav-link.active,nav[data-toggle=toc] .nav-link.active:focus,nav[data-toggle=toc] .nav-link.active:hover{padding-left:18px;font-weight:700;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}nav[data-toggle=toc] .nav-link+ul{display:none;padding-bottom:10px}nav[data-toggle=toc] .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}nav[data-toggle=toc] .nav .nav>li>a:focus,nav[data-toggle=toc] .nav .nav>li>a:hover{padding-left:29px}nav[data-toggle=toc] .nav .nav>li>.active,nav[data-toggle=toc] .nav .nav>li>.active:focus,nav[data-toggle=toc] .nav .nav>li>.active:hover{padding-left:28px;font-weight:500}nav[data-toggle=toc] .nav-link.active+ul{display:block} \ No newline at end of file diff --git a/assets/css/bootstrap.min.css b/assets/css/bootstrap.min.css new file mode 100644 index 0000000..83a71b1 --- /dev/null +++ b/assets/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/assets/css/bootstrap.min.css.map b/assets/css/bootstrap.min.css.map new file mode 100644 index 0000000..4eb4637 --- /dev/null +++ b/assets/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_interactions.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\n // making it impossible to interact with the content\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Set the cursor for non-`

    +
    +`); + + class Interstitial extends T$9(HTMLElement) { + + connectedCallback() { + if (this.shouldRemoveSelf()) { + this.parentElement.removeChild(this); + } else { + const passwordInput = this.root.querySelector('#interstitial-password-input'); + passwordInput.oninput = (event) => this.passwordChanged(event); + } + } + + passwordChanged(event) { + const entered = event.target.value; + if (entered === this.password) { + console.log('Correct password entered.'); + this.parentElement.removeChild(this); + if (typeof(Storage) !== 'undefined') { + console.log('Saved that correct password was entered.'); + localStorage.setItem(this.localStorageIdentifier(), 'true'); + } + } + } + + shouldRemoveSelf() { + // should never be visible in production + if (window && window.location.hostname === productionHostname) { + console.warn('Interstitial found on production, hiding it.'); + return true + } + // should only have to enter password once + if (typeof(Storage) !== 'undefined') { + if (localStorage.getItem(this.localStorageIdentifier()) === 'true') { + console.log('Loaded that correct password was entered before; skipping interstitial.'); + return true; + } + } + // otherwise, leave visible + return false; + } + + localStorageIdentifier() { + const prefix = 'distill-drafts'; + const suffix = 'interstitial-password-correct'; + return prefix + (window ? window.location.pathname : '-') + suffix + } + + } + + function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + } + + function bisector(compare) { + if (compare.length === 1) compare = ascendingComparator(compare); + return { + left: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) > 0) hi = mid; + else lo = mid + 1; + } + return lo; + } + }; + } + + function ascendingComparator(f) { + return function(d, x) { + return ascending(f(d), x); + }; + } + + var ascendingBisect = bisector(ascending); + var bisectRight = ascendingBisect.right; + + function range(start, stop, step) { + start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; + + var i = -1, + n = Math.max(0, Math.ceil((stop - start) / step)) | 0, + range = new Array(n); + + while (++i < n) { + range[i] = start + i * step; + } + + return range; + } + + var e10 = Math.sqrt(50), + e5 = Math.sqrt(10), + e2 = Math.sqrt(2); + + function ticks(start, stop, count) { + var reverse, + i = -1, + n, + ticks, + step; + + stop = +stop, start = +start, count = +count; + if (start === stop && count > 0) return [start]; + if (reverse = stop < start) n = start, start = stop, stop = n; + if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; + + if (step > 0) { + start = Math.ceil(start / step); + stop = Math.floor(stop / step); + ticks = new Array(n = Math.ceil(stop - start + 1)); + while (++i < n) ticks[i] = (start + i) * step; + } else { + start = Math.floor(start * step); + stop = Math.ceil(stop * step); + ticks = new Array(n = Math.ceil(start - stop + 1)); + while (++i < n) ticks[i] = (start - i) / step; + } + + if (reverse) ticks.reverse(); + + return ticks; + } + + function tickIncrement(start, stop, count) { + var step = (stop - start) / Math.max(0, count), + power = Math.floor(Math.log(step) / Math.LN10), + error = step / Math.pow(10, power); + return power >= 0 + ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) + : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); + } + + function tickStep(start, stop, count) { + var step0 = Math.abs(stop - start) / Math.max(0, count), + step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), + error = step0 / step1; + if (error >= e10) step1 *= 10; + else if (error >= e5) step1 *= 5; + else if (error >= e2) step1 *= 2; + return stop < start ? -step1 : step1; + } + + function initRange(domain, range) { + switch (arguments.length) { + case 0: break; + case 1: this.range(domain); break; + default: this.range(range).domain(domain); break; + } + return this; + } + + function define(constructor, factory, prototype) { + constructor.prototype = factory.prototype = prototype; + prototype.constructor = constructor; + } + + function extend(parent, definition) { + var prototype = Object.create(parent.prototype); + for (var key in definition) prototype[key] = definition[key]; + return prototype; + } + + function Color() {} + + var darker = 0.7; + var brighter = 1 / darker; + + var reI = "\\s*([+-]?\\d+)\\s*", + reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", + reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", + reHex = /^#([0-9a-f]{3,8})$/, + reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), + reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), + reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), + reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), + reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), + reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); + + var named = { + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgreen: 0x006400, + darkgrey: 0xa9a9a9, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + grey: 0x808080, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgreen: 0x90ee90, + lightgrey: 0xd3d3d3, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 + }; + + define(Color, color, { + copy: function(channels) { + return Object.assign(new this.constructor, this, channels); + }, + displayable: function() { + return this.rgb().displayable(); + }, + hex: color_formatHex, // Deprecated! Use color.formatHex. + formatHex: color_formatHex, + formatHsl: color_formatHsl, + formatRgb: color_formatRgb, + toString: color_formatRgb + }); + + function color_formatHex() { + return this.rgb().formatHex(); + } + + function color_formatHsl() { + return hslConvert(this).formatHsl(); + } + + function color_formatRgb() { + return this.rgb().formatRgb(); + } + + function color(format) { + var m, l; + format = (format + "").trim().toLowerCase(); + return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 + : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 + : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 + : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 + : null) // invalid hex + : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) + : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) + : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) + : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) + : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) + : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) + : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins + : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) + : null; + } + + function rgbn(n) { + return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); + } + + function rgba(r, g, b, a) { + if (a <= 0) r = g = b = NaN; + return new Rgb(r, g, b, a); + } + + function rgbConvert(o) { + if (!(o instanceof Color)) o = color(o); + if (!o) return new Rgb; + o = o.rgb(); + return new Rgb(o.r, o.g, o.b, o.opacity); + } + + function rgb(r, g, b, opacity) { + return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); + } + + function Rgb(r, g, b, opacity) { + this.r = +r; + this.g = +g; + this.b = +b; + this.opacity = +opacity; + } + + define(Rgb, rgb, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + rgb: function() { + return this; + }, + displayable: function() { + return (-0.5 <= this.r && this.r < 255.5) + && (-0.5 <= this.g && this.g < 255.5) + && (-0.5 <= this.b && this.b < 255.5) + && (0 <= this.opacity && this.opacity <= 1); + }, + hex: rgb_formatHex, // Deprecated! Use color.formatHex. + formatHex: rgb_formatHex, + formatRgb: rgb_formatRgb, + toString: rgb_formatRgb + })); + + function rgb_formatHex() { + return "#" + hex(this.r) + hex(this.g) + hex(this.b); + } + + function rgb_formatRgb() { + var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); + return (a === 1 ? "rgb(" : "rgba(") + + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + + (a === 1 ? ")" : ", " + a + ")"); + } + + function hex(value) { + value = Math.max(0, Math.min(255, Math.round(value) || 0)); + return (value < 16 ? "0" : "") + value.toString(16); + } + + function hsla(h, s, l, a) { + if (a <= 0) h = s = l = NaN; + else if (l <= 0 || l >= 1) h = s = NaN; + else if (s <= 0) h = NaN; + return new Hsl(h, s, l, a); + } + + function hslConvert(o) { + if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Color)) o = color(o); + if (!o) return new Hsl; + if (o instanceof Hsl) return o; + o = o.rgb(); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + h = NaN, + s = max - min, + l = (max + min) / 2; + if (s) { + if (r === max) h = (g - b) / s + (g < b) * 6; + else if (g === max) h = (b - r) / s + 2; + else h = (r - g) / s + 4; + s /= l < 0.5 ? max + min : 2 - max - min; + h *= 60; + } else { + s = l > 0 && l < 1 ? 0 : h; + } + return new Hsl(h, s, l, o.opacity); + } + + function hsl(h, s, l, opacity) { + return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); + } + + function Hsl(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; + } + + define(Hsl, hsl, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = this.h % 360 + (this.h < 0) * 360, + s = isNaN(h) || isNaN(this.s) ? 0 : this.s, + l = this.l, + m2 = l + (l < 0.5 ? l : 1 - l) * s, + m1 = 2 * l - m2; + return new Rgb( + hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), + hsl2rgb(h, m1, m2), + hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), + this.opacity + ); + }, + displayable: function() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) + && (0 <= this.l && this.l <= 1) + && (0 <= this.opacity && this.opacity <= 1); + }, + formatHsl: function() { + var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); + return (a === 1 ? "hsl(" : "hsla(") + + (this.h || 0) + ", " + + (this.s || 0) * 100 + "%, " + + (this.l || 0) * 100 + "%" + + (a === 1 ? ")" : ", " + a + ")"); + } + })); + + /* From FvD 13.37, CSS Color Module Level 3 */ + function hsl2rgb(h, m1, m2) { + return (h < 60 ? m1 + (m2 - m1) * h / 60 + : h < 180 ? m2 + : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 + : m1) * 255; + } + + var deg2rad = Math.PI / 180; + var rad2deg = 180 / Math.PI; + + // https://observablehq.com/@mbostock/lab-and-rgb + var K = 18, + Xn = 0.96422, + Yn = 1, + Zn = 0.82521, + t0 = 4 / 29, + t1 = 6 / 29, + t2 = 3 * t1 * t1, + t3 = t1 * t1 * t1; + + function labConvert(o) { + if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); + if (o instanceof Hcl) return hcl2lab(o); + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = rgb2lrgb(o.r), + g = rgb2lrgb(o.g), + b = rgb2lrgb(o.b), + y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; + if (r === g && g === b) x = z = y; else { + x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); + z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); + } + return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); + } + + function lab(l, a, b, opacity) { + return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); + } + + function Lab(l, a, b, opacity) { + this.l = +l; + this.a = +a; + this.b = +b; + this.opacity = +opacity; + } + + define(Lab, lab, extend(Color, { + brighter: function(k) { + return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + darker: function(k) { + return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + rgb: function() { + var y = (this.l + 16) / 116, + x = isNaN(this.a) ? y : y + this.a / 500, + z = isNaN(this.b) ? y : y - this.b / 200; + x = Xn * lab2xyz(x); + y = Yn * lab2xyz(y); + z = Zn * lab2xyz(z); + return new Rgb( + lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), + lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), + lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), + this.opacity + ); + } + })); + + function xyz2lab(t) { + return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; + } + + function lab2xyz(t) { + return t > t1 ? t * t * t : t2 * (t - t0); + } + + function lrgb2rgb(x) { + return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); + } + + function rgb2lrgb(x) { + return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); + } + + function hclConvert(o) { + if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); + if (!(o instanceof Lab)) o = labConvert(o); + if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); + var h = Math.atan2(o.b, o.a) * rad2deg; + return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); + } + + function hcl(h, c, l, opacity) { + return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); + } + + function Hcl(h, c, l, opacity) { + this.h = +h; + this.c = +c; + this.l = +l; + this.opacity = +opacity; + } + + function hcl2lab(o) { + if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); + var h = o.h * deg2rad; + return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); + } + + define(Hcl, hcl, extend(Color, { + brighter: function(k) { + return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); + }, + darker: function(k) { + return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); + }, + rgb: function() { + return hcl2lab(this).rgb(); + } + })); + + var A = -0.14861, + B = +1.78277, + C = -0.29227, + D = -0.90649, + E = +1.97294, + ED = E * D, + EB = E * B, + BC_DA = B * C - D * A; + + function cubehelixConvert(o) { + if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), + bl = b - l, + k = (E * (g - l) - C * bl) / D, + s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 + h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; + return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); + } + + function cubehelix(h, s, l, opacity) { + return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); + } + + function Cubehelix(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; + } + + define(Cubehelix, cubehelix, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, + l = +this.l, + a = isNaN(this.s) ? 0 : this.s * l * (1 - l), + cosh = Math.cos(h), + sinh = Math.sin(h); + return new Rgb( + 255 * (l + a * (A * cosh + B * sinh)), + 255 * (l + a * (C * cosh + D * sinh)), + 255 * (l + a * (E * cosh)), + this.opacity + ); + } + })); + + function constant(x) { + return function() { + return x; + }; + } + + function linear(a, d) { + return function(t) { + return a + t * d; + }; + } + + function exponential(a, b, y) { + return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { + return Math.pow(a + t * b, y); + }; + } + + function gamma(y) { + return (y = +y) === 1 ? nogamma : function(a, b) { + return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a); + }; + } + + function nogamma(a, b) { + var d = b - a; + return d ? linear(a, d) : constant(isNaN(a) ? b : a); + } + + var rgb$1 = (function rgbGamma(y) { + var color = gamma(y); + + function rgb$1(start, end) { + var r = color((start = rgb(start)).r, (end = rgb(end)).r), + g = color(start.g, end.g), + b = color(start.b, end.b), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.r = r(t); + start.g = g(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; + } + + rgb$1.gamma = rgbGamma; + + return rgb$1; + })(1); + + function numberArray(a, b) { + if (!b) b = []; + var n = a ? Math.min(b.length, a.length) : 0, + c = b.slice(), + i; + return function(t) { + for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; + return c; + }; + } + + function isNumberArray(x) { + return ArrayBuffer.isView(x) && !(x instanceof DataView); + } + + function genericArray(a, b) { + var nb = b ? b.length : 0, + na = a ? Math.min(nb, a.length) : 0, + x = new Array(na), + c = new Array(nb), + i; + + for (i = 0; i < na; ++i) x[i] = interpolate(a[i], b[i]); + for (; i < nb; ++i) c[i] = b[i]; + + return function(t) { + for (i = 0; i < na; ++i) c[i] = x[i](t); + return c; + }; + } + + function date(a, b) { + var d = new Date; + return a = +a, b = +b, function(t) { + return d.setTime(a * (1 - t) + b * t), d; + }; + } + + function interpolateNumber(a, b) { + return a = +a, b = +b, function(t) { + return a * (1 - t) + b * t; + }; + } + + function object(a, b) { + var i = {}, + c = {}, + k; + + if (a === null || typeof a !== "object") a = {}; + if (b === null || typeof b !== "object") b = {}; + + for (k in b) { + if (k in a) { + i[k] = interpolate(a[k], b[k]); + } else { + c[k] = b[k]; + } + } + + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; + } + + var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, + reB = new RegExp(reA.source, "g"); + + function zero(b) { + return function() { + return b; + }; + } + + function one(b) { + return function(t) { + return b(t) + ""; + }; + } + + function string(a, b) { + var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b + am, // current match in a + bm, // current match in b + bs, // string preceding current number in b, if any + i = -1, // index in s + s = [], // string constants and placeholders + q = []; // number interpolators + + // Coerce inputs to strings. + a = a + "", b = b + ""; + + // Interpolate pairs of numbers in a & b. + while ((am = reA.exec(a)) + && (bm = reB.exec(b))) { + if ((bs = bm.index) > bi) { // a string precedes the next number in b + bs = b.slice(bi, bs); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match + if (s[i]) s[i] += bm; // coalesce with previous string + else s[++i] = bm; + } else { // interpolate non-matching numbers + s[++i] = null; + q.push({i: i, x: interpolateNumber(am, bm)}); + } + bi = reB.lastIndex; + } + + // Add remains of b. + if (bi < b.length) { + bs = b.slice(bi); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + + // Special optimization for only a single match. + // Otherwise, interpolate each of the numbers and rejoin the string. + return s.length < 2 ? (q[0] + ? one(q[0].x) + : zero(b)) + : (b = q.length, function(t) { + for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }); + } + + function interpolate(a, b) { + var t = typeof b, c; + return b == null || t === "boolean" ? constant(b) + : (t === "number" ? interpolateNumber + : t === "string" ? ((c = color(b)) ? (b = c, rgb$1) : string) + : b instanceof color ? rgb$1 + : b instanceof Date ? date + : isNumberArray(b) ? numberArray + : Array.isArray(b) ? genericArray + : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object + : interpolateNumber)(a, b); + } + + function interpolateRound(a, b) { + return a = +a, b = +b, function(t) { + return Math.round(a * (1 - t) + b * t); + }; + } + + function constant$1(x) { + return function() { + return x; + }; + } + + function number(x) { + return +x; + } + + var unit = [0, 1]; + + function identity(x) { + return x; + } + + function normalize(a, b) { + return (b -= (a = +a)) + ? function(x) { return (x - a) / b; } + : constant$1(isNaN(b) ? NaN : 0.5); + } + + function clamper(a, b) { + var t; + if (a > b) t = a, a = b, b = t; + return function(x) { return Math.max(a, Math.min(b, x)); }; + } + + // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. + // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. + function bimap(domain, range, interpolate) { + var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; + if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); + else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); + return function(x) { return r0(d0(x)); }; + } + + function polymap(domain, range, interpolate) { + var j = Math.min(domain.length, range.length) - 1, + d = new Array(j), + r = new Array(j), + i = -1; + + // Reverse descending domains. + if (domain[j] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + + while (++i < j) { + d[i] = normalize(domain[i], domain[i + 1]); + r[i] = interpolate(range[i], range[i + 1]); + } + + return function(x) { + var i = bisectRight(domain, x, 1, j) - 1; + return r[i](d[i](x)); + }; + } + + function copy(source, target) { + return target + .domain(source.domain()) + .range(source.range()) + .interpolate(source.interpolate()) + .clamp(source.clamp()) + .unknown(source.unknown()); + } + + function transformer() { + var domain = unit, + range = unit, + interpolate$1 = interpolate, + transform, + untransform, + unknown, + clamp = identity, + piecewise, + output, + input; + + function rescale() { + var n = Math.min(domain.length, range.length); + if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]); + piecewise = n > 2 ? polymap : bimap; + output = input = null; + return scale; + } + + function scale(x) { + return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate$1)))(transform(clamp(x))); + } + + scale.invert = function(y) { + return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); + }; + + scale.domain = function(_) { + return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice(); + }; + + scale.range = function(_) { + return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); + }; + + scale.rangeRound = function(_) { + return range = Array.from(_), interpolate$1 = interpolateRound, rescale(); + }; + + scale.clamp = function(_) { + return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity; + }; + + scale.interpolate = function(_) { + return arguments.length ? (interpolate$1 = _, rescale()) : interpolate$1; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + return function(t, u) { + transform = t, untransform = u; + return rescale(); + }; + } + + function continuous() { + return transformer()(identity, identity); + } + + // Computes the decimal coefficient and exponent of the specified number x with + // significant digits p, where x is positive and p is in [1, 21] or undefined. + // For example, formatDecimal(1.23) returns ["123", 0]. + function formatDecimal(x, p) { + if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity + var i, coefficient = x.slice(0, i); + + // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ + // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). + return [ + coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, + +x.slice(i + 1) + ]; + } + + function exponent(x) { + return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; + } + + function formatGroup(grouping, thousands) { + return function(value, width) { + var i = value.length, + t = [], + j = 0, + g = grouping[0], + length = 0; + + while (i > 0 && g > 0) { + if (length + g + 1 > width) g = Math.max(1, width - length); + t.push(value.substring(i -= g, i + g)); + if ((length += g + 1) > width) break; + g = grouping[j = (j + 1) % grouping.length]; + } + + return t.reverse().join(thousands); + }; + } + + function formatNumerals(numerals) { + return function(value) { + return value.replace(/[0-9]/g, function(i) { + return numerals[+i]; + }); + }; + } + + // [[fill]align][sign][symbol][0][width][,][.precision][~][type] + var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; + + function formatSpecifier(specifier) { + if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); + var match; + return new FormatSpecifier({ + fill: match[1], + align: match[2], + sign: match[3], + symbol: match[4], + zero: match[5], + width: match[6], + comma: match[7], + precision: match[8] && match[8].slice(1), + trim: match[9], + type: match[10] + }); + } + + formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof + + function FormatSpecifier(specifier) { + this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; + this.align = specifier.align === undefined ? ">" : specifier.align + ""; + this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; + this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; + this.zero = !!specifier.zero; + this.width = specifier.width === undefined ? undefined : +specifier.width; + this.comma = !!specifier.comma; + this.precision = specifier.precision === undefined ? undefined : +specifier.precision; + this.trim = !!specifier.trim; + this.type = specifier.type === undefined ? "" : specifier.type + ""; + } + + FormatSpecifier.prototype.toString = function() { + return this.fill + + this.align + + this.sign + + this.symbol + + (this.zero ? "0" : "") + + (this.width === undefined ? "" : Math.max(1, this.width | 0)) + + (this.comma ? "," : "") + + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) + + (this.trim ? "~" : "") + + this.type; + }; + + // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. + function formatTrim(s) { + out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { + switch (s[i]) { + case ".": i0 = i1 = i; break; + case "0": if (i0 === 0) i0 = i; i1 = i; break; + default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; + } + } + return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; + } + + var prefixExponent; + + function formatPrefixAuto(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1], + i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, + n = coefficient.length; + return i === n ? coefficient + : i > n ? coefficient + new Array(i - n + 1).join("0") + : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) + : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! + } + + function formatRounded(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1]; + return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient + : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) + : coefficient + new Array(exponent - coefficient.length + 2).join("0"); + } + + var formatTypes = { + "%": function(x, p) { return (x * 100).toFixed(p); }, + "b": function(x) { return Math.round(x).toString(2); }, + "c": function(x) { return x + ""; }, + "d": function(x) { return Math.round(x).toString(10); }, + "e": function(x, p) { return x.toExponential(p); }, + "f": function(x, p) { return x.toFixed(p); }, + "g": function(x, p) { return x.toPrecision(p); }, + "o": function(x) { return Math.round(x).toString(8); }, + "p": function(x, p) { return formatRounded(x * 100, p); }, + "r": formatRounded, + "s": formatPrefixAuto, + "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, + "x": function(x) { return Math.round(x).toString(16); } + }; + + function identity$1(x) { + return x; + } + + var map = Array.prototype.map, + prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; + + function formatLocale(locale) { + var group = locale.grouping === undefined || locale.thousands === undefined ? identity$1 : formatGroup(map.call(locale.grouping, Number), locale.thousands + ""), + currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", + currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", + decimal = locale.decimal === undefined ? "." : locale.decimal + "", + numerals = locale.numerals === undefined ? identity$1 : formatNumerals(map.call(locale.numerals, String)), + percent = locale.percent === undefined ? "%" : locale.percent + "", + minus = locale.minus === undefined ? "-" : locale.minus + "", + nan = locale.nan === undefined ? "NaN" : locale.nan + ""; + + function newFormat(specifier) { + specifier = formatSpecifier(specifier); + + var fill = specifier.fill, + align = specifier.align, + sign = specifier.sign, + symbol = specifier.symbol, + zero = specifier.zero, + width = specifier.width, + comma = specifier.comma, + precision = specifier.precision, + trim = specifier.trim, + type = specifier.type; + + // The "n" type is an alias for ",g". + if (type === "n") comma = true, type = "g"; + + // The "" type, and any invalid type, is an alias for ".12~g". + else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; + + // If zero fill is specified, padding goes after sign and before digits. + if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; + + // Compute the prefix and suffix. + // For SI-prefix, the suffix is lazily computed. + var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", + suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; + + // What format function should we use? + // Is this an integer type? + // Can this type generate exponential notation? + var formatType = formatTypes[type], + maybeSuffix = /[defgprs%]/.test(type); + + // Set the default precision if not specified, + // or clamp the specified precision to the supported range. + // For significant precision, it must be in [1, 21]. + // For fixed precision, it must be in [0, 20]. + precision = precision === undefined ? 6 + : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) + : Math.max(0, Math.min(20, precision)); + + function format(value) { + var valuePrefix = prefix, + valueSuffix = suffix, + i, n, c; + + if (type === "c") { + valueSuffix = formatType(value) + valueSuffix; + value = ""; + } else { + value = +value; + + // Determine the sign. -0 is not less than 0, but 1 / -0 is! + var valueNegative = value < 0 || 1 / value < 0; + + // Perform the initial formatting. + value = isNaN(value) ? nan : formatType(Math.abs(value), precision); + + // Trim insignificant zeros. + if (trim) value = formatTrim(value); + + // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. + if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; + + // Compute the prefix and suffix. + valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; + valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); + + // Break the formatted value into the integer “value” part that can be + // grouped, and fractional or exponential “suffix” part that is not. + if (maybeSuffix) { + i = -1, n = value.length; + while (++i < n) { + if (c = value.charCodeAt(i), 48 > c || c > 57) { + valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; + value = value.slice(0, i); + break; + } + } + } + } + + // If the fill character is not "0", grouping is applied before padding. + if (comma && !zero) value = group(value, Infinity); + + // Compute the padding. + var length = valuePrefix.length + value.length + valueSuffix.length, + padding = length < width ? new Array(width - length + 1).join(fill) : ""; + + // If the fill character is "0", grouping is applied after padding. + if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; + + // Reconstruct the final output based on the desired alignment. + switch (align) { + case "<": value = valuePrefix + value + valueSuffix + padding; break; + case "=": value = valuePrefix + padding + value + valueSuffix; break; + case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; + default: value = padding + valuePrefix + value + valueSuffix; break; + } + + return numerals(value); + } + + format.toString = function() { + return specifier + ""; + }; + + return format; + } + + function formatPrefix(specifier, value) { + var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), + e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, + k = Math.pow(10, -e), + prefix = prefixes[8 + e / 3]; + return function(value) { + return f(k * value) + prefix; + }; + } + + return { + format: newFormat, + formatPrefix: formatPrefix + }; + } + + var locale; + var format; + var formatPrefix; + + defaultLocale({ + decimal: ".", + thousands: ",", + grouping: [3], + currency: ["$", ""], + minus: "-" + }); + + function defaultLocale(definition) { + locale = formatLocale(definition); + format = locale.format; + formatPrefix = locale.formatPrefix; + return locale; + } + + function precisionFixed(step) { + return Math.max(0, -exponent(Math.abs(step))); + } + + function precisionPrefix(step, value) { + return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); + } + + function precisionRound(step, max) { + step = Math.abs(step), max = Math.abs(max) - step; + return Math.max(0, exponent(max) - exponent(step)) + 1; + } + + function tickFormat(start, stop, count, specifier) { + var step = tickStep(start, stop, count), + precision; + specifier = formatSpecifier(specifier == null ? ",f" : specifier); + switch (specifier.type) { + case "s": { + var value = Math.max(Math.abs(start), Math.abs(stop)); + if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; + return formatPrefix(specifier, value); + } + case "": + case "e": + case "g": + case "p": + case "r": { + if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); + break; + } + case "f": + case "%": { + if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; + break; + } + } + return format(specifier); + } + + function linearish(scale) { + var domain = scale.domain; + + scale.ticks = function(count) { + var d = domain(); + return ticks(d[0], d[d.length - 1], count == null ? 10 : count); + }; + + scale.tickFormat = function(count, specifier) { + var d = domain(); + return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); + }; + + scale.nice = function(count) { + if (count == null) count = 10; + + var d = domain(), + i0 = 0, + i1 = d.length - 1, + start = d[i0], + stop = d[i1], + step; + + if (stop < start) { + step = start, start = stop, stop = step; + step = i0, i0 = i1, i1 = step; + } + + step = tickIncrement(start, stop, count); + + if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + step = tickIncrement(start, stop, count); + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + step = tickIncrement(start, stop, count); + } + + if (step > 0) { + d[i0] = Math.floor(start / step) * step; + d[i1] = Math.ceil(stop / step) * step; + domain(d); + } else if (step < 0) { + d[i0] = Math.ceil(start * step) / step; + d[i1] = Math.floor(stop * step) / step; + domain(d); + } + + return scale; + }; + + return scale; + } + + function linear$1() { + var scale = continuous(); + + scale.copy = function() { + return copy(scale, linear$1()); + }; + + initRange.apply(scale, arguments); + + return linearish(scale); + } + + var t0$1 = new Date, + t1$1 = new Date; + + function newInterval(floori, offseti, count, field) { + + function interval(date) { + return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; + } + + interval.floor = function(date) { + return floori(date = new Date(+date)), date; + }; + + interval.ceil = function(date) { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + + interval.round = function(date) { + var d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + + interval.offset = function(date, step) { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + + interval.range = function(start, stop, step) { + var range = [], previous; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); + while (previous < start && start < stop); + return range; + }; + + interval.filter = function(test) { + return newInterval(function(date) { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, function(date, step) { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + + if (count) { + interval.count = function(start, end) { + t0$1.setTime(+start), t1$1.setTime(+end); + floori(t0$1), floori(t1$1); + return Math.floor(count(t0$1, t1$1)); + }; + + interval.every = function(step) { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null + : !(step > 1) ? interval + : interval.filter(field + ? function(d) { return field(d) % step === 0; } + : function(d) { return interval.count(0, d) % step === 0; }); + }; + } + + return interval; + } + + var millisecond = newInterval(function() { + // noop + }, function(date, step) { + date.setTime(+date + step); + }, function(start, end) { + return end - start; + }); + + // An optimized implementation for this simple case. + millisecond.every = function(k) { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return newInterval(function(date) { + date.setTime(Math.floor(date / k) * k); + }, function(date, step) { + date.setTime(+date + step * k); + }, function(start, end) { + return (end - start) / k; + }); + }; + + var durationSecond = 1e3; + var durationMinute = 6e4; + var durationHour = 36e5; + var durationDay = 864e5; + var durationWeek = 6048e5; + + var second = newInterval(function(date) { + date.setTime(date - date.getMilliseconds()); + }, function(date, step) { + date.setTime(+date + step * durationSecond); + }, function(start, end) { + return (end - start) / durationSecond; + }, function(date) { + return date.getUTCSeconds(); + }); + + var minute = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); + }, function(date, step) { + date.setTime(+date + step * durationMinute); + }, function(start, end) { + return (end - start) / durationMinute; + }, function(date) { + return date.getMinutes(); + }); + + var hour = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); + }, function(date, step) { + date.setTime(+date + step * durationHour); + }, function(start, end) { + return (end - start) / durationHour; + }, function(date) { + return date.getHours(); + }); + + var day = newInterval(function(date) { + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; + }, function(date) { + return date.getDate() - 1; + }); + + function weekday(i) { + return newInterval(function(date) { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step * 7); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; + }); + } + + var sunday = weekday(0); + var monday = weekday(1); + var tuesday = weekday(2); + var wednesday = weekday(3); + var thursday = weekday(4); + var friday = weekday(5); + var saturday = weekday(6); + + var month = newInterval(function(date) { + date.setDate(1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setMonth(date.getMonth() + step); + }, function(start, end) { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; + }, function(date) { + return date.getMonth(); + }); + + var year = newInterval(function(date) { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step); + }, function(start, end) { + return end.getFullYear() - start.getFullYear(); + }, function(date) { + return date.getFullYear(); + }); + + // An optimized implementation for this simple case. + year.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step * k); + }); + }; + + var utcMinute = newInterval(function(date) { + date.setUTCSeconds(0, 0); + }, function(date, step) { + date.setTime(+date + step * durationMinute); + }, function(start, end) { + return (end - start) / durationMinute; + }, function(date) { + return date.getUTCMinutes(); + }); + + var utcHour = newInterval(function(date) { + date.setUTCMinutes(0, 0, 0); + }, function(date, step) { + date.setTime(+date + step * durationHour); + }, function(start, end) { + return (end - start) / durationHour; + }, function(date) { + return date.getUTCHours(); + }); + + var utcDay = newInterval(function(date) { + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step); + }, function(start, end) { + return (end - start) / durationDay; + }, function(date) { + return date.getUTCDate() - 1; + }); + + function utcWeekday(i) { + return newInterval(function(date) { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step * 7); + }, function(start, end) { + return (end - start) / durationWeek; + }); + } + + var utcSunday = utcWeekday(0); + var utcMonday = utcWeekday(1); + var utcTuesday = utcWeekday(2); + var utcWednesday = utcWeekday(3); + var utcThursday = utcWeekday(4); + var utcFriday = utcWeekday(5); + var utcSaturday = utcWeekday(6); + + var utcMonth = newInterval(function(date) { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCMonth(date.getUTCMonth() + step); + }, function(start, end) { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; + }, function(date) { + return date.getUTCMonth(); + }); + + var utcYear = newInterval(function(date) { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step); + }, function(start, end) { + return end.getUTCFullYear() - start.getUTCFullYear(); + }, function(date) { + return date.getUTCFullYear(); + }); + + // An optimized implementation for this simple case. + utcYear.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); + }; + + function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); + } + + function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); + } + + function newDate(y, m, d) { + return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; + } + + function formatLocale$1(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "q": formatQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "q": formatUTCQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "q": parseQuarter, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + + function newFormat(specifier, formats) { + return function(date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + + if (!(date instanceof Date)) date = new Date(+date); + + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); + else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + + function newParse(specifier, Z) { + return function(string) { + var d = newDate(1900, undefined, 1), + i = parseSpecifier(d, specifier, string += "", 0), + week, day$1; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); + + // If this is utcParse, never use the local timezone. + if (Z && !("Z" in d)) d.Z = 0; + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // If the month was not specified, inherit from the quarter. + if (d.m === undefined) d.m = "q" in d ? d.q : 0; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay(); + week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week); + week = utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay(); + week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week); + week = day.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day$1 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return localDate(d); + }; + } + + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || ((j = parse(d, string, j)) < 0)) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + + return j; + } + + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + + function formatQuarter(d) { + return 1 + ~~(d.getMonth() / 3); + } + + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + + function formatUTCQuarter(d) { + return 1 + ~~(d.getUTCMonth() / 3); + } + + return { + format: function(specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function() { return specifier; }; + return f; + }, + parse: function(specifier) { + var p = newParse(specifier += "", false); + p.toString = function() { return specifier; }; + return p; + }, + utcFormat: function(specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function() { return specifier; }; + return f; + }, + utcParse: function(specifier) { + var p = newParse(specifier += "", true); + p.toString = function() { return specifier; }; + return p; + } + }; + } + + var pads = {"-": "", "_": " ", "0": "0"}, + numberRe = /^\s*\d+/, // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; + + function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); + } + + function requote(s) { + return s.replace(requoteRe, "\\$&"); + } + + function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); + } + + function formatLookup(names) { + var map = {}, i = -1, n = names.length; + while (++i < n) map[names[i].toLowerCase()] = i; + return map; + } + + function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; + } + + function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; + } + + function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; + } + + function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; + } + + function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; + } + + function parseQuarter(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; + } + + function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; + } + + function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; + } + + function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; + } + + function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; + } + + function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; + } + + function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; + } + + function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; + } + + function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; + } + + function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; + } + + function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; + } + + function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.s = +n[0], i + n[0].length) : -1; + } + + function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); + } + + function formatHour24(d, p) { + return pad(d.getHours(), p, 2); + } + + function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); + } + + function formatDayOfYear(d, p) { + return pad(1 + day.count(year(d), d), p, 3); + } + + function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); + } + + function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; + } + + function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); + } + + function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); + } + + function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); + } + + function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; + } + + function formatWeekNumberSunday(d, p) { + return pad(sunday.count(year(d) - 1, d), p, 2); + } + + function formatWeekNumberISO(d, p) { + var day = d.getDay(); + d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d); + return pad(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2); + } + + function formatWeekdayNumberSunday(d) { + return d.getDay(); + } + + function formatWeekNumberMonday(d, p) { + return pad(monday.count(year(d) - 1, d), p, 2); + } + + function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); + } + + function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); + } + + function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + + pad(z / 60 | 0, "0", 2) + + pad(z % 60, "0", 2); + } + + function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); + } + + function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); + } + + function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); + } + + function formatUTCDayOfYear(d, p) { + return pad(1 + utcDay.count(utcYear(d), d), p, 3); + } + + function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); + } + + function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; + } + + function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); + } + + function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); + } + + function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); + } + + function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; + } + + function formatUTCWeekNumberSunday(d, p) { + return pad(utcSunday.count(utcYear(d) - 1, d), p, 2); + } + + function formatUTCWeekNumberISO(d, p) { + var day = d.getUTCDay(); + d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); + return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); + } + + function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); + } + + function formatUTCWeekNumberMonday(d, p) { + return pad(utcMonday.count(utcYear(d) - 1, d), p, 2); + } + + function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); + } + + function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); + } + + function formatUTCZone() { + return "+0000"; + } + + function formatLiteralPercent() { + return "%"; + } + + function formatUnixTimestamp(d) { + return +d; + } + + function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); + } + + var locale$1; + var timeFormat; + var timeParse; + var utcFormat; + var utcParse; + + defaultLocale$1({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + }); + + function defaultLocale$1(definition) { + locale$1 = formatLocale$1(definition); + timeFormat = locale$1.format; + timeParse = locale$1.parse; + utcFormat = locale$1.utcFormat; + utcParse = locale$1.utcParse; + return locale$1; + } + + var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; + + function formatIsoNative(date) { + return date.toISOString(); + } + + var formatIso = Date.prototype.toISOString + ? formatIsoNative + : utcFormat(isoSpecifier); + + function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; + } + + var parseIso = +new Date("2000-01-01T00:00:00.000Z") + ? parseIsoNative + : utcParse(isoSpecifier); + + var noop = {value: function() {}}; + + function dispatch() { + for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { + if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); + _[t] = []; + } + return new Dispatch(_); + } + + function Dispatch(_) { + this._ = _; + } + + function parseTypenames(typenames, types) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); + return {type: t, name: name}; + }); + } + + Dispatch.prototype = dispatch.prototype = { + constructor: Dispatch, + on: function(typename, callback) { + var _ = this._, + T = parseTypenames(typename + "", _), + t, + i = -1, + n = T.length; + + // If no callback was specified, return the callback of the given type and name. + if (arguments.length < 2) { + while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; + return; + } + + // If a type was specified, set the callback for the given type and name. + // Otherwise, if a null callback was specified, remove callbacks of the given name. + if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); + while (++i < n) { + if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); + else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); + } + + return this; + }, + copy: function() { + var copy = {}, _ = this._; + for (var t in _) copy[t] = _[t].slice(); + return new Dispatch(copy); + }, + call: function(type, that) { + if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + }, + apply: function(type, that, args) { + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + } + }; + + function get(type, name) { + for (var i = 0, n = type.length, c; i < n; ++i) { + if ((c = type[i]).name === name) { + return c.value; + } + } + } + + function set(type, name, callback) { + for (var i = 0, n = type.length; i < n; ++i) { + if (type[i].name === name) { + type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); + break; + } + } + if (callback != null) type.push({name: name, value: callback}); + return type; + } + + var xhtml = "http://www.w3.org/1999/xhtml"; + + var namespaces = { + svg: "http://www.w3.org/2000/svg", + xhtml: xhtml, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" + }; + + function namespace(name) { + var prefix = name += "", i = prefix.indexOf(":"); + if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); + return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; + } + + function creatorInherit(name) { + return function() { + var document = this.ownerDocument, + uri = this.namespaceURI; + return uri === xhtml && document.documentElement.namespaceURI === xhtml + ? document.createElement(name) + : document.createElementNS(uri, name); + }; + } + + function creatorFixed(fullname) { + return function() { + return this.ownerDocument.createElementNS(fullname.space, fullname.local); + }; + } + + function creator(name) { + var fullname = namespace(name); + return (fullname.local + ? creatorFixed + : creatorInherit)(fullname); + } + + function none() {} + + function selector(selector) { + return selector == null ? none : function() { + return this.querySelector(selector); + }; + } + + function selection_select(select) { + if (typeof select !== "function") select = selector(select); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { + if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + subgroup[i] = subnode; + } + } + } + + return new Selection(subgroups, this._parents); + } + + function empty() { + return []; + } + + function selectorAll(selector) { + return selector == null ? empty : function() { + return this.querySelectorAll(selector); + }; + } + + function selection_selectAll(select) { + if (typeof select !== "function") select = selectorAll(select); + + for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + subgroups.push(select.call(node, node.__data__, i, group)); + parents.push(node); + } + } + } + + return new Selection(subgroups, parents); + } + + function matcher(selector) { + return function() { + return this.matches(selector); + }; + } + + function selection_filter(match) { + if (typeof match !== "function") match = matcher(match); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { + if ((node = group[i]) && match.call(node, node.__data__, i, group)) { + subgroup.push(node); + } + } + } + + return new Selection(subgroups, this._parents); + } + + function sparse(update) { + return new Array(update.length); + } + + function selection_enter() { + return new Selection(this._enter || this._groups.map(sparse), this._parents); + } + + function EnterNode(parent, datum) { + this.ownerDocument = parent.ownerDocument; + this.namespaceURI = parent.namespaceURI; + this._next = null; + this._parent = parent; + this.__data__ = datum; + } + + EnterNode.prototype = { + constructor: EnterNode, + appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, + insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, + querySelector: function(selector) { return this._parent.querySelector(selector); }, + querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } + }; + + function constant$2(x) { + return function() { + return x; + }; + } + + var keyPrefix = "$"; // Protect against keys like “__proto__”. + + function bindIndex(parent, group, enter, update, exit, data) { + var i = 0, + node, + groupLength = group.length, + dataLength = data.length; + + // Put any non-null nodes that fit into update. + // Put any null nodes into enter. + // Put any remaining data into enter. + for (; i < dataLength; ++i) { + if (node = group[i]) { + node.__data__ = data[i]; + update[i] = node; + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Put any non-null nodes that don’t fit into exit. + for (; i < groupLength; ++i) { + if (node = group[i]) { + exit[i] = node; + } + } + } + + function bindKey(parent, group, enter, update, exit, data, key) { + var i, + node, + nodeByKeyValue = {}, + groupLength = group.length, + dataLength = data.length, + keyValues = new Array(groupLength), + keyValue; + + // Compute the key for each node. + // If multiple nodes have the same key, the duplicates are added to exit. + for (i = 0; i < groupLength; ++i) { + if (node = group[i]) { + keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); + if (keyValue in nodeByKeyValue) { + exit[i] = node; + } else { + nodeByKeyValue[keyValue] = node; + } + } + } + + // Compute the key for each datum. + // If there a node associated with this key, join and add it to update. + // If there is not (or the key is a duplicate), add it to enter. + for (i = 0; i < dataLength; ++i) { + keyValue = keyPrefix + key.call(parent, data[i], i, data); + if (node = nodeByKeyValue[keyValue]) { + update[i] = node; + node.__data__ = data[i]; + nodeByKeyValue[keyValue] = null; + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Add any remaining nodes that were not bound to data to exit. + for (i = 0; i < groupLength; ++i) { + if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { + exit[i] = node; + } + } + } + + function selection_data(value, key) { + if (!value) { + data = new Array(this.size()), j = -1; + this.each(function(d) { data[++j] = d; }); + return data; + } + + var bind = key ? bindKey : bindIndex, + parents = this._parents, + groups = this._groups; + + if (typeof value !== "function") value = constant$2(value); + + for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { + var parent = parents[j], + group = groups[j], + groupLength = group.length, + data = value.call(parent, parent && parent.__data__, j, parents), + dataLength = data.length, + enterGroup = enter[j] = new Array(dataLength), + updateGroup = update[j] = new Array(dataLength), + exitGroup = exit[j] = new Array(groupLength); + + bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); + + // Now connect the enter nodes to their following update node, such that + // appendChild can insert the materialized enter node before this node, + // rather than at the end of the parent node. + for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { + if (previous = enterGroup[i0]) { + if (i0 >= i1) i1 = i0 + 1; + while (!(next = updateGroup[i1]) && ++i1 < dataLength); + previous._next = next || null; + } + } + } + + update = new Selection(update, parents); + update._enter = enter; + update._exit = exit; + return update; + } + + function selection_exit() { + return new Selection(this._exit || this._groups.map(sparse), this._parents); + } + + function selection_join(onenter, onupdate, onexit) { + var enter = this.enter(), update = this, exit = this.exit(); + enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); + if (onupdate != null) update = onupdate(update); + if (onexit == null) exit.remove(); else onexit(exit); + return enter && update ? enter.merge(update).order() : update; + } + + function selection_merge(selection) { + + for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { + for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group0[i] || group1[i]) { + merge[i] = node; + } + } + } + + for (; j < m0; ++j) { + merges[j] = groups0[j]; + } + + return new Selection(merges, this._parents); + } + + function selection_order() { + + for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { + for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { + if (node = group[i]) { + if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + + return this; + } + + function selection_sort(compare) { + if (!compare) compare = ascending$1; + + function compareNode(a, b) { + return a && b ? compare(a.__data__, b.__data__) : !a - !b; + } + + for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group[i]) { + sortgroup[i] = node; + } + } + sortgroup.sort(compareNode); + } + + return new Selection(sortgroups, this._parents).order(); + } + + function ascending$1(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + } + + function selection_call() { + var callback = arguments[0]; + arguments[0] = this; + callback.apply(null, arguments); + return this; + } + + function selection_nodes() { + var nodes = new Array(this.size()), i = -1; + this.each(function() { nodes[++i] = this; }); + return nodes; + } + + function selection_node() { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { + var node = group[i]; + if (node) return node; + } + } + + return null; + } + + function selection_size() { + var size = 0; + this.each(function() { ++size; }); + return size; + } + + function selection_empty() { + return !this.node(); + } + + function selection_each(callback) { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { + if (node = group[i]) callback.call(node, node.__data__, i, group); + } + } + + return this; + } + + function attrRemove(name) { + return function() { + this.removeAttribute(name); + }; + } + + function attrRemoveNS(fullname) { + return function() { + this.removeAttributeNS(fullname.space, fullname.local); + }; + } + + function attrConstant(name, value) { + return function() { + this.setAttribute(name, value); + }; + } + + function attrConstantNS(fullname, value) { + return function() { + this.setAttributeNS(fullname.space, fullname.local, value); + }; + } + + function attrFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttribute(name); + else this.setAttribute(name, v); + }; + } + + function attrFunctionNS(fullname, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttributeNS(fullname.space, fullname.local); + else this.setAttributeNS(fullname.space, fullname.local, v); + }; + } + + function selection_attr(name, value) { + var fullname = namespace(name); + + if (arguments.length < 2) { + var node = this.node(); + return fullname.local + ? node.getAttributeNS(fullname.space, fullname.local) + : node.getAttribute(fullname); + } + + return this.each((value == null + ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" + ? (fullname.local ? attrFunctionNS : attrFunction) + : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); + } + + function defaultView(node) { + return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node + || (node.document && node) // node is a Window + || node.defaultView; // node is a Document + } + + function styleRemove(name) { + return function() { + this.style.removeProperty(name); + }; + } + + function styleConstant(name, value, priority) { + return function() { + this.style.setProperty(name, value, priority); + }; + } + + function styleFunction(name, value, priority) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.style.removeProperty(name); + else this.style.setProperty(name, v, priority); + }; + } + + function selection_style(name, value, priority) { + return arguments.length > 1 + ? this.each((value == null + ? styleRemove : typeof value === "function" + ? styleFunction + : styleConstant)(name, value, priority == null ? "" : priority)) + : styleValue(this.node(), name); + } + + function styleValue(node, name) { + return node.style.getPropertyValue(name) + || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); + } + + function propertyRemove(name) { + return function() { + delete this[name]; + }; + } + + function propertyConstant(name, value) { + return function() { + this[name] = value; + }; + } + + function propertyFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) delete this[name]; + else this[name] = v; + }; + } + + function selection_property(name, value) { + return arguments.length > 1 + ? this.each((value == null + ? propertyRemove : typeof value === "function" + ? propertyFunction + : propertyConstant)(name, value)) + : this.node()[name]; + } + + function classArray(string) { + return string.trim().split(/^|\s+/); + } + + function classList(node) { + return node.classList || new ClassList(node); + } + + function ClassList(node) { + this._node = node; + this._names = classArray(node.getAttribute("class") || ""); + } + + ClassList.prototype = { + add: function(name) { + var i = this._names.indexOf(name); + if (i < 0) { + this._names.push(name); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + remove: function(name) { + var i = this._names.indexOf(name); + if (i >= 0) { + this._names.splice(i, 1); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + contains: function(name) { + return this._names.indexOf(name) >= 0; + } + }; + + function classedAdd(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.add(names[i]); + } + + function classedRemove(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.remove(names[i]); + } + + function classedTrue(names) { + return function() { + classedAdd(this, names); + }; + } + + function classedFalse(names) { + return function() { + classedRemove(this, names); + }; + } + + function classedFunction(names, value) { + return function() { + (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); + }; + } + + function selection_classed(name, value) { + var names = classArray(name + ""); + + if (arguments.length < 2) { + var list = classList(this.node()), i = -1, n = names.length; + while (++i < n) if (!list.contains(names[i])) return false; + return true; + } + + return this.each((typeof value === "function" + ? classedFunction : value + ? classedTrue + : classedFalse)(names, value)); + } + + function textRemove() { + this.textContent = ""; + } + + function textConstant(value) { + return function() { + this.textContent = value; + }; + } + + function textFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + }; + } + + function selection_text(value) { + return arguments.length + ? this.each(value == null + ? textRemove : (typeof value === "function" + ? textFunction + : textConstant)(value)) + : this.node().textContent; + } + + function htmlRemove() { + this.innerHTML = ""; + } + + function htmlConstant(value) { + return function() { + this.innerHTML = value; + }; + } + + function htmlFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + }; + } + + function selection_html(value) { + return arguments.length + ? this.each(value == null + ? htmlRemove : (typeof value === "function" + ? htmlFunction + : htmlConstant)(value)) + : this.node().innerHTML; + } + + function raise() { + if (this.nextSibling) this.parentNode.appendChild(this); + } + + function selection_raise() { + return this.each(raise); + } + + function lower() { + if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); + } + + function selection_lower() { + return this.each(lower); + } + + function selection_append(name) { + var create = typeof name === "function" ? name : creator(name); + return this.select(function() { + return this.appendChild(create.apply(this, arguments)); + }); + } + + function constantNull() { + return null; + } + + function selection_insert(name, before) { + var create = typeof name === "function" ? name : creator(name), + select = before == null ? constantNull : typeof before === "function" ? before : selector(before); + return this.select(function() { + return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); + }); + } + + function remove() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); + } + + function selection_remove() { + return this.each(remove); + } + + function selection_cloneShallow() { + var clone = this.cloneNode(false), parent = this.parentNode; + return parent ? parent.insertBefore(clone, this.nextSibling) : clone; + } + + function selection_cloneDeep() { + var clone = this.cloneNode(true), parent = this.parentNode; + return parent ? parent.insertBefore(clone, this.nextSibling) : clone; + } + + function selection_clone(deep) { + return this.select(deep ? selection_cloneDeep : selection_cloneShallow); + } + + function selection_datum(value) { + return arguments.length + ? this.property("__data__", value) + : this.node().__data__; + } + + var filterEvents = {}; + + var event = null; + + if (typeof document !== "undefined") { + var element = document.documentElement; + if (!("onmouseenter" in element)) { + filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; + } + } + + function filterContextListener(listener, index, group) { + listener = contextListener(listener, index, group); + return function(event) { + var related = event.relatedTarget; + if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { + listener.call(this, event); + } + }; + } + + function contextListener(listener, index, group) { + return function(event1) { + var event0 = event; // Events can be reentrant (e.g., focus). + event = event1; + try { + listener.call(this, this.__data__, index, group); + } finally { + event = event0; + } + }; + } + + function parseTypenames$1(typenames) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + return {type: t, name: name}; + }); + } + + function onRemove(typename) { + return function() { + var on = this.__on; + if (!on) return; + for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { + if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.capture); + } else { + on[++i] = o; + } + } + if (++i) on.length = i; + else delete this.__on; + }; + } + + function onAdd(typename, value, capture) { + var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; + return function(d, i, group) { + var on = this.__on, o, listener = wrap(value, i, group); + if (on) for (var j = 0, m = on.length; j < m; ++j) { + if ((o = on[j]).type === typename.type && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.capture); + this.addEventListener(o.type, o.listener = listener, o.capture = capture); + o.value = value; + return; + } + } + this.addEventListener(typename.type, listener, capture); + o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; + if (!on) this.__on = [o]; + else on.push(o); + }; + } + + function selection_on(typename, value, capture) { + var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; + + if (arguments.length < 2) { + var on = this.node().__on; + if (on) for (var j = 0, m = on.length, o; j < m; ++j) { + for (i = 0, o = on[j]; i < n; ++i) { + if ((t = typenames[i]).type === o.type && t.name === o.name) { + return o.value; + } + } + } + return; + } + + on = value ? onAdd : onRemove; + if (capture == null) capture = false; + for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); + return this; + } + + function customEvent(event1, listener, that, args) { + var event0 = event; + event1.sourceEvent = event; + event = event1; + try { + return listener.apply(that, args); + } finally { + event = event0; + } + } + + function dispatchEvent(node, type, params) { + var window = defaultView(node), + event = window.CustomEvent; + + if (typeof event === "function") { + event = new event(type, params); + } else { + event = window.document.createEvent("Event"); + if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; + else event.initEvent(type, false, false); + } + + node.dispatchEvent(event); + } + + function dispatchConstant(type, params) { + return function() { + return dispatchEvent(this, type, params); + }; + } + + function dispatchFunction(type, params) { + return function() { + return dispatchEvent(this, type, params.apply(this, arguments)); + }; + } + + function selection_dispatch(type, params) { + return this.each((typeof params === "function" + ? dispatchFunction + : dispatchConstant)(type, params)); + } + + var root = [null]; + + function Selection(groups, parents) { + this._groups = groups; + this._parents = parents; + } + + function selection() { + return new Selection([[document.documentElement]], root); + } + + Selection.prototype = selection.prototype = { + constructor: Selection, + select: selection_select, + selectAll: selection_selectAll, + filter: selection_filter, + data: selection_data, + enter: selection_enter, + exit: selection_exit, + join: selection_join, + merge: selection_merge, + order: selection_order, + sort: selection_sort, + call: selection_call, + nodes: selection_nodes, + node: selection_node, + size: selection_size, + empty: selection_empty, + each: selection_each, + attr: selection_attr, + style: selection_style, + property: selection_property, + classed: selection_classed, + text: selection_text, + html: selection_html, + raise: selection_raise, + lower: selection_lower, + append: selection_append, + insert: selection_insert, + remove: selection_remove, + clone: selection_clone, + datum: selection_datum, + on: selection_on, + dispatch: selection_dispatch + }; + + function select(selector) { + return typeof selector === "string" + ? new Selection([[document.querySelector(selector)]], [document.documentElement]) + : new Selection([[selector]], root); + } + + function sourceEvent() { + var current = event, source; + while (source = current.sourceEvent) current = source; + return current; + } + + function point(node, event) { + var svg = node.ownerSVGElement || node; + + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + point.x = event.clientX, point.y = event.clientY; + point = point.matrixTransform(node.getScreenCTM().inverse()); + return [point.x, point.y]; + } + + var rect = node.getBoundingClientRect(); + return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; + } + + function mouse(node) { + var event = sourceEvent(); + if (event.changedTouches) event = event.changedTouches[0]; + return point(node, event); + } + + function touch(node, touches, identifier) { + if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; + + for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { + if ((touch = touches[i]).identifier === identifier) { + return point(node, touch); + } + } + + return null; + } + + function nopropagation() { + event.stopImmediatePropagation(); + } + + function noevent() { + event.preventDefault(); + event.stopImmediatePropagation(); + } + + function nodrag(view) { + var root = view.document.documentElement, + selection = select(view).on("dragstart.drag", noevent, true); + if ("onselectstart" in root) { + selection.on("selectstart.drag", noevent, true); + } else { + root.__noselect = root.style.MozUserSelect; + root.style.MozUserSelect = "none"; + } + } + + function yesdrag(view, noclick) { + var root = view.document.documentElement, + selection = select(view).on("dragstart.drag", null); + if (noclick) { + selection.on("click.drag", noevent, true); + setTimeout(function() { selection.on("click.drag", null); }, 0); + } + if ("onselectstart" in root) { + selection.on("selectstart.drag", null); + } else { + root.style.MozUserSelect = root.__noselect; + delete root.__noselect; + } + } + + function constant$3(x) { + return function() { + return x; + }; + } + + function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { + this.target = target; + this.type = type; + this.subject = subject; + this.identifier = id; + this.active = active; + this.x = x; + this.y = y; + this.dx = dx; + this.dy = dy; + this._ = dispatch; + } + + DragEvent.prototype.on = function() { + var value = this._.on.apply(this._, arguments); + return value === this._ ? this : value; + }; + + // Ignore right-click, since that should open the context menu. + function defaultFilter() { + return !event.ctrlKey && !event.button; + } + + function defaultContainer() { + return this.parentNode; + } + + function defaultSubject(d) { + return d == null ? {x: event.x, y: event.y} : d; + } + + function defaultTouchable() { + return navigator.maxTouchPoints || ("ontouchstart" in this); + } + + function drag() { + var filter = defaultFilter, + container = defaultContainer, + subject = defaultSubject, + touchable = defaultTouchable, + gestures = {}, + listeners = dispatch("start", "drag", "end"), + active = 0, + mousedownx, + mousedowny, + mousemoving, + touchending, + clickDistance2 = 0; + + function drag(selection) { + selection + .on("mousedown.drag", mousedowned) + .filter(touchable) + .on("touchstart.drag", touchstarted) + .on("touchmove.drag", touchmoved) + .on("touchend.drag touchcancel.drag", touchended) + .style("touch-action", "none") + .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + + function mousedowned() { + if (touchending || !filter.apply(this, arguments)) return; + var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); + if (!gesture) return; + select(event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); + nodrag(event.view); + nopropagation(); + mousemoving = false; + mousedownx = event.clientX; + mousedowny = event.clientY; + gesture("start"); + } + + function mousemoved() { + noevent(); + if (!mousemoving) { + var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny; + mousemoving = dx * dx + dy * dy > clickDistance2; + } + gestures.mouse("drag"); + } + + function mouseupped() { + select(event.view).on("mousemove.drag mouseup.drag", null); + yesdrag(event.view, mousemoving); + noevent(); + gestures.mouse("end"); + } + + function touchstarted() { + if (!filter.apply(this, arguments)) return; + var touches = event.changedTouches, + c = container.apply(this, arguments), + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) { + nopropagation(); + gesture("start"); + } + } + } + + function touchmoved() { + var touches = event.changedTouches, + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + noevent(); + gesture("drag"); + } + } + } + + function touchended() { + var touches = event.changedTouches, + n = touches.length, i, gesture; + + if (touchending) clearTimeout(touchending); + touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + nopropagation(); + gesture("end"); + } + } + } + + function beforestart(id, container, point, that, args) { + var p = point(container, id), s, dx, dy, + sublisteners = listeners.copy(); + + if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { + if ((event.subject = s = subject.apply(that, args)) == null) return false; + dx = s.x - p[0] || 0; + dy = s.y - p[1] || 0; + return true; + })) return; + + return function gesture(type) { + var p0 = p, n; + switch (type) { + case "start": gestures[id] = gesture, n = active++; break; + case "end": delete gestures[id], --active; // nobreak + case "drag": p = point(container, id), n = active; break; + } + customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); + }; + } + + drag.filter = function(_) { + return arguments.length ? (filter = typeof _ === "function" ? _ : constant$3(!!_), drag) : filter; + }; + + drag.container = function(_) { + return arguments.length ? (container = typeof _ === "function" ? _ : constant$3(_), drag) : container; + }; + + drag.subject = function(_) { + return arguments.length ? (subject = typeof _ === "function" ? _ : constant$3(_), drag) : subject; + }; + + drag.touchable = function(_) { + return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$3(!!_), drag) : touchable; + }; + + drag.on = function() { + var value = listeners.on.apply(listeners, arguments); + return value === listeners ? drag : value; + }; + + drag.clickDistance = function(_) { + return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); + }; + + return drag; + } + + // Copyright 2018 The Distill Template Authors + + const T$a = Template('d-slider', ` + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +`); + + // ARIA + // If the slider has a visible label, it is referenced by aria-labelledby on the slider element. Otherwise, the slider element has a label provided by aria-label. + // If the slider is vertically oriented, it has aria-orientation set to vertical. The default value of aria-orientation for a slider is horizontal. + + const keyCodes = { + left: 37, + up: 38, + right: 39, + down: 40, + pageUp: 33, + pageDown: 34, + end: 35, + home: 36 + }; + + class Slider extends T$a(HTMLElement) { + + + connectedCallback() { + this.connected = true; + this.setAttribute('role', 'slider'); + // Makes the element tab-able. + if (!this.hasAttribute('tabindex')) { this.setAttribute('tabindex', 0); } + + // Keeps track of keyboard vs. mouse interactions for focus rings + this.mouseEvent = false; + + // Handles to shadow DOM elements + this.knob = this.root.querySelector('.knob-container'); + this.background = this.root.querySelector('.background'); + this.trackFill = this.root.querySelector('.track-fill'); + this.track = this.root.querySelector('.track'); + + // Default values for attributes + this.min = this.min ? this.min : 0; + this.max = this.max ? this.max : 100; + this.scale = linear$1().domain([this.min, this.max]).range([0, 1]).clamp(true); + + this.origin = this.origin !== undefined ? this.origin : this.min; + this.step = this.step ? this.step : 1; + this.update(this.value ? this.value : 0); + + this.ticks = this.ticks ? this.ticks : false; + this.renderTicks(); + + this.drag = drag() + .container(this.background) + .on('start', () => { + this.mouseEvent = true; + this.background.classList.add('mousedown'); + this.changeValue = this.value; + this.dragUpdate(); + }) + .on('drag', () => { + this.dragUpdate(); + }) + .on('end', () => { + this.mouseEvent = false; + this.background.classList.remove('mousedown'); + this.dragUpdate(); + if (this.changeValue !== this.value) this.dispatchChange(); + this.changeValue = this.value; + }); + this.drag(select(this.background)); + + this.addEventListener('focusin', () => { + if(!this.mouseEvent) { + this.background.classList.add('focus'); + } + }); + this.addEventListener('focusout', () => { + this.background.classList.remove('focus'); + }); + this.addEventListener('keydown', this.onKeyDown); + + } + + static get observedAttributes() {return ['min', 'max', 'value', 'step', 'ticks', 'origin', 'tickValues', 'tickLabels']; } + + attributeChangedCallback(attr, oldValue, newValue) { + if (isNaN(newValue) || newValue === undefined || newValue === null) return; + if (attr == 'min') { + this.min = +newValue; + this.setAttribute('aria-valuemin', this.min); + } + if (attr == 'max') { + this.max = +newValue; + this.setAttribute('aria-valuemax', this.max); + } + if (attr == 'value') { + this.update(+newValue); + } + if (attr == 'origin') { + this.origin = +newValue; + // this.update(this.value); + } + if (attr == 'step') { + if (newValue > 0) { + this.step = +newValue; + } + } + if (attr == 'ticks') { + this.ticks = (newValue === '' ? true : newValue); + } + } + + onKeyDown(event) { + this.changeValue = this.value; + let stopPropagation = false; + switch (event.keyCode) { + case keyCodes.left: + case keyCodes.down: + this.update(this.value - this.step); + stopPropagation = true; + break; + case keyCodes.right: + case keyCodes.up: + this.update(this.value + this.step); + stopPropagation = true; + break; + case keyCodes.pageUp: + this.update(this.value + this.step * 10); + stopPropagation = true; + break; + + case keyCodes.pageDown: + this.update(this.value + this.step * 10); + stopPropagation = true; + break; + case keyCodes.home: + this.update(this.min); + stopPropagation = true; + break; + case keyCodes.end: + this.update(this.max); + stopPropagation = true; + break; + } + if (stopPropagation) { + this.background.classList.add('focus'); + event.preventDefault(); + event.stopPropagation(); + if (this.changeValue !== this.value) this.dispatchChange(); + } + } + + validateValueRange(min, max, value) { + return Math.max(Math.min(max, value), min); + } + + quantizeValue(value, step) { + return Math.round(value / step) * step; + } + + dragUpdate() { + const bbox = this.background.getBoundingClientRect(); + const x = event.x; + const width = bbox.width; + this.update(this.scale.invert(x / width)); + } + + update(value) { + let v = value; + if (this.step !== 'any') { + v = this.quantizeValue(value, this.step); + } + v = this.validateValueRange(this.min, this.max, v); + if (this.connected) { + this.knob.style.left = this.scale(v) * 100 + '%'; + this.trackFill.style.width = this.scale(this.min + Math.abs(v - this.origin)) * 100 + '%'; + this.trackFill.style.left = this.scale(Math.min(v, this.origin)) * 100 + '%'; + } + if (this.value !== v) { + this.value = v; + this.setAttribute('aria-valuenow', this.value); + this.dispatchInput(); + } + } + + // Dispatches only on a committed change (basically only on mouseup). + dispatchChange() { + const e = new Event('change'); + this.dispatchEvent(e, {}); + } + + // Dispatches on each value change. + dispatchInput() { + const e = new Event('input'); + this.dispatchEvent(e, {}); + } + + renderTicks() { + const ticksContainer = this.root.querySelector('.ticks'); + if (this.ticks !== false) { + let tickData = []; + if (this.ticks > 0) { + tickData = this.scale.ticks(this.ticks); + } else if (this.step === 'any') { + tickData = this.scale.ticks(); + } else { + tickData = range(this.min, this.max + 1e-6, this.step); + } + tickData.forEach(d => { + const tick = document.createElement('div'); + tick.classList.add('tick'); + tick.style.left = this.scale(d) * 100 + '%'; + ticksContainer.appendChild(tick); + }); + } else { + ticksContainer.style.display = 'none'; + } + } + } + + var logo = "\n \n\n"; + + const headerTemplate = ` + +
    +`; + + // Copyright 2018 The Distill Template Authors + + const T$b = Template('distill-header', headerTemplate, false); + + class DistillHeader extends T$b(HTMLElement) { + + } + + // Copyright 2018 The Distill Template Authors + + const styles$2 = ` + +`; + + function appendixTemplate(frontMatter) { + let html = styles$2; + + if (typeof frontMatter.githubUrl !== 'undefined') { + html += ` +

    Updates and Corrections

    +

    `; + if (frontMatter.githubCompareUpdatesUrl) { + html += `View all changes to this article since it was first published.`; + } + html += ` + If you see mistakes or want to suggest changes, please create an issue on GitHub.

    + `; + } + + const journal = frontMatter.journal; + if (typeof journal !== 'undefined' && journal.title === 'Distill') { + html += ` +

    Reuse

    +

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.

    + `; + } + + if (typeof frontMatter.publishedDate !== 'undefined') { + html += ` +

    Citation

    +

    For attribution in academic contexts, please cite this work as

    +
    ${frontMatter.concatenatedAuthors}, "${frontMatter.title}", Distill, ${frontMatter.publishedYear}.
    +

    BibTeX citation

    +
    ${serializeFrontmatterToBibtex(frontMatter)}
    + `; + } + + return html; + } + + class DistillAppendix extends HTMLElement { + + static get is() { return 'distill-appendix'; } + + set frontMatter(frontMatter) { + this.innerHTML = appendixTemplate(frontMatter); + } + + } + + const footerTemplate = ` + + + + +`; + + // Copyright 2018 The Distill Template Authors + + const T$c = Template('distill-footer', footerTemplate); + + class DistillFooter extends T$c(HTMLElement) { + + } + + // Copyright 2018 The Distill Template Authors + + let templateIsLoading = false; + let runlevel = 0; + const initialize = function() { + if (window.distill.runlevel < 1) { + throw new Error("Insufficient Runlevel for Distill Template!"); + } + + /* 1. Flag that we're being loaded */ + if ("distill" in window && window.distill.templateIsLoading) { + throw new Error( + "Runlevel 1: Distill Template is getting loaded more than once, aborting!" + ); + } else { + window.distill.templateIsLoading = true; + console.debug("Runlevel 1: Distill Template has started loading."); + } + + /* 2. Add styles if they weren't added during prerendering */ + makeStyleTag(document); + console.debug("Runlevel 1: Static Distill styles have been added."); + console.debug("Runlevel 1->2."); + window.distill.runlevel += 1; + + /* 3. Register Controller listener functions */ + /* Needs to happen before components to their connected callbacks have a controller to talk to. */ + for (const [functionName, callback] of Object.entries(Controller.listeners)) { + if (typeof callback === "function") { + document.addEventListener(functionName, callback); + } else { + console.error("Runlevel 2: Controller listeners need to be functions!"); + } + } + console.debug("Runlevel 2: We can now listen to controller events."); + console.debug("Runlevel 2->3."); + window.distill.runlevel += 1; + + /* 4. Register components */ + const components = [ + Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code, + Footnote, FootnoteList, FrontMatter$1, HoverBox, Title, DMath, References, TOC, Figure, + Slider, Interstitial + ]; + + const distillComponents = [DistillHeader, DistillAppendix, DistillFooter]; + + if (window.distill.runlevel < 2) { + throw new Error("Insufficient Runlevel for adding custom elements!"); + } + const allComponents = components.concat(distillComponents); + for (const component of allComponents) { + console.debug("Runlevel 2: Registering custom element: " + component.is); + customElements.define(component.is, component); + } + + console.debug( + "Runlevel 3: Distill Template finished registering custom elements." + ); + console.debug("Runlevel 3->4."); + window.distill.runlevel += 1; + + // If template was added after DOMContentLoaded we may have missed that event. + // Controller will check for that case, so trigger the event explicitly: + if (domContentLoaded()) { + Controller.listeners.DOMContentLoaded(); + } + + console.debug("Runlevel 4: Distill Template initialisation complete."); + window.distill.templateIsLoading = false; + window.distill.templateHasLoaded = true; + }; + + window.distill = { runlevel, initialize, templateIsLoading }; + + /* 0. Check browser feature support; synchronously polyfill if needed */ + if (Polyfills.browserSupportsAllFeatures()) { + console.debug("Runlevel 0: No need for polyfills."); + console.debug("Runlevel 0->1."); + window.distill.runlevel += 1; + window.distill.initialize(); + } else { + console.debug("Runlevel 0: Distill Template is loading polyfills."); + Polyfills.load(window.distill.initialize); + } + +}))); +//# sourceMappingURL=template.v2.js.map diff --git a/assets/js/distillpub/template.v2.js.map b/assets/js/distillpub/template.v2.js.map new file mode 100644 index 0000000..e342ef3 --- /dev/null +++ b/assets/js/distillpub/template.v2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"template.v2.js","sources":["../src/front-matter.js","../src/mixins/mutating.js","../src/mixins/template.js","../src/helpers/katex-auto-render.js","../src/components/d-math.js","../src/helpers/citation.js","../src/helpers/domContentLoaded.js","../src/components/d-front-matter.js","../src/transforms/optional-components.js","../src/controller.js","../src/styles/styles.js","../src/helpers/polyfills.js","../src/helpers/layout.js","../src/components/d-abstract.js","../src/components/d-appendix.js","../src/components/d-article.js","../node_modules/bibtex-parse-js/bibtexParse.js","../src/helpers/bibtex.js","../src/components/d-bibliography.js","../src/components/d-byline.js","../src/components/d-cite.js","../src/components/d-citation-list.js","../node_modules/prismjs/prism.js","../node_modules/prismjs/components/prism-python.js","../node_modules/prismjs/components/prism-clike.js","../node_modules/prismjs/components/prism-lua.js","../node_modules/prismjs/components/prism-bash.js","../node_modules/prismjs/components/prism-go.js","../node_modules/prismjs/components/prism-markdown.js","../node_modules/prismjs/components/prism-julia.js","../src/components/d-code.js","../src/components/d-footnote.js","../src/components/d-footnote-list.js","../src/components/d-hover-box.js","../src/components/d-title.js","../src/components/d-references.js","../src/components/d-toc.js","../src/components/d-figure.js","../src/components/d-interstitial.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../src/ui/d-slider.js","../src/distill-components/distill-header-template.js","../src/distill-components/distill-header.js","../src/distill-components/distill-appendix.js","../src/distill-components/distill-footer-template.js","../src/distill-components/distill-footer.js","../src/components.js"],"sourcesContent":["// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nconst days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\nconst months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];\nconst zeroPad = n => n < 10 ? '0' + n : n;\n\nconst RFC = function(date) {\n const day = days[date.getDay()].substring(0, 3);\n const paddedDate = zeroPad(date.getDate());\n const month = months[date.getMonth()].substring(0,3);\n const year = date.getFullYear().toString();\n const hours = date.getUTCHours().toString();\n const minutes = date.getUTCMinutes().toString();\n const seconds = date.getUTCSeconds().toString();\n return `${day}, ${paddedDate} ${month} ${year} ${hours}:${minutes}:${seconds} Z`;\n};\n\nconst objectFromMap = function(map) {\n const object = Array.from(map).reduce((object, [key, value]) => (\n Object.assign(object, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't.\n ), {});\n return object;\n};\n\nconst mapFromObject = function(object) {\n const map = new Map();\n for (var property in object) {\n if (object.hasOwnProperty(property)) {\n map.set(property, object[property]);\n }\n }\n return map;\n};\n\nclass Author {\n\n // constructor(name='', personalURL='', affiliation='', affiliationURL='') {\n // this.name = name; // 'Chris Olah'\n // this.personalURL = personalURL; // 'https://colah.github.io'\n // this.affiliation = affiliation; // 'Google Brain'\n // this.affiliationURL = affiliationURL; // 'https://g.co/brain'\n // }\n\n constructor(object) {\n this.name = object.author; // 'Chris Olah'\n this.personalURL = object.authorURL; // 'https://colah.github.io'\n this.affiliation = object.affiliation; // 'Google Brain'\n this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'\n this.affiliations = object.affiliations || []; // new-style affiliations\n }\n\n // 'Chris'\n get firstName() {\n const names = this.name.split(' ');\n return names.slice(0, names.length - 1).join(' ');\n }\n\n // 'Olah'\n get lastName() {\n const names = this.name.split(' ');\n return names[names.length -1];\n }\n}\n\nexport function mergeFromYMLFrontmatter(target, source) {\n target.title = source.title;\n if (source.published) {\n if (source.published instanceof Date) {\n target.publishedDate = source.published;\n } else if (source.published.constructor === String) {\n target.publishedDate = new Date(source.published);\n }\n }\n if (source.publishedDate) {\n if (source.publishedDate instanceof Date) {\n target.publishedDate = source.publishedDate;\n } else if (source.publishedDate.constructor === String) {\n target.publishedDate = new Date(source.publishedDate);\n } else {\n console.error('Don\\'t know what to do with published date: ' + source.publishedDate);\n }\n }\n target.description = source.description;\n target.authors = source.authors.map( (authorObject) => new Author(authorObject));\n target.katex = source.katex;\n target.password = source.password;\n if (source.doi) {\n target.doi = source.doi;\n }\n}\n\nexport class FrontMatter {\n constructor() {\n this.title = 'unnamed article'; // 'Attention and Augmented Recurrent Neural Networks'\n this.description = ''; // 'A visual overview of neural attention...'\n this.authors = []; // Array of Author(s)\n\n this.bibliography = new Map();\n this.bibliographyParsed = false;\n // {\n // 'gregor2015draw': {\n // 'title': 'DRAW: A recurrent neural network for image generation',\n // 'author': 'Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan',\n // 'journal': 'arXiv preprint arXiv:1502.04623',\n // 'year': '2015',\n // 'url': 'https://arxiv.org/pdf/1502.04623.pdf',\n // 'type': 'article'\n // },\n // }\n\n // Citation keys should be listed in the order that they are appear in the document.\n // Each key refers to a key in the bibliography dictionary.\n this.citations = []; // [ 'gregor2015draw', 'mercier2011humans' ]\n this.citationsCollected = false;\n\n //\n // Assigned from posts.csv\n //\n\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // tags: [ 'rnn' ],\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // doiSuffix: 1,\n\n //\n // Assigned from journal\n //\n this.journal = {};\n // journal: {\n // 'title': 'Distill',\n // 'full_title': 'Distill',\n // 'abbrev_title': 'Distill',\n // 'url': 'http://distill.pub',\n // 'doi': '10.23915/distill',\n // 'publisherName': 'Distill Working Group',\n // 'publisherEmail': 'admin@distill.pub',\n // 'issn': '2476-0757',\n // 'editors': [...],\n // 'committee': [...]\n // }\n // volume: 1,\n // issue: 9,\n\n this.katex = {};\n\n //\n // Assigned from publishing process\n //\n\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // doi: '10.23915/distill.00001',\n this.doi = undefined;\n this.publishedDate = undefined;\n }\n\n // Example:\n // title: Demo Title Attention and Augmented Recurrent Neural Networks\n // published: Jan 10, 2017\n // authors:\n // - Chris Olah:\n // - Shan Carter: http://shancarter.com\n // affiliations:\n // - Google Brain:\n // - Google Brain: http://g.co/brain\n\n //\n // Computed Properties\n //\n\n // 'http://distill.pub/2016/augmented-rnns',\n set url(value) {\n this._url = value;\n }\n get url() {\n if (this._url) {\n return this._url;\n } else if (this.distillPath && this.journal.url) {\n return this.journal.url + '/' + this.distillPath;\n } else if (this.journal.url) {\n return this.journal.url;\n }\n }\n\n // 'https://github.com/distillpub/post--augmented-rnns',\n get githubUrl() {\n if (this.githubPath) {\n return 'https://github.com/' + this.githubPath;\n } else {\n return undefined;\n }\n }\n\n // TODO resolve differences in naming of URL/Url/url.\n // 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n set previewURL(value) {\n this._previewURL = value;\n }\n get previewURL() {\n return this._previewURL ? this._previewURL : this.url + '/thumbnail.jpg';\n }\n\n // 'Thu, 08 Sep 2016 00:00:00 -0700',\n get publishedDateRFC() {\n return RFC(this.publishedDate);\n }\n\n // 'Thu, 08 Sep 2016 00:00:00 -0700',\n get updatedDateRFC() {\n return RFC(this.updatedDate);\n }\n\n // 2016,\n get publishedYear() {\n return this.publishedDate.getFullYear();\n }\n\n // 'Sept',\n get publishedMonth() {\n return months[this.publishedDate.getMonth()];\n }\n\n // 8,\n get publishedDay() {\n return this.publishedDate.getDate();\n }\n\n // '09',\n get publishedMonthPadded() {\n return zeroPad(this.publishedDate.getMonth() + 1);\n }\n\n // '08',\n get publishedDayPadded() {\n return zeroPad(this.publishedDate.getDate());\n }\n\n get publishedISODateOnly() {\n return this.publishedDate.toISOString().split('T')[0];\n }\n\n get volume() {\n const volume = this.publishedYear - 2015;\n if (volume < 1) {\n throw new Error('Invalid publish date detected during computing volume');\n }\n return volume;\n }\n\n get issue() {\n return this.publishedDate.getMonth() + 1;\n }\n\n // 'Olah & Carter',\n get concatenatedAuthors() {\n if (this.authors.length > 2) {\n return this.authors[0].lastName + ', et al.';\n } else if (this.authors.length === 2) {\n return this.authors[0].lastName + ' & ' + this.authors[1].lastName;\n } else if (this.authors.length === 1) {\n return this.authors[0].lastName;\n }\n }\n\n // 'Olah, Chris and Carter, Shan',\n get bibtexAuthors() {\n return this.authors.map(author => {\n return author.lastName + ', ' + author.firstName;\n }).join(' and ');\n }\n\n // 'olah2016attention'\n get slug() {\n let slug = '';\n if (this.authors.length) {\n slug += this.authors[0].lastName.toLowerCase();\n slug += this.publishedYear;\n slug += this.title.split(' ')[0].toLowerCase();\n }\n return slug || 'Untitled';\n }\n\n get bibliographyEntries() {\n return new Map(this.citations.map( citationKey => {\n const entry = this.bibliography.get(citationKey);\n return [citationKey, entry];\n }));\n }\n\n set bibliography(bibliography) {\n if (bibliography instanceof Map) {\n this._bibliography = bibliography;\n } else if (typeof bibliography === 'object') {\n this._bibliography = mapFromObject(bibliography);\n }\n }\n\n get bibliography() {\n return this._bibliography;\n }\n\n static fromObject(source) {\n const frontMatter = new FrontMatter();\n Object.assign(frontMatter, source);\n return frontMatter;\n }\n\n assignToObject(target) {\n Object.assign(target, this);\n target.bibliography = objectFromMap(this.bibliographyEntries);\n target.url = this.url;\n target.doi = this.doi;\n target.githubUrl = this.githubUrl;\n target.previewURL = this.previewURL;\n if (this.publishedDate) {\n target.volume = this.volume;\n target.issue = this.issue;\n target.publishedDateRFC = this.publishedDateRFC;\n target.publishedYear = this.publishedYear;\n target.publishedMonth = this.publishedMonth;\n target.publishedDay = this.publishedDay;\n target.publishedMonthPadded = this.publishedMonthPadded;\n target.publishedDayPadded = this.publishedDayPadded;\n }\n if (this.updatedDate) {\n target.updatedDateRFC = this.updatedDateRFC;\n }\n target.concatenatedAuthors = this.concatenatedAuthors;\n target.bibtexAuthors = this.bibtexAuthors;\n target.slug = this.slug;\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport const Mutating = (superclass) => {\n return class extends superclass {\n\n constructor() {\n super();\n\n // set up mutation observer\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver( () => {\n observer.disconnect();\n this.renderIfPossible();\n observer.observe(this, options);\n });\n\n // ...and listen for changes\n observer.observe(this, options);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.renderIfPossible();\n }\n\n // potential TODO: check if this is enough for all our usecases\n // maybe provide a custom function to tell if we have enough information to render\n renderIfPossible() {\n if (this.textContent && this.root) {\n this.renderContent();\n }\n }\n\n renderContent() {\n console.error(`Your class ${this.constructor.name} must provide a custom renderContent() method!` );\n }\n\n }; // end class\n}; // end mixin function\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/*global ShadyCSS*/\n\nexport const Template = (name, templateString, useShadow = true) => {\n\n return (superclass) => {\n\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n if (useShadow && 'ShadyCSS' in window) {\n ShadyCSS.prepareTemplate(template, name);\n }\n\n return class extends superclass {\n\n static get is() { return name; }\n\n constructor() {\n super();\n\n this.clone = document.importNode(template.content, true);\n if (useShadow) {\n this.attachShadow({mode: 'open'});\n this.shadowRoot.appendChild(this.clone);\n }\n }\n\n connectedCallback() {\n if (this.hasAttribute('distill-prerendered')) {\n return;\n }\n if (useShadow) {\n if ('ShadyCSS' in window) {\n ShadyCSS.styleElement(this);\n }\n } else {\n this.insertBefore(this.clone, this.firstChild);\n }\n }\n\n get root() {\n if (useShadow) {\n return this.shadowRoot;\n } else {\n return this;\n }\n }\n\n /* TODO: Are we using these? Should we even? */\n $(query) {\n return this.root.querySelector(query);\n }\n\n $$(query) {\n return this.root.querySelectorAll(query);\n }\n };\n };\n};\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This is a straight concatenation of code from KaTeX's contrib folder,\n// but we aren't using some of their helpers that don't work well outside a browser environment.\n\n/*global katex */\n\nconst findEndOfMath = function(delimiter, text, startIndex) {\n // Adapted from\n // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx\n let index = startIndex;\n let braceLevel = 0;\n\n const delimLength = delimiter.length;\n\n while (index < text.length) {\n const character = text[index];\n\n if (\n braceLevel <= 0 &&\n text.slice(index, index + delimLength) === delimiter\n ) {\n return index;\n } else if (character === \"\\\\\") {\n index++;\n } else if (character === \"{\") {\n braceLevel++;\n } else if (character === \"}\") {\n braceLevel--;\n }\n\n index++;\n }\n\n return -1;\n};\n\nconst splitAtDelimiters = function(startData, leftDelim, rightDelim, display) {\n const finalData = [];\n\n for (let i = 0; i < startData.length; i++) {\n if (startData[i].type === \"text\") {\n const text = startData[i].data;\n\n let lookingForLeft = true;\n let currIndex = 0;\n let nextIndex;\n\n nextIndex = text.indexOf(leftDelim);\n if (nextIndex !== -1) {\n currIndex = nextIndex;\n finalData.push({\n type: \"text\",\n data: text.slice(0, currIndex)\n });\n lookingForLeft = false;\n }\n\n while (true) {\n // eslint-disable-line no-constant-condition\n if (lookingForLeft) {\n nextIndex = text.indexOf(leftDelim, currIndex);\n if (nextIndex === -1) {\n break;\n }\n\n finalData.push({\n type: \"text\",\n data: text.slice(currIndex, nextIndex)\n });\n\n currIndex = nextIndex;\n } else {\n nextIndex = findEndOfMath(\n rightDelim,\n text,\n currIndex + leftDelim.length\n );\n if (nextIndex === -1) {\n break;\n }\n\n finalData.push({\n type: \"math\",\n data: text.slice(currIndex + leftDelim.length, nextIndex),\n rawData: text.slice(currIndex, nextIndex + rightDelim.length),\n display: display\n });\n\n currIndex = nextIndex + rightDelim.length;\n }\n\n lookingForLeft = !lookingForLeft;\n }\n\n finalData.push({\n type: \"text\",\n data: text.slice(currIndex)\n });\n } else {\n finalData.push(startData[i]);\n }\n }\n\n return finalData;\n};\n\nconst splitWithDelimiters = function(text, delimiters) {\n let data = [{ type: \"text\", data: text }];\n for (let i = 0; i < delimiters.length; i++) {\n const delimiter = delimiters[i];\n data = splitAtDelimiters(\n data,\n delimiter.left,\n delimiter.right,\n delimiter.display || false\n );\n }\n return data;\n};\n\n/* Note: optionsCopy is mutated by this method. If it is ever exposed in the\n * API, we should copy it before mutating.\n */\nconst renderMathInText = function(text, optionsCopy) {\n const data = splitWithDelimiters(text, optionsCopy.delimiters);\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < data.length; i++) {\n if (data[i].type === \"text\") {\n fragment.appendChild(document.createTextNode(data[i].data));\n } else {\n const tag = document.createElement(\"d-math\");\n const math = data[i].data;\n // Override any display mode defined in the settings with that\n // defined by the text itself\n optionsCopy.displayMode = data[i].display;\n try {\n tag.textContent = math;\n if (optionsCopy.displayMode) {\n tag.setAttribute(\"block\", \"\");\n }\n } catch (e) {\n if (!(e instanceof katex.ParseError)) {\n throw e;\n }\n optionsCopy.errorCallback(\n \"KaTeX auto-render: Failed to parse `\" + data[i].data + \"` with \",\n e\n );\n fragment.appendChild(document.createTextNode(data[i].rawData));\n continue;\n }\n fragment.appendChild(tag);\n }\n }\n\n return fragment;\n};\n\nconst renderElem = function(elem, optionsCopy) {\n for (let i = 0; i < elem.childNodes.length; i++) {\n const childNode = elem.childNodes[i];\n if (childNode.nodeType === 3) {\n // Text node\n const text = childNode.textContent;\n if (optionsCopy.mightHaveMath(text)) {\n const frag = renderMathInText(text, optionsCopy);\n i += frag.childNodes.length - 1;\n elem.replaceChild(frag, childNode);\n }\n } else if (childNode.nodeType === 1) {\n // Element node\n const shouldRender =\n optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) ===\n -1;\n\n if (shouldRender) {\n renderElem(childNode, optionsCopy);\n }\n }\n // Otherwise, it's something else, and ignore it.\n }\n};\n\nconst defaultAutoRenderOptions = {\n delimiters: [\n { left: \"$$\", right: \"$$\", display: true },\n { left: \"\\\\[\", right: \"\\\\]\", display: true },\n { left: \"\\\\(\", right: \"\\\\)\", display: false }\n // LaTeX uses this, but it ruins the display of normal `$` in text:\n // {left: '$', right: '$', display: false},\n ],\n\n ignoredTags: [\n \"script\",\n \"noscript\",\n \"style\",\n \"textarea\",\n \"pre\",\n \"code\",\n \"svg\"\n ],\n\n errorCallback: function(msg, err) {\n console.error(msg, err);\n }\n};\n\nexport const renderMathInElement = function(elem, options) {\n if (!elem) {\n throw new Error(\"No element provided to render\");\n }\n\n const optionsCopy = Object.assign({}, defaultAutoRenderOptions, options);\n const delimiterStrings = optionsCopy.delimiters.flatMap(d => [\n d.left,\n d.right\n ]);\n const mightHaveMath = text =>\n delimiterStrings.some(d => text.indexOf(d) !== -1);\n optionsCopy.mightHaveMath = mightHaveMath;\n renderElem(elem, optionsCopy);\n};\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/*global katex */\nimport { Mutating } from '../mixins/mutating.js';\nimport { Template } from '../mixins/template.js';\n\nimport style from '../styles/d-math.css';\n\n// attaches renderMathInElement to window\nimport { renderMathInElement } from '../helpers/katex-auto-render';\n\nexport const katexJSURL = 'https://distill.pub/third-party/katex/katex.min.js';\nexport const katexCSSTag = '';\n\nconst T = Template('d-math', `\n${katexCSSTag}\n\n\n`);\n\n// DMath, not Math, because that would conflict with the JS built-in\nexport class DMath extends Mutating(T(HTMLElement)) {\n\n static set katexOptions(options) {\n DMath._katexOptions = options;\n if (DMath.katexOptions.delimiters) {\n if (!DMath.katexAdded) {\n DMath.addKatex();\n } else {\n DMath.katexLoadedCallback();\n }\n }\n }\n\n static get katexOptions() {\n if (!DMath._katexOptions) {\n DMath._katexOptions = {\n delimiters: [ { 'left':'$$', 'right':'$$', 'display': false } ]\n };\n }\n return DMath._katexOptions;\n }\n\n static katexLoadedCallback() {\n // render all d-math tags\n const mathTags = document.querySelectorAll('d-math');\n for (const mathTag of mathTags) {\n mathTag.renderContent();\n }\n // transform inline delimited math to d-math tags\n if (DMath.katexOptions.delimiters) {\n renderMathInElement(document.body, DMath.katexOptions);\n }\n }\n\n static addKatex() {\n // css tag can use this convenience function\n document.head.insertAdjacentHTML('beforeend', katexCSSTag);\n // script tag has to be created to work properly\n const scriptTag = document.createElement('script');\n scriptTag.src = katexJSURL;\n scriptTag.async = true;\n scriptTag.onload = DMath.katexLoadedCallback;\n scriptTag.crossorigin = 'anonymous';\n document.head.appendChild(scriptTag);\n\n DMath.katexAdded = true;\n }\n\n get options() {\n const localOptions = { displayMode: this.hasAttribute('block') };\n return Object.assign(localOptions, DMath.katexOptions);\n }\n\n connectedCallback() {\n super.connectedCallback();\n if (!DMath.katexAdded) {\n DMath.addKatex();\n }\n }\n\n renderContent() {\n if (typeof katex !== 'undefined') {\n const container = this.root.querySelector('#katex-container');\n katex.render(this.textContent, container, this.options);\n }\n }\n\n}\n\nDMath.katexAdded = false;\nDMath.inlineMathRendered = false;\nwindow.DMath = DMath; // TODO: check if this can be removed, or if we should expose a distill global\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport function collect_citations(dom = document) {\n const citations = new Set();\n const citeTags = dom.querySelectorAll(\"d-cite\");\n for (const tag of citeTags) {\n const keyString = tag.getAttribute(\"key\") || tag.getAttribute(\"bibtex-key\");\n const keys = keyString.split(\",\").map(k => k.trim());\n for (const key of keys) {\n citations.add(key);\n }\n }\n return [...citations];\n}\n\nexport function inline_cite_short(keys) {\n function cite_string(key) {\n if (key in data.bibliography) {\n var n = data.citations.indexOf(key) + 1;\n return \"\" + n;\n } else {\n return \"?\";\n }\n }\n return \"[\" + keys.map(cite_string).join(\", \") + \"]\";\n}\n\nexport function inline_cite_long(keys) {\n function cite_string(key) {\n if (key in data.bibliography) {\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim());\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n}\n\nfunction author_string(ent, template, sep, finalSep) {\n if (ent.author == null) {\n return \"\";\n }\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1) {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else if (name.indexOf(\" \") != -1) {\n var last = name\n .split(\" \")\n .slice(-1)[0]\n .trim();\n var firsts = name\n .split(\" \")\n .slice(0, -1)\n .join(\" \");\n } else {\n var last = name.trim();\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts\n .trim()\n .split(\" \")\n .map(s => s.trim()[0]);\n initials = initials.join(\".\") + \".\";\n }\n return template\n .replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials)\n .trim(); // in case one of first or last was empty\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length - 1).join(sep);\n str += (finalSep || sep) + name_strings[names.length - 1];\n return str;\n } else {\n return name_strings[0];\n }\n}\n\nfunction venue_string(ent) {\n var cite = ent.journal || ent.booktitle || \"\";\n if (\"volume\" in ent) {\n var issue = ent.issue || ent.number;\n issue = issue != undefined ? \"(\" + issue + \")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent) {\n cite += \", pp. \" + ent.pages;\n }\n if (cite != \"\") cite += \". \";\n if (\"publisher\" in ent) {\n cite += ent.publisher;\n if (cite[cite.length - 1] != \".\") cite += \".\";\n }\n return cite;\n}\n\nfunction link_string(ent) {\n if (\"url\" in ent) {\n var url = ent.url;\n var arxiv_match = /arxiv\\.org\\/abs\\/([0-9\\.]*)/.exec(url);\n if (arxiv_match != null) {\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\") {\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label || \"link\"}]`;\n } /* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n}\nfunction doi_string(ent, new_line) {\n if (\"doi\" in ent) {\n return `${new_line ? \"
    \" : \"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n}\n\nfunction title_string(ent) {\n return '' + ent.title + \" \";\n}\n\nexport function bibliography_cite(ent, fancy) {\n if (ent) {\n var cite = title_string(ent);\n cite += link_string(ent) + \"
    \";\n if (ent.author) {\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date) {\n cite += \", \";\n }\n }\n if (ent.year || ent.date) {\n cite += (ent.year || ent.date) + \". \";\n } else {\n cite += \". \";\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite;\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n}\n\nexport function hover_cite(ent) {\n if (ent) {\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \";\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str =\n venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str + v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n}\n\n//https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\nfunction get_GS_URL(ent) {\n if (ent) {\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim());\n var title = ent.title.split(\" \"); //.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"; //\"\"https://scholar.google.com/scholar?\"\n url += uris({ q: names.join(\" \") + \" \" + title.join(\" \") });\n }\n}\n","export function domContentLoaded() {\n return ['interactive', 'complete'].indexOf(document.readyState) !== -1;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport function _moveLegacyAffiliationFormatIntoArray(frontMatter) {\n // authors used to have propoerties \"affiliation\" and \"affiliationURL\".\n // We now encourage using an array for affiliations containing objects with\n // properties \"name\" and \"url\".\n for (let author of frontMatter.authors) {\n const hasOldStyle = Boolean(author.affiliation)\n const hasNewStyle = Boolean(author.affiliations)\n if (!hasOldStyle) continue;\n if (hasNewStyle) {\n console.warn(`Author ${author.author} has both old-style (\"affiliation\" & \"affiliationURL\") and new style (\"affiliations\") affiliation information!`)\n } else {\n let newAffiliation = {\n \"name\": author.affiliation\n }\n if (author.affiliationURL) newAffiliation.url = author.affiliationURL;\n author.affiliations = [newAffiliation];\n }\n }\n return frontMatter\n}\n\nexport function parseFrontmatter(element) {\n const scriptTag = element.firstElementChild;\n if (scriptTag) {\n const type = scriptTag.getAttribute('type');\n if (type.split('/')[1] == 'json') {\n const content = scriptTag.textContent;\n const parsed = JSON.parse(content);\n return _moveLegacyAffiliationFormatIntoArray(parsed);\n } else {\n console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');\n }\n } else {\n console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.');\n }\n return {};\n}\n\nexport class FrontMatter extends HTMLElement {\n\n static get is() { return 'd-front-matter'; }\n\n constructor() {\n super();\n\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver( (entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n const data = parseFrontmatter(this);\n this.notify(data);\n }\n }\n });\n observer.observe(this, options);\n }\n\n notify(data) {\n const options = { detail: data, bubbles: true };\n const event = new CustomEvent('onFrontMatterChanged', options);\n document.dispatchEvent(event);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// no appendix -> add appendix\n// title in front, no h1 -> add it\n// no title in front, h1 -> read and put into frontMatter\n// footnote -> footnote list\n// break up bib\n// if citation, no bib-list -> add citation-list\n\n// if authors, no byline -> add byline\n\nexport default function(dom, data) {\n const body = dom.body;\n const article = body.querySelector('d-article');\n\n // If we don't have an article tag, something weird is going on—giving up.\n if (!article) {\n console.warn('No d-article tag found; skipping adding optional components!');\n return;\n }\n\n let byline = dom.querySelector('d-byline');\n if (!byline) {\n if (data.authors) {\n byline = dom.createElement('d-byline');\n body.insertBefore(byline, article);\n } else {\n console.warn('No authors found in front matter; please add them before submission!');\n }\n }\n\n let title = dom.querySelector('d-title');\n if (!title) {\n title = dom.createElement('d-title');\n body.insertBefore(title, byline);\n }\n\n let h1 = title.querySelector('h1');\n if (!h1) {\n h1 = dom.createElement('h1');\n h1.textContent = data.title;\n title.insertBefore(h1, title.firstChild);\n }\n\n const hasPassword = typeof data.password !== 'undefined';\n let interstitial = body.querySelector('d-interstitial');\n if (hasPassword && !interstitial) {\n const inBrowser = typeof window !== 'undefined';\n const onLocalhost = inBrowser && window.location.hostname.includes('localhost');\n if (!inBrowser || !onLocalhost) {\n interstitial = dom.createElement('d-interstitial');\n interstitial.password = data.password;\n body.insertBefore(interstitial, body.firstChild);\n }\n } else if (!hasPassword && interstitial) {\n interstitial.parentElement.removeChild(this);\n }\n\n let appendix = dom.querySelector('d-appendix');\n if (!appendix) {\n appendix = dom.createElement('d-appendix');\n dom.body.appendChild(appendix);\n }\n\n let footnoteList = dom.querySelector('d-footnote-list');\n if (!footnoteList) {\n footnoteList = dom.createElement('d-footnote-list');\n appendix.appendChild(footnoteList);\n }\n\n let citationList = dom.querySelector('d-citation-list');\n if (!citationList) {\n citationList = dom.createElement('d-citation-list');\n appendix.appendChild(citationList);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { FrontMatter, mergeFromYMLFrontmatter } from \"./front-matter\";\nimport { DMath } from \"./components/d-math\";\nimport { collect_citations } from \"./helpers/citation.js\";\nimport { domContentLoaded } from \"./helpers/domContentLoaded.js\";\nimport { parseFrontmatter } from \"./components/d-front-matter\";\nimport optionalComponents from \"./transforms/optional-components\";\n\nconst frontMatter = new FrontMatter();\n\nexport const Controller = {\n frontMatter: frontMatter,\n waitingOn: {\n bibliography: [],\n citations: []\n },\n listeners: {\n onCiteKeyCreated(event) {\n const [citeTag, keys] = event.detail;\n\n // ensure we have citations\n if (!frontMatter.citationsCollected) {\n // console.debug('onCiteKeyCreated, but unresolved dependency (\"citations\"). Enqueing.');\n Controller.waitingOn.citations.push(() =>\n Controller.listeners.onCiteKeyCreated(event)\n );\n return;\n }\n\n // ensure we have a loaded bibliography\n if (!frontMatter.bibliographyParsed) {\n // console.debug('onCiteKeyCreated, but unresolved dependency (\"bibliography\"). Enqueing.');\n Controller.waitingOn.bibliography.push(() =>\n Controller.listeners.onCiteKeyCreated(event)\n );\n return;\n }\n\n const numbers = keys.map(key => frontMatter.citations.indexOf(key));\n citeTag.numbers = numbers;\n const entries = keys.map(key => frontMatter.bibliography.get(key));\n citeTag.entries = entries;\n },\n\n onCiteKeyChanged() {\n // const [citeTag, keys] = event.detail;\n\n // update citations\n frontMatter.citations = collect_citations();\n frontMatter.citationsCollected = true;\n for (const waitingCallback of Controller.waitingOn.citations.slice()) {\n waitingCallback();\n }\n\n // update bibliography\n const citationListTag = document.querySelector(\"d-citation-list\");\n const bibliographyEntries = new Map(\n frontMatter.citations.map(citationKey => {\n return [citationKey, frontMatter.bibliography.get(citationKey)];\n })\n );\n citationListTag.citations = bibliographyEntries;\n\n const citeTags = document.querySelectorAll(\"d-cite\");\n for (const citeTag of citeTags) {\n console.log(citeTag);\n const keys = citeTag.keys;\n const numbers = keys.map(key => frontMatter.citations.indexOf(key));\n citeTag.numbers = numbers;\n const entries = keys.map(key => frontMatter.bibliography.get(key));\n citeTag.entries = entries;\n }\n },\n\n onCiteKeyRemoved(event) {\n Controller.listeners.onCiteKeyChanged(event);\n },\n\n onBibliographyChanged(event) {\n const citationListTag = document.querySelector(\"d-citation-list\");\n\n const bibliography = event.detail;\n\n frontMatter.bibliography = bibliography;\n frontMatter.bibliographyParsed = true;\n for (const waitingCallback of Controller.waitingOn.bibliography.slice()) {\n waitingCallback();\n }\n\n // ensure we have citations\n if (!frontMatter.citationsCollected) {\n Controller.waitingOn.citations.push(function() {\n Controller.listeners.onBibliographyChanged({\n target: event.target,\n detail: event.detail\n });\n });\n return;\n }\n\n if (citationListTag.hasAttribute(\"distill-prerendered\")) {\n console.debug(\"Citation list was prerendered; not updating it.\");\n } else {\n const entries = new Map(\n frontMatter.citations.map(citationKey => {\n return [citationKey, frontMatter.bibliography.get(citationKey)];\n })\n );\n citationListTag.citations = entries;\n }\n },\n\n onFootnoteChanged() {\n // const footnote = event.detail;\n //TODO: optimize to only update current footnote\n const footnotesList = document.querySelector(\"d-footnote-list\");\n if (footnotesList) {\n const footnotes = document.querySelectorAll(\"d-footnote\");\n footnotesList.footnotes = footnotes;\n }\n },\n\n onFrontMatterChanged(event) {\n const data = event.detail;\n mergeFromYMLFrontmatter(frontMatter, data);\n\n const interstitial = document.querySelector(\"d-interstitial\");\n if (interstitial) {\n if (typeof frontMatter.password !== \"undefined\") {\n interstitial.password = frontMatter.password;\n } else {\n interstitial.parentElement.removeChild(interstitial);\n }\n }\n\n const prerendered = document.body.hasAttribute(\"distill-prerendered\");\n if (!prerendered && domContentLoaded()) {\n optionalComponents(document, frontMatter);\n\n const appendix = document.querySelector(\"distill-appendix\");\n if (appendix) {\n appendix.frontMatter = frontMatter;\n }\n\n const byline = document.querySelector(\"d-byline\");\n if (byline) {\n byline.frontMatter = frontMatter;\n }\n\n if (data.katex) {\n DMath.katexOptions = data.katex;\n }\n }\n },\n\n DOMContentLoaded() {\n if (Controller.loaded) {\n console.warn(\n \"Controller received DOMContentLoaded but was already loaded!\"\n );\n return;\n } else if (!domContentLoaded()) {\n console.warn(\n \"Controller received DOMContentLoaded at document.readyState: \" +\n document.readyState +\n \"!\"\n );\n return;\n } else {\n Controller.loaded = true;\n console.debug(\"Runlevel 4: Controller running DOMContentLoaded\");\n }\n\n const frontMatterTag = document.querySelector(\"d-front-matter\");\n if (frontMatterTag) {\n const data = parseFrontmatter(frontMatterTag);\n Controller.listeners.onFrontMatterChanged({ detail: data });\n }\n\n // Resolving \"citations\" dependency due to initial DOM load\n frontMatter.citations = collect_citations();\n frontMatter.citationsCollected = true;\n for (const waitingCallback of Controller.waitingOn.citations.slice()) {\n waitingCallback();\n }\n\n if (frontMatter.bibliographyParsed) {\n for (const waitingCallback of Controller.waitingOn.bibliography.slice()) {\n waitingCallback();\n }\n }\n\n const footnotesList = document.querySelector(\"d-footnote-list\");\n if (footnotesList) {\n const footnotes = document.querySelectorAll(\"d-footnote\");\n footnotesList.footnotes = footnotes;\n }\n }\n } // listeners\n}; // Controller\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport print from './styles-print.css';\nimport byline from './d-byline.css';\nimport article from './d-article.css';\nimport title from './d-title.css';\nimport math from './d-math.css';\n\nexport const styles = base + layout + title + byline + article + math + print;\n\nexport function makeStyleTag(dom) {\n\n const styleTagId = 'distill-prerendered-styles';\n const prerenderedTag = dom.getElementById(styleTagId);\n if (!prerenderedTag) {\n const styleTag = dom.createElement('style');\n styleTag.id = styleTagId;\n styleTag.type = 'text/css';\n const cssTextTag = dom.createTextNode(styles);\n styleTag.appendChild(cssTextTag);\n const firstScriptTag = dom.head.querySelector('script');\n dom.head.insertBefore(styleTag, firstScriptTag);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport function addPolyfill(polyfill, polyfillLoadedCallback) {\n console.debug('Runlevel 0: Polyfill required: ' + polyfill.name);\n const script = document.createElement('script');\n script.src = polyfill.url;\n script.async = false;\n if (polyfillLoadedCallback) {\n script.onload = function() { polyfillLoadedCallback(polyfill); };\n }\n script.onerror = function() {\n new Error('Runlevel 0: Polyfills failed to load script ' + polyfill.name);\n };\n document.head.appendChild(script);\n}\n\nexport const polyfills = [\n {\n name: 'WebComponents',\n support: function() {\n return 'customElements' in window &&\n 'attachShadow' in Element.prototype &&\n 'getRootNode' in Element.prototype &&\n 'content' in document.createElement('template') &&\n 'Promise' in window &&\n 'from' in Array;\n },\n url: 'https://distill.pub/third-party/polyfills/webcomponents-lite.js'\n }, {\n name: 'IntersectionObserver',\n support: function() {\n return 'IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window;\n },\n url: 'https://distill.pub/third-party/polyfills/intersection-observer.js'\n },\n];\n\nexport class Polyfills {\n\n static browserSupportsAllFeatures() {\n return polyfills.every((poly) => poly.support());\n }\n\n static load(callback) {\n // Define an intermediate callback that checks if all is loaded.\n const polyfillLoaded = function(polyfill) {\n polyfill.loaded = true;\n console.debug('Runlevel 0: Polyfill has finished loading: ' + polyfill.name);\n // console.debug(window[polyfill.name]);\n if (Polyfills.neededPolyfills.every((poly) => poly.loaded)) {\n console.debug('Runlevel 0: All required polyfills have finished loading.');\n console.debug('Runlevel 0->1.');\n window.distillRunlevel = 1;\n callback();\n }\n };\n // Add polyfill script tags\n for (const polyfill of Polyfills.neededPolyfills) {\n addPolyfill(polyfill, polyfillLoaded);\n }\n }\n\n static get neededPolyfills() {\n if (!Polyfills._neededPolyfills) {\n Polyfills._neededPolyfills = polyfills.filter((poly) => !poly.support());\n }\n return Polyfills._neededPolyfills;\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// const marginSmall = 16;\n// const marginLarge = 3 * marginSmall;\n// const margin = marginSmall + marginLarge;\n// const gutter = marginSmall;\n// const outsetAmount = margin / 2;\n// const numCols = 4;\n// const numGutters = numCols - 1;\n// const columnWidth = (768 - 2 * marginLarge - numGutters * gutter) / numCols;\n//\n// const screenwidth = 768;\n// const pageWidth = screenwidth - 2 * marginLarge;\n// const bodyWidth = pageWidth - columnWidth - gutter;\n\nexport function body(selector) {\n return `${selector} {\n grid-column: left / text;\n }\n `;\n}\n\nexport function page(selector) {\n return `${selector} {\n grid-column: left / page;\n }\n `;\n}\n\nexport function screen(selector) {\n return `${selector} {\n grid-column: start / end;\n }\n `;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\nimport { body } from '../helpers/layout';\n\nconst T = Template('d-abstract', `\n\n\n\n`);\n\nexport class Abstract extends T(HTMLElement) {\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\nconst T = Template('d-appendix', `\n\n\n`, false);\n\nexport class Appendix extends T(HTMLElement) {\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// import { Template } from '../mixins/template';\n// import { Controller } from '../controller';\n\nconst isOnlyWhitespace = /^\\s*$/;\n\nexport class Article extends HTMLElement {\n static get is() { return 'd-article'; }\n\n constructor() {\n super();\n\n new MutationObserver( (mutations) => {\n for (const mutation of mutations) {\n for (const addedNode of mutation.addedNodes) {\n switch (addedNode.nodeName) {\n case '#text': { // usually text nodes are only linebreaks.\n const text = addedNode.nodeValue;\n if (!isOnlyWhitespace.test(text)) {\n console.warn('Use of unwrapped text in distill articles is discouraged as it breaks layout! Please wrap any text in a or

    tag. We found the following text: ' + text);\n const wrapper = document.createElement('span');\n wrapper.innerHTML = addedNode.nodeValue;\n addedNode.parentNode.insertBefore(wrapper, addedNode);\n addedNode.parentNode.removeChild(addedNode);\n }\n } break;\n }\n }\n }\n }).observe(this, {childList: true});\n }\n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport bibtexParse from 'bibtex-parse-js';\n\nfunction normalizeTag(string) {\n return string\n .replace(/[\\t\\n ]+/g, ' ')\n .replace(/{\\\\[\"^`.'acu~Hvs]( )?([a-zA-Z])}/g, (full, x, char) => char)\n .replace(/{\\\\([a-zA-Z])}/g, (full, char) => char);\n}\n\nexport function parseBibtex(bibtex) {\n const bibliography = new Map();\n const parsedEntries = bibtexParse.toJSON(bibtex);\n for (const entry of parsedEntries) {\n // normalize tags; note entryTags is an object, not Map\n for (const [key, value] of Object.entries(entry.entryTags)) {\n entry.entryTags[key.toLowerCase()] = normalizeTag(value);\n }\n entry.entryTags.type = entry.entryType;\n // add to bibliography\n bibliography.set(entry.citationKey, entry.entryTags);\n }\n return bibliography;\n}\n\nexport function serializeFrontmatterToBibtex(frontMatter) {\n return `@article{${frontMatter.slug},\n author = {${frontMatter.bibtexAuthors}},\n title = {${frontMatter.title}},\n journal = {${frontMatter.journal.title}},\n year = {${frontMatter.publishedYear}},\n note = {${frontMatter.url}},\n doi = {${frontMatter.doi}}\n}`;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { parseBibtex } from '../helpers/bibtex';\n\nexport function parseBibliography(element) {\n const scriptTag = element.firstElementChild;\n if (scriptTag && scriptTag.tagName === 'SCRIPT') {\n if (scriptTag.type == 'text/bibtex') {\n const bibtex = element.firstElementChild.textContent;\n return parseBibtex(bibtex);\n } else if (scriptTag.type == 'text/json') {\n return new Map(JSON.parse(scriptTag.textContent));\n } else {\n console.warn('Unsupported bibliography script tag type: ' + scriptTag.type);\n }\n } else {\n console.warn('Bibliography did not have any script tag.');\n }\n}\n\nexport class Bibliography extends HTMLElement {\n\n static get is() { return 'd-bibliography'; }\n\n constructor() {\n super();\n\n // set up mutation observer\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver( (entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n this.parseIfPossible();\n }\n }\n });\n observer.observe(this, options);\n }\n\n connectedCallback() {\n requestAnimationFrame(() => {\n this.parseIfPossible();\n });\n }\n\n parseIfPossible() {\n const scriptTag = this.querySelector('script');\n if (!scriptTag) return;\n if (scriptTag.type == 'text/bibtex') {\n const newBibtex = scriptTag.textContent;\n if (this.bibtex !== newBibtex) {\n this.bibtex = newBibtex;\n const bibliography = parseBibtex(this.bibtex);\n this.notify(bibliography);\n }\n } else if (scriptTag.type == 'text/json') {\n const bibliography = new Map(JSON.parse(scriptTag.textContent));\n this.notify(bibliography);\n } else {\n console.warn('Unsupported bibliography script tag type: ' + scriptTag.type);\n }\n }\n\n notify(bibliography) {\n const options = { detail: bibliography, bubbles: true };\n const event = new CustomEvent('onBibliographyChanged', options);\n this.dispatchEvent(event);\n }\n\n /* observe 'src' attribute */\n\n static get observedAttributes() {\n return ['src'];\n }\n\n receivedBibtex(event) {\n const bibliography = parseBibtex(event.target.response);\n this.notify(bibliography);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n var oReq = new XMLHttpRequest();\n oReq.onload = (e) => this.receivedBibtex(e);\n oReq.onerror = () => console.warn(`Could not load Bibtex! (tried ${newValue})`);\n oReq.responseType = 'text';\n oReq.open('GET', newValue, true);\n oReq.send();\n }\n\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// import style from '../styles/d-byline.css';\n\nexport function bylineTemplate(frontMatter) {\n return `\n

    \n
    \n

    Authors

    \n

    Affiliations

    \n ${frontMatter.authors.map(author => `\n

    \n ${author.personalURL ? `\n ${author.name}` : `\n ${author.name}`}\n

    \n

    \n ${author.affiliations.map(affiliation =>\n affiliation.url ? `${affiliation.name}` : `${affiliation.name}`\n ).join(', ')}\n

    \n `).join('')}\n
    \n
    \n

    Published

    \n ${frontMatter.publishedDate ? `\n

    ${frontMatter.publishedMonth} ${frontMatter.publishedDay}, ${frontMatter.publishedYear}

    ` : `\n

    Not published yet.

    `}\n
    \n
    \n`;\n}\n\nexport class Byline extends HTMLElement {\n\n static get is() { return 'd-byline'; }\n\n set frontMatter(frontMatter) {\n this.innerHTML = bylineTemplate(frontMatter);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from \"../mixins/template\";\nimport { hover_cite, bibliography_cite } from \"../helpers/citation\";\n\nconst T = Template(\n \"d-cite\",\n `\n\n\n\n\n
    \n \n
    \n`\n);\n\nexport class Cite extends T(HTMLElement) {\n /* Lifecycle */\n constructor() {\n super();\n this._numbers = [];\n this._entries = [];\n }\n\n connectedCallback() {\n this.outerSpan = this.root.querySelector(\"#citation-\");\n this.innerSpan = this.root.querySelector(\".citation-number\");\n this.hoverBox = this.root.querySelector(\"d-hover-box\");\n window.customElements.whenDefined(\"d-hover-box\").then(() => {\n this.hoverBox.listen(this);\n });\n // in case this component got connected after values were set\n if (this.numbers) {\n this.displayNumbers(this.numbers);\n }\n if (this.entries) {\n this.displayEntries(this.entries);\n }\n }\n\n //TODO This causes an infinite loop on firefox with polyfills.\n // This is only needed for interactive editing so no priority.\n // disconnectedCallback() {\n // const options = { detail: [this, this.keys], bubbles: true };\n // const event = new CustomEvent('onCiteKeyRemoved', options);\n // document.dispatchEvent(event);\n // }\n\n /* observe 'key' attribute */\n\n static get observedAttributes() {\n return [\"key\", \"bibtex-key\"];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n const eventName = oldValue ? \"onCiteKeyChanged\" : \"onCiteKeyCreated\";\n const keys = newValue.split(\",\").map(k => k.trim());\n const options = { detail: [this, keys], bubbles: true };\n const event = new CustomEvent(eventName, options);\n document.dispatchEvent(event);\n }\n\n set key(value) {\n this.setAttribute(\"key\", value);\n }\n\n get key() {\n return this.getAttribute(\"key\") || this.getAttribute(\"bibtex-key\");\n }\n\n get keys() {\n const result = this.key.split(\",\");\n console.log(result);\n return result;\n }\n\n /* Setters & Rendering */\n\n set numbers(numbers) {\n this._numbers = numbers;\n this.displayNumbers(numbers);\n }\n\n get numbers() {\n return this._numbers;\n }\n\n displayNumbers(numbers) {\n if (!this.innerSpan) return;\n const numberStrings = numbers.map(index => {\n return index == -1 ? \"?\" : index + 1 + \"\";\n });\n const textContent = \"[\" + numberStrings.join(\", \") + \"]\";\n this.innerSpan.textContent = textContent;\n }\n\n set entries(entries) {\n this._entries = entries;\n this.displayEntries(entries);\n }\n\n get entries() {\n return this._entries;\n }\n\n displayEntries(entries) {\n if (!this.hoverBox) return;\n this.hoverBox.innerHTML = `
      \n ${entries\n .map(hover_cite)\n .map(html => `
    • ${html}
    • `)\n .join(\"\\n\")}\n
    `;\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { bibliography_cite } from '../helpers/citation';\n\nconst styles = `\nd-citation-list {\n contain: style;\n}\n\nd-citation-list .references {\n grid-column: text;\n}\n\nd-citation-list .references .title {\n font-weight: 500;\n}\n`;\n\nexport function renderCitationList(element, entries, dom=document) {\n if (entries.size > 0) {\n element.style.display = '';\n let list = element.querySelector('.references');\n if (list) {\n list.innerHTML = '';\n } else {\n const stylesTag = dom.createElement('style');\n stylesTag.innerHTML = styles;\n element.appendChild(stylesTag);\n\n const heading = dom.createElement('h3');\n heading.id = 'references';\n heading.textContent = 'References';\n element.appendChild(heading);\n\n list = dom.createElement('ol');\n list.id = 'references-list';\n list.className = 'references';\n element.appendChild(list);\n }\n\n for (const [key, entry] of entries) {\n const listItem = dom.createElement('li');\n listItem.id = key;\n listItem.innerHTML = bibliography_cite(entry);\n list.appendChild(listItem);\n }\n } else {\n element.style.display = 'none';\n }\n}\n\nexport class CitationList extends HTMLElement {\n\n static get is() { return 'd-citation-list'; }\n\n connectedCallback() {\n if (!this.hasAttribute('distill-prerendered')) {\n this.style.display = 'none';\n }\n }\n\n set citations(citations) {\n renderCitationList(this, citations);\n }\n\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function (_self){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\nvar uniqueId = 0;\n\n\nvar _ = {\n\tmanual: _self.Prism && _self.Prism.manual,\n\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\tutil: {\n\t\tencode: function encode(tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\treturn tokens.map(encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/' + env.content + '';\n};\n\n/**\n * @param {string} text\n * @param {LinkedList} tokenList\n * @param {any} grammar\n * @param {LinkedListNode} startNode\n * @param {number} startPos\n * @param {boolean} [oneshot=false]\n * @param {string} [target]\n */\nfunction matchGrammar(text, tokenList, grammar, startNode, startPos, oneshot, target) {\n\tfor (var token in grammar) {\n\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar patterns = grammar[token];\n\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\tif (target && target == token + ',' + j) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar pattern = patterns[j],\n\t\t\t\tinside = pattern.inside,\n\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\tgreedy = !!pattern.greedy,\n\t\t\t\tlookbehindLength = 0,\n\t\t\t\talias = pattern.alias;\n\n\t\t\tif (greedy && !pattern.pattern.global) {\n\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\tvar flags = pattern.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + 'g');\n\t\t\t}\n\n\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t) {\n\n\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\n\t\t\t\tif (greedy && currentNode != tokenList.tail.prev) {\n\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\tvar match = pattern.exec(text);\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + (lookbehind && match[1] ? match[1].length : 0);\n\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t}\n\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\tpos = p;\n\n\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\tfor (\n\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\tk !== tokenList.tail && (p < to || (typeof k.value === 'string' && !k.prev.value.greedy));\n\t\t\t\t\t\tk = k.next\n\t\t\t\t\t) {\n\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t}\n\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t// replace with the new match\n\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t} else {\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str);\n\t\t\t\t}\n\n\t\t\t\tif (!match) {\n\t\t\t\t\tif (oneshot) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (lookbehind) {\n\t\t\t\t\tlookbehindLength = match[1] ? match[1].length : 0;\n\t\t\t\t}\n\n\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\tmatch = match[0].slice(lookbehindLength),\n\t\t\t\t\tto = from + match.length,\n\t\t\t\t\tbefore = str.slice(0, from),\n\t\t\t\t\tafter = str.slice(to);\n\n\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\tif (before) {\n\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\tpos += before.length;\n\t\t\t\t}\n\n\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\tif (after) {\n\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t}\n\n\n\t\t\t\tif (removeCount > 1)\n\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, true, token + ',' + j);\n\n\t\t\t\tif (oneshot)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @typedef LinkedListNode\n * @property {T} value\n * @property {LinkedListNode | null} prev The previous node.\n * @property {LinkedListNode | null} next The next node.\n * @template T\n */\n\n/**\n * @template T\n */\nfunction LinkedList() {\n\t/** @type {LinkedListNode} */\n\tvar head = { value: null, prev: null, next: null };\n\t/** @type {LinkedListNode} */\n\tvar tail = { value: null, prev: head, next: null };\n\thead.next = tail;\n\n\t/** @type {LinkedListNode} */\n\tthis.head = head;\n\t/** @type {LinkedListNode} */\n\tthis.tail = tail;\n\tthis.length = 0;\n}\n\n/**\n * Adds a new node with the given value to the list.\n * @param {LinkedList} list\n * @param {LinkedListNode} node\n * @param {T} value\n * @returns {LinkedListNode} The added node.\n * @template T\n */\nfunction addAfter(list, node, value) {\n\t// assumes that node != list.tail && values.length >= 0\n\tvar next = node.next;\n\n\tvar newNode = { value: value, prev: node, next: next };\n\tnode.next = newNode;\n\tnext.prev = newNode;\n\tlist.length++;\n\n\treturn newNode;\n}\n/**\n * Removes `count` nodes after the given node. The given node will not be removed.\n * @param {LinkedList} list\n * @param {LinkedListNode} node\n * @param {number} count\n * @template T\n */\nfunction removeRange(list, node, count) {\n\tvar next = node.next;\n\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\tnext = next.next;\n\t}\n\tnode.next = next;\n\tnext.prev = node;\n\tlist.length -= i;\n}\n/**\n * @param {LinkedList} list\n * @returns {T[]}\n * @template T\n */\nfunction toArray(list) {\n\tvar array = [];\n\tvar node = list.head.next;\n\twhile (node !== list.tail) {\n\t\tarray.push(node.value);\n\t\tnode = node.next;\n\t}\n\treturn array;\n}\n\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _;\n\t}\n\n\tif (!_.disableWorkerMessageHandler) {\n\t\t// In worker\n\t\t_self.addEventListener('message', function (evt) {\n\t\t\tvar message = JSON.parse(evt.data),\n\t\t\t\tlang = message.language,\n\t\t\t\tcode = message.code,\n\t\t\t\timmediateClose = message.immediateClose;\n\n\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\tif (immediateClose) {\n\t\t\t\t_self.close();\n\t\t\t}\n\t\t}, false);\n\t}\n\n\treturn _;\n}\n\n//Get current script and highlight\nvar script = _.util.currentScript();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (script.hasAttribute('data-manual')) {\n\t\t_.manual = true;\n\t}\n}\n\nfunction highlightAutomaticallyCallback() {\n\tif (!_.manual) {\n\t\t_.highlightAll();\n\t}\n}\n\nif (!_.manual) {\n\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t// See https://github.com/PrismJS/prism/issues/2102\n\tvar readyState = document.readyState;\n\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t} else {\n\t\tif (window.requestAnimationFrame) {\n\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t}\n\t}\n}\n\nreturn _;\n\n})(_self);\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\s\\S]+?\\?>/,\n\t'doctype': {\n\t\tpattern: /\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:(?!)*\\]\\s*)?>/i,\n\t\tgreedy: true\n\t},\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t/^=/,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\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\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `\n\n\n\n`);\n\nexport class Code extends Mutating(T(HTMLElement)) {\n\n renderContent() {\n\n // check if language can be highlighted\n this.languageName = this.getAttribute('language');\n if (!this.languageName) {\n console.warn('You need to provide a language attribute to your block to let us know how to highlight your code; e.g.:\\n zeros = np.zeros(shape).');\n return;\n }\n const language = Prism.languages[this.languageName];\n if (language == undefined) {\n console.warn(`Distill does not yet support highlighting your code block in \"${this.languageName}'.`);\n return;\n }\n\n let content = this.textContent;\n const codeTag = this.shadowRoot.querySelector('#code-container');\n\n if (this.hasAttribute('block')) {\n // normalize the tab indents\n content = content.replace(/\\n/, '');\n const tabs = content.match(/\\s*/);\n content = content.replace(new RegExp('\\n' + tabs, 'g'), '\\n');\n content = content.trim();\n // wrap code block in pre tag if needed\n if (codeTag.parentNode instanceof ShadowRoot) {\n const preTag = document.createElement('pre');\n this.shadowRoot.removeChild(codeTag);\n preTag.appendChild(codeTag);\n this.shadowRoot.appendChild(preTag);\n }\n\n }\n\n codeTag.className = `language-${this.languageName}`;\n codeTag.innerHTML = Prism.highlight(content, language);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template.js';\n\nconst T = Template('d-footnote', `\n\n\n\n
    \n \n
    \n
    \n\n\n \n\n\n`);\n\nexport class Footnote extends T(HTMLElement) {\n\n constructor() {\n super();\n\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver(this.notify);\n observer.observe(this, options);\n }\n\n notify() {\n const options = { detail: this, bubbles: true };\n const event = new CustomEvent('onFootnoteChanged', options);\n document.dispatchEvent(event);\n }\n\n connectedCallback() {\n // listen and notify about changes to slotted content\n // const slot = this.shadowRoot.querySelector('#slot');\n // console.warn(slot.textContent);\n // slot.addEventListener('slotchange', this.notify);\n this.hoverBox = this.root.querySelector('d-hover-box');\n window.customElements.whenDefined('d-hover-box').then(() => {\n this.hoverBox.listen(this);\n });\n // create numeric ID\n Footnote.currentFootnoteId += 1;\n const IdString = Footnote.currentFootnoteId.toString();\n this.root.host.id = 'd-footnote-' + IdString;\n\n // set up hidden hover box\n const id = 'dt-fn-hover-box-' + IdString;\n this.hoverBox.id = id\n\n // set up visible footnote marker\n const span = this.root.querySelector('#fn-');\n span.setAttribute('id', 'fn-' + IdString);\n span.setAttribute('data-hover-ref', id);\n span.textContent = IdString;\n }\n\n}\n\nFootnote.currentFootnoteId = 0;\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\nconst T = Template('d-footnote-list', `\n\n\n

    Footnotes

    \n
      \n`, false);\n\nexport class FootnoteList extends T(HTMLElement) {\n\n connectedCallback() {\n super.connectedCallback();\n\n this.list = this.root.querySelector('ol');\n // footnotes list is initially hidden\n this.root.style.display = 'none';\n // look through document and register existing footnotes\n // Store.subscribeTo('footnotes', (footnote) => {\n // this.renderFootnote(footnote);\n // });\n }\n\n // TODO: could optimize this to accept individual footnotes?\n set footnotes(footnotes) {\n this.list.innerHTML = '';\n if (footnotes.length) {\n // ensure footnote list is visible\n this.root.style.display = '';\n\n for (const footnote of footnotes) {\n // construct and append list item to show footnote\n const listItem = document.createElement('li');\n listItem.id = footnote.id + '-listing';\n listItem.innerHTML = footnote.innerHTML;\n\n const backlink = document.createElement('a');\n backlink.setAttribute('class', 'footnote-backlink');\n backlink.textContent = '[↩]';\n backlink.href = '#' + footnote.id;\n\n listItem.appendChild(backlink);\n this.list.appendChild(listItem);\n }\n } else {\n // ensure footnote list is invisible\n this.root.style.display = 'none';\n }\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template.js';\n\nconst T = Template('d-hover-box', `\n\n\n
      \n
      \n \n
      \n
      \n`);\n\nexport class HoverBox extends T(HTMLElement) {\n\n constructor() {\n super();\n }\n\n connectedCallback() {\n\n }\n\n listen(element) {\n // console.log(element)\n this.bindDivEvents(this);\n this.bindTriggerEvents(element);\n // this.style.display = \"block\";\n }\n\n bindDivEvents(element) {\n // For mice, same behavior as hovering on links\n element.addEventListener('mouseover', () => {\n if (!this.visible) this.showAtNode(element);\n this.stopTimeout();\n });\n element.addEventListener('mouseout', () => {\n this.extendTimeout(500);\n });\n // Don't trigger body touchstart event when touching within box\n element.addEventListener('touchstart', (event) => {\n event.stopPropagation();\n }, {passive: true});\n // Close box when touching outside box\n document.body.addEventListener('touchstart', () => {\n this.hide();\n }, {passive: true});\n }\n\n bindTriggerEvents(node) {\n node.addEventListener('mouseover', () => {\n if (!this.visible) {\n this.showAtNode(node);\n }\n this.stopTimeout();\n });\n\n node.addEventListener('mouseout', () => {\n this.extendTimeout(300);\n });\n\n node.addEventListener('touchstart', (event) => {\n if (this.visible) {\n this.hide();\n } else {\n this.showAtNode(node);\n }\n // Don't trigger body touchstart event when touching link\n event.stopPropagation();\n }, {passive: true});\n }\n\n show(position) {\n this.visible = true;\n this.style.display = 'block';\n // 10px extra offset from element\n this.style.top = Math.round(position[1] + 10) + 'px';\n }\n\n showAtNode(node) {\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop\n const bbox = node.getBoundingClientRect();\n this.show([node.offsetLeft + bbox.width, node.offsetTop + bbox.height]);\n }\n\n hide() {\n this.visible = false;\n this.style.display = 'none';\n this.stopTimeout();\n }\n\n stopTimeout() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n }\n\n extendTimeout(time) {\n this.stopTimeout();\n this.timeout = setTimeout(() => {\n this.hide();\n }, time);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport class Title extends HTMLElement {\n static get is() { return 'd-title'; }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\nconst T = Template('d-references', `\n\n`, false);\n\nexport class References extends T(HTMLElement) {\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport class TOC extends HTMLElement {\n\n static get is() { return 'd-toc'; }\n\n connectedCallback() {\n if (!this.getAttribute('prerendered')) {\n window.onload = () => {\n const article = document.querySelector('d-article');\n const headings = article.querySelectorAll('h2, h3');\n renderTOC(this, headings);\n };\n }\n }\n\n}\n\nexport function renderTOC(element, headings) {\n\n let ToC =`\n \n \n

      Table of contents

      \n
        `;\n\n for (const el of headings) {\n // should element be included in TOC?\n const isInTitle = el.parentElement.tagName == 'D-TITLE';\n const isException = el.getAttribute('no-toc');\n if (isInTitle || isException) continue;\n // create TOC entry\n const title = el.textContent;\n const link = '#' + el.getAttribute('id');\n\n let newLine = '
      • ' + '' + title + '' + '
      • ';\n if (el.tagName == 'H3') {\n newLine = '
          ' + newLine + '
        ';\n } else {\n newLine += '
        ';\n }\n ToC += newLine;\n\n }\n\n ToC += '
      ';\n element.innerHTML = ToC;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Figure\n//\n// d-figure provides a state-machine of visibility events:\n//\n// scroll out of view\n// +----------------+\n// *do work here* | |\n// +----------------+ +-+---------+ +-v---------+\n// | ready +----> onscreen | | offscreen |\n// +----------------+ +---------^-+ +---------+-+\n// | |\n// +----------------+\n// scroll into view\n//\n\nexport class Figure extends HTMLElement {\n\n static get is() { return 'd-figure'; }\n\n static get readyQueue() {\n if (!Figure._readyQueue) {\n Figure._readyQueue = [];\n }\n return Figure._readyQueue;\n }\n\n static addToReadyQueue(figure) {\n if (Figure.readyQueue.indexOf(figure) === -1) {\n Figure.readyQueue.push(figure);\n Figure.runReadyQueue();\n }\n }\n\n static runReadyQueue() {\n // console.log(\"Checking to run readyQueue, length: \" + Figure.readyQueue.length + \", scrolling: \" + Figure.isScrolling);\n // if (Figure.isScrolling) return;\n // console.log(\"Running ready Queue\");\n const figure = Figure.readyQueue\n .sort((a,b) => a._seenOnScreen - b._seenOnScreen )\n .filter((figure) => !figure._ready)\n .pop();\n if (figure) {\n figure.ready();\n requestAnimationFrame(Figure.runReadyQueue);\n }\n\n }\n\n constructor() {\n super();\n // debugger\n this._ready = false;\n this._onscreen = false;\n this._offscreen = true;\n }\n\n connectedCallback() {\n this.loadsWhileScrolling = this.hasAttribute('loadsWhileScrolling');\n Figure.marginObserver.observe(this);\n Figure.directObserver.observe(this);\n }\n\n disconnectedCallback() {\n Figure.marginObserver.unobserve(this);\n Figure.directObserver.unobserve(this);\n }\n\n // We use two separate observers:\n // One with an extra 1000px margin to warn if the viewpoint gets close,\n // And one for the actual on/off screen events\n\n static get marginObserver() {\n if (!Figure._marginObserver) {\n // if (!('IntersectionObserver' in window)) {\n // throw new Error('no interscetionobbserver!');\n // }\n const viewportHeight = window.innerHeight;\n const margin = Math.floor(2 * viewportHeight);\n const options = {rootMargin: margin + 'px 0px ' + margin + 'px 0px', threshold: 0.01};\n const callback = Figure.didObserveMarginIntersection;\n const observer = new IntersectionObserver(callback, options);\n Figure._marginObserver = observer;\n }\n return Figure._marginObserver;\n }\n\n static didObserveMarginIntersection(entries) {\n for (const entry of entries) {\n const figure = entry.target;\n if (entry.isIntersecting && !figure._ready) {\n Figure.addToReadyQueue(figure);\n }\n }\n }\n\n static get directObserver() {\n if (!Figure._directObserver) {\n Figure._directObserver = new IntersectionObserver(\n Figure.didObserveDirectIntersection, {\n rootMargin: '0px', threshold: [0, 1.0],\n }\n );\n }\n return Figure._directObserver;\n }\n\n static didObserveDirectIntersection(entries) {\n for (const entry of entries) {\n const figure = entry.target;\n if (entry.isIntersecting) {\n figure._seenOnScreen = new Date();\n // if (!figure._ready) { figure.ready(); }\n if (figure._offscreen) { figure.onscreen(); }\n } else {\n if (figure._onscreen) { figure.offscreen(); }\n }\n }\n }\n\n // Notify listeners that registered late, too:\n\n addEventListener(eventName, callback) {\n super.addEventListener(eventName, callback);\n // if we had already dispatched something while presumingly no one was listening, we do so again\n // debugger\n if (eventName === 'ready') {\n if (Figure.readyQueue.indexOf(this) !== -1) {\n this._ready = false;\n Figure.runReadyQueue();\n }\n }\n if (eventName === 'onscreen') {\n this.onscreen();\n }\n }\n\n // Custom Events\n\n ready() {\n // debugger\n this._ready = true;\n Figure.marginObserver.unobserve(this);\n const event = new CustomEvent('ready');\n this.dispatchEvent(event);\n }\n\n onscreen() {\n this._onscreen = true;\n this._offscreen = false;\n const event = new CustomEvent('onscreen');\n this.dispatchEvent(event);\n }\n\n offscreen() {\n this._onscreen = false;\n this._offscreen = true;\n const event = new CustomEvent('offscreen');\n this.dispatchEvent(event);\n }\n\n}\n\nif (typeof window !== 'undefined') {\n\n Figure.isScrolling = false;\n let timeout;\n const resetTimer = () => {\n Figure.isScrolling = true;\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n Figure.isScrolling = false;\n Figure.runReadyQueue();\n }, 500);\n };\n window.addEventListener('scroll', resetTimer, true);\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\n// This overlay is not secure.\n// It is only meant as a social deterrent.\n\nconst productionHostname = 'distill.pub';\nconst T = Template('d-interstitial', `\n\n\n
      \n
      \n

      This article is in review.

      \n

      Do not share this URL or the contents of this article. Thank you!

      \n \n

      Enter the password we shared with you as part of the review process to view the article.

      \n
      \n
      \n`);\n\nexport class Interstitial extends T(HTMLElement) {\n\n connectedCallback() {\n if (this.shouldRemoveSelf()) {\n this.parentElement.removeChild(this);\n } else {\n const passwordInput = this.root.querySelector('#interstitial-password-input');\n passwordInput.oninput = (event) => this.passwordChanged(event);\n }\n }\n\n passwordChanged(event) {\n const entered = event.target.value;\n if (entered === this.password) {\n console.log('Correct password entered.');\n this.parentElement.removeChild(this);\n if (typeof(Storage) !== 'undefined') {\n console.log('Saved that correct password was entered.');\n localStorage.setItem(this.localStorageIdentifier(), 'true');\n }\n }\n }\n\n shouldRemoveSelf() {\n // should never be visible in production\n if (window && window.location.hostname === productionHostname) {\n console.warn('Interstitial found on production, hiding it.');\n return true\n }\n // should only have to enter password once\n if (typeof(Storage) !== 'undefined') {\n if (localStorage.getItem(this.localStorageIdentifier()) === 'true') {\n console.log('Loaded that correct password was entered before; skipping interstitial.');\n return true;\n }\n }\n // otherwise, leave visible\n return false;\n }\n\n localStorageIdentifier() {\n const prefix = 'distill-drafts'\n const suffix = 'interstitial-password-correct';\n return prefix + (window ? window.location.pathname : '-') + suffix\n }\n\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\nimport { scaleLinear } from 'd3-scale';\nimport { range } from 'd3-array';\nimport { drag } from 'd3-drag';\nimport { select, event as currentEvent } from 'd3-selection';\n\nconst T = Template('d-slider', `\n\n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n`);\n\n// ARIA\n// If the slider has a visible label, it is referenced by aria-labelledby on the slider element. Otherwise, the slider element has a label provided by aria-label.\n// If the slider is vertically oriented, it has aria-orientation set to vertical. The default value of aria-orientation for a slider is horizontal.\n\nconst keyCodes = {\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36\n};\n\nexport class Slider extends T(HTMLElement) {\n\n\n connectedCallback() {\n this.connected = true;\n this.setAttribute('role', 'slider');\n // Makes the element tab-able.\n if (!this.hasAttribute('tabindex')) { this.setAttribute('tabindex', 0); }\n\n // Keeps track of keyboard vs. mouse interactions for focus rings\n this.mouseEvent = false;\n\n // Handles to shadow DOM elements\n this.knob = this.root.querySelector('.knob-container');\n this.background = this.root.querySelector('.background');\n this.trackFill = this.root.querySelector('.track-fill');\n this.track = this.root.querySelector('.track');\n\n // Default values for attributes\n this.min = this.min ? this.min : 0;\n this.max = this.max ? this.max : 100;\n this.scale = scaleLinear().domain([this.min, this.max]).range([0, 1]).clamp(true);\n\n this.origin = this.origin !== undefined ? this.origin : this.min;\n this.step = this.step ? this.step : 1;\n this.update(this.value ? this.value : 0);\n\n this.ticks = this.ticks ? this.ticks : false;\n this.renderTicks();\n\n this.drag = drag()\n .container(this.background)\n .on('start', () => {\n this.mouseEvent = true;\n this.background.classList.add('mousedown');\n this.changeValue = this.value;\n this.dragUpdate();\n })\n .on('drag', () => {\n this.dragUpdate();\n })\n .on('end', () => {\n this.mouseEvent = false;\n this.background.classList.remove('mousedown');\n this.dragUpdate();\n if (this.changeValue !== this.value) this.dispatchChange();\n this.changeValue = this.value;\n });\n this.drag(select(this.background));\n\n this.addEventListener('focusin', () => {\n if(!this.mouseEvent) {\n this.background.classList.add('focus');\n }\n });\n this.addEventListener('focusout', () => {\n this.background.classList.remove('focus');\n });\n this.addEventListener('keydown', this.onKeyDown);\n\n }\n\n static get observedAttributes() {return ['min', 'max', 'value', 'step', 'ticks', 'origin', 'tickValues', 'tickLabels']; }\n\n attributeChangedCallback(attr, oldValue, newValue) {\n if (isNaN(newValue) || newValue === undefined || newValue === null) return;\n if (attr == 'min') {\n this.min = +newValue;\n this.setAttribute('aria-valuemin', this.min);\n }\n if (attr == 'max') {\n this.max = +newValue;\n this.setAttribute('aria-valuemax', this.max);\n }\n if (attr == 'value') {\n this.update(+newValue);\n }\n if (attr == 'origin') {\n this.origin = +newValue;\n // this.update(this.value);\n }\n if (attr == 'step') {\n if (newValue > 0) {\n this.step = +newValue;\n }\n }\n if (attr == 'ticks') {\n this.ticks = (newValue === '' ? true : newValue);\n }\n }\n\n onKeyDown(event) {\n this.changeValue = this.value;\n let stopPropagation = false;\n switch (event.keyCode) {\n case keyCodes.left:\n case keyCodes.down:\n this.update(this.value - this.step);\n stopPropagation = true;\n break;\n case keyCodes.right:\n case keyCodes.up:\n this.update(this.value + this.step);\n stopPropagation = true;\n break;\n case keyCodes.pageUp:\n this.update(this.value + this.step * 10);\n stopPropagation = true;\n break;\n\n case keyCodes.pageDown:\n this.update(this.value + this.step * 10);\n stopPropagation = true;\n break;\n case keyCodes.home:\n this.update(this.min);\n stopPropagation = true;\n break;\n case keyCodes.end:\n this.update(this.max);\n stopPropagation = true;\n break;\n default:\n break;\n }\n if (stopPropagation) {\n this.background.classList.add('focus');\n event.preventDefault();\n event.stopPropagation();\n if (this.changeValue !== this.value) this.dispatchChange();\n }\n }\n\n validateValueRange(min, max, value) {\n return Math.max(Math.min(max, value), min);\n }\n\n quantizeValue(value, step) {\n return Math.round(value / step) * step;\n }\n\n dragUpdate() {\n const bbox = this.background.getBoundingClientRect();\n const x = currentEvent.x;\n const width = bbox.width;\n this.update(this.scale.invert(x / width));\n }\n\n update(value) {\n let v = value;\n if (this.step !== 'any') {\n v = this.quantizeValue(value, this.step);\n }\n v = this.validateValueRange(this.min, this.max, v);\n if (this.connected) {\n this.knob.style.left = this.scale(v) * 100 + '%';\n this.trackFill.style.width = this.scale(this.min + Math.abs(v - this.origin)) * 100 + '%';\n this.trackFill.style.left = this.scale(Math.min(v, this.origin)) * 100 + '%';\n }\n if (this.value !== v) {\n this.value = v;\n this.setAttribute('aria-valuenow', this.value);\n this.dispatchInput();\n }\n }\n\n // Dispatches only on a committed change (basically only on mouseup).\n dispatchChange() {\n const e = new Event('change');\n this.dispatchEvent(e, {});\n }\n\n // Dispatches on each value change.\n dispatchInput() {\n const e = new Event('input');\n this.dispatchEvent(e, {});\n }\n\n renderTicks() {\n const ticksContainer = this.root.querySelector('.ticks');\n if (this.ticks !== false) {\n let tickData = [];\n if (this.ticks > 0) {\n tickData = this.scale.ticks(this.ticks);\n } else if (this.step === 'any') {\n tickData = this.scale.ticks();\n } else {\n tickData = range(this.min, this.max + 1e-6, this.step);\n }\n tickData.forEach(d => {\n const tick = document.createElement('div');\n tick.classList.add('tick');\n tick.style.left = this.scale(d) * 100 + '%';\n ticksContainer.appendChild(tick);\n });\n } else {\n ticksContainer.style.display = 'none';\n }\n }\n}\n","import logo from '../assets/distill-logo.svg';\n\nexport const headerTemplate = `\n\n\n`;\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\nimport {headerTemplate} from './distill-header-template';\n\nconst T = Template('distill-header', headerTemplate, false);\n\nexport class DistillHeader extends T(HTMLElement) {\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { serializeFrontmatterToBibtex } from '../helpers/bibtex';\n\nconst styles = `\n\n`;\n\nexport function appendixTemplate(frontMatter) {\n let html = styles;\n\n if (typeof frontMatter.githubUrl !== 'undefined') {\n html += `\n

      Updates and Corrections

      \n

      `;\n if (frontMatter.githubCompareUpdatesUrl) {\n html += `View all changes to this article since it was first published.`;\n }\n html += `\n If you see mistakes or want to suggest changes, please create an issue on GitHub.

      \n `;\n }\n\n const journal = frontMatter.journal;\n if (typeof journal !== 'undefined' && journal.title === 'Distill') {\n html += `\n

      Reuse

      \n

      Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.

      \n `;\n }\n\n if (typeof frontMatter.publishedDate !== 'undefined') {\n html += `\n

      Citation

      \n

      For attribution in academic contexts, please cite this work as

      \n
      ${frontMatter.concatenatedAuthors}, \"${frontMatter.title}\", Distill, ${frontMatter.publishedYear}.
      \n

      BibTeX citation

      \n
      ${serializeFrontmatterToBibtex(frontMatter)}
      \n `;\n }\n\n return html;\n}\n\nexport class DistillAppendix extends HTMLElement {\n\n static get is() { return 'distill-appendix'; }\n\n set frontMatter(frontMatter) {\n this.innerHTML = appendixTemplate(frontMatter);\n }\n\n}\n","import logo from '../assets/distill-logo.svg';\n\nexport const footerTemplate = `\n\n\n\n\n`;\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Template } from '../mixins/template';\n\nimport {footerTemplate} from './distill-footer-template';\n\nconst T = Template('distill-footer', footerTemplate);\n\nexport class DistillFooter extends T(HTMLElement) {\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Controller } from './controller';\nimport { domContentLoaded } from './helpers/domContentLoaded.js';\n\n/* Transforms */\nimport { makeStyleTag } from './styles/styles';\nimport { Polyfills } from './helpers/polyfills';\n\n/* Components */\nimport { Abstract } from './components/d-abstract';\nimport { Appendix } from './components/d-appendix';\nimport { Article } from './components/d-article';\nimport { Bibliography } from './components/d-bibliography';\nimport { Byline } from './components/d-byline';\nimport { Cite } from './components/d-cite';\nimport { CitationList } from './components/d-citation-list';\nimport { Code } from './components/d-code';\nimport { Footnote } from './components/d-footnote';\nimport { FootnoteList } from './components/d-footnote-list';\nimport { FrontMatter } from './components/d-front-matter';\nimport { HoverBox } from './components/d-hover-box';\nimport { Title } from './components/d-title';\nimport { DMath } from './components/d-math';\nimport { References } from './components/d-references';\nimport { TOC } from './components/d-toc';\nimport { Figure } from './components/d-figure';\nimport { Interstitial } from './components/d-interstitial';\nimport { Slider } from './ui/d-slider';\n\n/* Distill website specific components */\nimport { DistillHeader } from './distill-components/distill-header';\nimport { DistillAppendix } from './distill-components/distill-appendix';\nimport { DistillFooter } from './distill-components/distill-footer';\n\nlet templateIsLoading = false;\nlet runlevel = 0;\nconst initialize = function() {\n if (window.distill.runlevel < 1) {\n throw new Error(\"Insufficient Runlevel for Distill Template!\");\n }\n\n /* 1. Flag that we're being loaded */\n if (\"distill\" in window && window.distill.templateIsLoading) {\n throw new Error(\n \"Runlevel 1: Distill Template is getting loaded more than once, aborting!\"\n );\n } else {\n window.distill.templateIsLoading = true;\n console.debug(\"Runlevel 1: Distill Template has started loading.\");\n }\n\n /* 2. Add styles if they weren't added during prerendering */\n makeStyleTag(document);\n console.debug(\"Runlevel 1: Static Distill styles have been added.\");\n console.debug(\"Runlevel 1->2.\");\n window.distill.runlevel += 1;\n\n /* 3. Register Controller listener functions */\n /* Needs to happen before components to their connected callbacks have a controller to talk to. */\n for (const [functionName, callback] of Object.entries(Controller.listeners)) {\n if (typeof callback === \"function\") {\n document.addEventListener(functionName, callback);\n } else {\n console.error(\"Runlevel 2: Controller listeners need to be functions!\");\n }\n }\n console.debug(\"Runlevel 2: We can now listen to controller events.\");\n console.debug(\"Runlevel 2->3.\");\n window.distill.runlevel += 1;\n\n /* 4. Register components */\n const components = [\n Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code,\n Footnote, FootnoteList, FrontMatter, HoverBox, Title, DMath, References, TOC, Figure,\n Slider, Interstitial\n ];\n\n const distillComponents = [DistillHeader, DistillAppendix, DistillFooter];\n\n if (window.distill.runlevel < 2) {\n throw new Error(\"Insufficient Runlevel for adding custom elements!\");\n }\n const allComponents = components.concat(distillComponents);\n for (const component of allComponents) {\n console.debug(\"Runlevel 2: Registering custom element: \" + component.is);\n customElements.define(component.is, component);\n }\n\n console.debug(\n \"Runlevel 3: Distill Template finished registering custom elements.\"\n );\n console.debug(\"Runlevel 3->4.\");\n window.distill.runlevel += 1;\n\n // If template was added after DOMContentLoaded we may have missed that event.\n // Controller will check for that case, so trigger the event explicitly:\n if (domContentLoaded()) {\n Controller.listeners.DOMContentLoaded();\n }\n\n console.debug(\"Runlevel 4: Distill Template initialisation complete.\");\n window.distill.templateIsLoading = false;\n window.distill.templateHasLoaded = true;\n};\n\nwindow.distill = { runlevel, initialize, templateIsLoading };\n\n/* 0. Check browser feature support; synchronously polyfill if needed */\nif (Polyfills.browserSupportsAllFeatures()) {\n console.debug(\"Runlevel 0: No need for polyfills.\");\n console.debug(\"Runlevel 0->1.\");\n window.distill.runlevel += 1;\n window.distill.initialize();\n} else {\n console.debug(\"Runlevel 0: Distill Template is loading polyfills.\");\n Polyfills.load(window.distill.initialize);\n}\n"],"names":["style","FrontMatter","T","styles","global","Prism","rgb","colorRgb","value","number","constant","bisect","interpolate","interpolateValue","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","ascending","parseTypenames","scaleLinear","currentEvent"],"mappings":"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AM,CAAC;EAC5C,KAAK;EACL,GAAG;EACH;;;;ECzUO,MAAM,cAAc,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,IAAI,CAAC;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;EC9ED;AAiBA;EACA,MAAM7B,GAAC,GAAG,QAAQ,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC5D;EACO,MAAM,aAAa,SAASA,GAAC,CAAC,WAAW,CAAC,CAAC;AAClD;EACA;;ECtBA;AAeA;EACA,MAAMC,QAAM,GAAG,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF;EACO,SAAS,gBAAgB,CAAC,WAAW,EAAE;EAC9C,EAAE,IAAI,IAAI,GAAGA,QAAM,CAAC;AACpB;EACA,EAAE,IAAI,OAAO,WAAW,CAAC,SAAS,KAAK,WAAW,EAAE;EACpD,IAAI,IAAI,IAAI,CAAC;AACb;AACA,OAAO,CAAC,CAAC;EACT,IAAI,IAAI,WAAW,CAAC,uBAAuB,EAAE;EAC7C,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,uBAAuB,CAAC,oEAAoE,CAAC,CAAC;EACpI,KAAK;EACL,IAAI,IAAI,IAAI,CAAC;AACb,oEAAoE,EAAE,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC;AAC5G,IAAI,CAAC,CAAC;EACN,GAAG;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"} \ No newline at end of file diff --git a/assets/js/distillpub/transforms.v2.js b/assets/js/distillpub/transforms.v2.js new file mode 100644 index 0000000..2d12d32 --- /dev/null +++ b/assets/js/distillpub/transforms.v2.js @@ -0,0 +1,13185 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('fs')) : + typeof define === 'function' && define.amd ? define(['exports', 'fs'], factory) : + (global = global || self, factory(global.dl = {}, global.fs)); +}(this, (function (exports, fs) { 'use strict'; + + fs = fs && Object.prototype.hasOwnProperty.call(fs, 'default') ? fs['default'] : fs; + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + const months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.']; + const zeroPad = n => n < 10 ? '0' + n : n; + + const RFC = function(date) { + const day = days[date.getDay()].substring(0, 3); + const paddedDate = zeroPad(date.getDate()); + const month = months[date.getMonth()].substring(0,3); + const year = date.getFullYear().toString(); + const hours = date.getUTCHours().toString(); + const minutes = date.getUTCMinutes().toString(); + const seconds = date.getUTCSeconds().toString(); + return `${day}, ${paddedDate} ${month} ${year} ${hours}:${minutes}:${seconds} Z`; + }; + + const objectFromMap = function(map) { + const object = Array.from(map).reduce((object, [key, value]) => ( + Object.assign(object, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't. + ), {}); + return object; + }; + + const mapFromObject = function(object) { + const map = new Map(); + for (var property in object) { + if (object.hasOwnProperty(property)) { + map.set(property, object[property]); + } + } + return map; + }; + + class Author { + + // constructor(name='', personalURL='', affiliation='', affiliationURL='') { + // this.name = name; // 'Chris Olah' + // this.personalURL = personalURL; // 'https://colah.github.io' + // this.affiliation = affiliation; // 'Google Brain' + // this.affiliationURL = affiliationURL; // 'https://g.co/brain' + // } + + constructor(object) { + this.name = object.author; // 'Chris Olah' + this.personalURL = object.authorURL; // 'https://colah.github.io' + this.affiliation = object.affiliation; // 'Google Brain' + this.affiliationURL = object.affiliationURL; // 'https://g.co/brain' + this.affiliations = object.affiliations || []; // new-style affiliations + } + + // 'Chris' + get firstName() { + const names = this.name.split(' '); + return names.slice(0, names.length - 1).join(' '); + } + + // 'Olah' + get lastName() { + const names = this.name.split(' '); + return names[names.length -1]; + } + } + + function mergeFromYMLFrontmatter(target, source) { + target.title = source.title; + if (source.published) { + if (source.published instanceof Date) { + target.publishedDate = source.published; + } else if (source.published.constructor === String) { + target.publishedDate = new Date(source.published); + } + } + if (source.publishedDate) { + if (source.publishedDate instanceof Date) { + target.publishedDate = source.publishedDate; + } else if (source.publishedDate.constructor === String) { + target.publishedDate = new Date(source.publishedDate); + } else { + console.error('Don\'t know what to do with published date: ' + source.publishedDate); + } + } + target.description = source.description; + target.authors = source.authors.map( (authorObject) => new Author(authorObject)); + target.katex = source.katex; + target.password = source.password; + if (source.doi) { + target.doi = source.doi; + } + } + + class FrontMatter { + constructor() { + this.title = 'unnamed article'; // 'Attention and Augmented Recurrent Neural Networks' + this.description = ''; // 'A visual overview of neural attention...' + this.authors = []; // Array of Author(s) + + this.bibliography = new Map(); + this.bibliographyParsed = false; + // { + // 'gregor2015draw': { + // 'title': 'DRAW: A recurrent neural network for image generation', + // 'author': 'Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan', + // 'journal': 'arXiv preprint arXiv:1502.04623', + // 'year': '2015', + // 'url': 'https://arxiv.org/pdf/1502.04623.pdf', + // 'type': 'article' + // }, + // } + + // Citation keys should be listed in the order that they are appear in the document. + // Each key refers to a key in the bibliography dictionary. + this.citations = []; // [ 'gregor2015draw', 'mercier2011humans' ] + this.citationsCollected = false; + + // + // Assigned from posts.csv + // + + // publishedDate: 2016-09-08T07:00:00.000Z, + // tags: [ 'rnn' ], + // distillPath: '2016/augmented-rnns', + // githubPath: 'distillpub/post--augmented-rnns', + // doiSuffix: 1, + + // + // Assigned from journal + // + this.journal = {}; + // journal: { + // 'title': 'Distill', + // 'full_title': 'Distill', + // 'abbrev_title': 'Distill', + // 'url': 'http://distill.pub', + // 'doi': '10.23915/distill', + // 'publisherName': 'Distill Working Group', + // 'publisherEmail': 'admin@distill.pub', + // 'issn': '2476-0757', + // 'editors': [...], + // 'committee': [...] + // } + // volume: 1, + // issue: 9, + + this.katex = {}; + + // + // Assigned from publishing process + // + + // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193', + // updatedDate: 2017-03-21T07:13:16.000Z, + // doi: '10.23915/distill.00001', + this.doi = undefined; + this.publishedDate = undefined; + } + + // Example: + // title: Demo Title Attention and Augmented Recurrent Neural Networks + // published: Jan 10, 2017 + // authors: + // - Chris Olah: + // - Shan Carter: http://shancarter.com + // affiliations: + // - Google Brain: + // - Google Brain: http://g.co/brain + + // + // Computed Properties + // + + // 'http://distill.pub/2016/augmented-rnns', + set url(value) { + this._url = value; + } + get url() { + if (this._url) { + return this._url; + } else if (this.distillPath && this.journal.url) { + return this.journal.url + '/' + this.distillPath; + } else if (this.journal.url) { + return this.journal.url; + } + } + + // 'https://github.com/distillpub/post--augmented-rnns', + get githubUrl() { + if (this.githubPath) { + return 'https://github.com/' + this.githubPath; + } else { + return undefined; + } + } + + // TODO resolve differences in naming of URL/Url/url. + // 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg', + set previewURL(value) { + this._previewURL = value; + } + get previewURL() { + return this._previewURL ? this._previewURL : this.url + '/thumbnail.jpg'; + } + + // 'Thu, 08 Sep 2016 00:00:00 -0700', + get publishedDateRFC() { + return RFC(this.publishedDate); + } + + // 'Thu, 08 Sep 2016 00:00:00 -0700', + get updatedDateRFC() { + return RFC(this.updatedDate); + } + + // 2016, + get publishedYear() { + return this.publishedDate.getFullYear(); + } + + // 'Sept', + get publishedMonth() { + return months[this.publishedDate.getMonth()]; + } + + // 8, + get publishedDay() { + return this.publishedDate.getDate(); + } + + // '09', + get publishedMonthPadded() { + return zeroPad(this.publishedDate.getMonth() + 1); + } + + // '08', + get publishedDayPadded() { + return zeroPad(this.publishedDate.getDate()); + } + + get publishedISODateOnly() { + return this.publishedDate.toISOString().split('T')[0]; + } + + get volume() { + const volume = this.publishedYear - 2015; + if (volume < 1) { + throw new Error('Invalid publish date detected during computing volume'); + } + return volume; + } + + get issue() { + return this.publishedDate.getMonth() + 1; + } + + // 'Olah & Carter', + get concatenatedAuthors() { + if (this.authors.length > 2) { + return this.authors[0].lastName + ', et al.'; + } else if (this.authors.length === 2) { + return this.authors[0].lastName + ' & ' + this.authors[1].lastName; + } else if (this.authors.length === 1) { + return this.authors[0].lastName; + } + } + + // 'Olah, Chris and Carter, Shan', + get bibtexAuthors() { + return this.authors.map(author => { + return author.lastName + ', ' + author.firstName; + }).join(' and '); + } + + // 'olah2016attention' + get slug() { + let slug = ''; + if (this.authors.length) { + slug += this.authors[0].lastName.toLowerCase(); + slug += this.publishedYear; + slug += this.title.split(' ')[0].toLowerCase(); + } + return slug || 'Untitled'; + } + + get bibliographyEntries() { + return new Map(this.citations.map( citationKey => { + const entry = this.bibliography.get(citationKey); + return [citationKey, entry]; + })); + } + + set bibliography(bibliography) { + if (bibliography instanceof Map) { + this._bibliography = bibliography; + } else if (typeof bibliography === 'object') { + this._bibliography = mapFromObject(bibliography); + } + } + + get bibliography() { + return this._bibliography; + } + + static fromObject(source) { + const frontMatter = new FrontMatter(); + Object.assign(frontMatter, source); + return frontMatter; + } + + assignToObject(target) { + Object.assign(target, this); + target.bibliography = objectFromMap(this.bibliographyEntries); + target.url = this.url; + target.doi = this.doi; + target.githubUrl = this.githubUrl; + target.previewURL = this.previewURL; + if (this.publishedDate) { + target.volume = this.volume; + target.issue = this.issue; + target.publishedDateRFC = this.publishedDateRFC; + target.publishedYear = this.publishedYear; + target.publishedMonth = this.publishedMonth; + target.publishedDay = this.publishedDay; + target.publishedMonthPadded = this.publishedMonthPadded; + target.publishedDayPadded = this.publishedDayPadded; + } + if (this.updatedDate) { + target.updatedDateRFC = this.updatedDateRFC; + } + target.concatenatedAuthors = this.concatenatedAuthors; + target.bibtexAuthors = this.bibtexAuthors; + target.slug = this.slug; + } + + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + function _moveLegacyAffiliationFormatIntoArray(frontMatter) { + // authors used to have propoerties "affiliation" and "affiliationURL". + // We now encourage using an array for affiliations containing objects with + // properties "name" and "url". + for (let author of frontMatter.authors) { + const hasOldStyle = Boolean(author.affiliation); + const hasNewStyle = Boolean(author.affiliations); + if (!hasOldStyle) continue; + if (hasNewStyle) { + console.warn(`Author ${author.author} has both old-style ("affiliation" & "affiliationURL") and new style ("affiliations") affiliation information!`); + } else { + let newAffiliation = { + "name": author.affiliation + }; + if (author.affiliationURL) newAffiliation.url = author.affiliationURL; + author.affiliations = [newAffiliation]; + } + } + return frontMatter + } + + function parseFrontmatter(element) { + const scriptTag = element.firstElementChild; + if (scriptTag) { + const type = scriptTag.getAttribute('type'); + if (type.split('/')[1] == 'json') { + const content = scriptTag.textContent; + const parsed = JSON.parse(content); + return _moveLegacyAffiliationFormatIntoArray(parsed); + } else { + console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.'); + } + } else { + console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.'); + } + return {}; + } + + // Copyright 2018 The Distill Template Authors + + function ExtractFrontmatter(dom, data) { + const frontMatterTag = dom.querySelector('d-front-matter'); + if (!frontMatterTag) { + console.warn('No front matter tag found!'); + return; + } + const extractedData = parseFrontmatter(frontMatterTag); + mergeFromYMLFrontmatter(data, extractedData); + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); + } + + function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var bibtexParse = createCommonjsModule(function (module, exports) { + /* start bibtexParse 0.0.22 */ + + //Original work by Henrik Muehe (c) 2010 + // + //CommonJS port by Mikola Lysenko 2013 + // + //Port to Browser lib by ORCID / RCPETERS + // + //Issues: + //no comment handling within strings + //no string concatenation + //no variable values yet + //Grammar implemented here: + //bibtex -> (string | preamble | comment | entry)*; + //string -> '@STRING' '{' key_equals_value '}'; + //preamble -> '@PREAMBLE' '{' value '}'; + //comment -> '@COMMENT' '{' value '}'; + //entry -> '@' key '{' key ',' key_value_list '}'; + //key_value_list -> key_equals_value (',' key_equals_value)*; + //key_equals_value -> key '=' value; + //value -> value_quotes | value_braces | key; + //value_quotes -> '"' .*? '"'; // not quite + //value_braces -> '{' .*? '"'; // not quite + (function(exports) { + + function BibtexParser() { + + this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; + this.notKey = [',','{','}',' ','=']; + this.pos = 0; + this.input = ""; + this.entries = new Array(); + + this.currentEntry = ""; + + this.setInput = function(t) { + this.input = t; + }; + + this.getEntries = function() { + return this.entries; + }; + + this.isWhitespace = function(s) { + return (s == ' ' || s == '\r' || s == '\t' || s == '\n'); + }; + + this.match = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + canCommentOut = true; + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + this.pos += s.length; + } else { + throw "Token mismatch, expected " + s + ", found " + + this.input.substring(this.pos); + } this.skipWhitespace(canCommentOut); + }; + + this.tryMatch = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + canCommentOut = true; + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + return true; + } else { + return false; + } }; + + /* when search for a match all text can be ignored, not just white space */ + this.matchAt = function() { + while (this.input.length > this.pos && this.input[this.pos] != '@') { + this.pos++; + } + if (this.input[this.pos] == '@') { + return true; + } return false; + }; + + this.skipWhitespace = function(canCommentOut) { + while (this.isWhitespace(this.input[this.pos])) { + this.pos++; + } if (this.input[this.pos] == "%" && canCommentOut == true) { + while (this.input[this.pos] != "\n") { + this.pos++; + } this.skipWhitespace(canCommentOut); + } }; + + this.value_braces = function() { + var bracecount = 0; + this.match("{", false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this.input[this.pos] == '}') { + if (bracecount > 0) { + bracecount--; + } else { + var end = this.pos; + this.match("}", false); + return this.input.substring(start, end); + } } else if (this.input[this.pos] == '{') { + bracecount++; + } else if (this.pos >= this.input.length - 1) { + throw "Unterminated value"; + } } if (this.input[this.pos] == '\\' && escaped == false) + escaped = true; + else + escaped = false; + this.pos++; + } }; + + this.value_comment = function() { + var str = ''; + var brcktCnt = 0; + while (!(this.tryMatch("}", false) && brcktCnt == 0)) { + str = str + this.input[this.pos]; + if (this.input[this.pos] == '{') + brcktCnt++; + if (this.input[this.pos] == '}') + brcktCnt--; + if (this.pos >= this.input.length - 1) { + throw "Unterminated value:" + this.input.substring(start); + } this.pos++; + } return str; + }; + + this.value_quotes = function() { + this.match('"', false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this.input[this.pos] == '"') { + var end = this.pos; + this.match('"', false); + return this.input.substring(start, end); + } else if (this.pos >= this.input.length - 1) { + throw "Unterminated value:" + this.input.substring(start); + } } + if (this.input[this.pos] == '\\' && escaped == false) + escaped = true; + else + escaped = false; + this.pos++; + } }; + + this.single_value = function() { + var start = this.pos; + if (this.tryMatch("{")) { + return this.value_braces(); + } else if (this.tryMatch('"')) { + return this.value_quotes(); + } else { + var k = this.key(); + if (k.match("^[0-9]+$")) + return k; + else if (this.months.indexOf(k.toLowerCase()) >= 0) + return k.toLowerCase(); + else + throw "Value expected:" + this.input.substring(start) + ' for key: ' + k; + + } }; + + this.value = function() { + var values = []; + values.push(this.single_value()); + while (this.tryMatch("#")) { + this.match("#"); + values.push(this.single_value()); + } return values.join(""); + }; + + this.key = function() { + var start = this.pos; + while (true) { + if (this.pos >= this.input.length) { + throw "Runaway key"; + } // а-яА-Я is Cyrillic + //console.log(this.input[this.pos]); + if (this.notKey.indexOf(this.input[this.pos]) >= 0) { + return this.input.substring(start, this.pos); + } else { + this.pos++; + + } } }; + + this.key_equals_value = function() { + var key = this.key(); + if (this.tryMatch("=")) { + this.match("="); + var val = this.value(); + return [ key, val ]; + } else { + throw "... = value expected, equals sign missing:" + + this.input.substring(this.pos); + } }; + + this.key_value_list = function() { + var kv = this.key_equals_value(); + this.currentEntry['entryTags'] = {}; + this.currentEntry['entryTags'][kv[0]] = kv[1]; + while (this.tryMatch(",")) { + this.match(","); + // fixes problems with commas at the end of a list + if (this.tryMatch("}")) { + break; + } + kv = this.key_equals_value(); + this.currentEntry['entryTags'][kv[0]] = kv[1]; + } }; + + this.entry_body = function(d) { + this.currentEntry = {}; + this.currentEntry['citationKey'] = this.key(); + this.currentEntry['entryType'] = d.substring(1); + this.match(","); + this.key_value_list(); + this.entries.push(this.currentEntry); + }; + + this.directive = function() { + this.match("@"); + return "@" + this.key(); + }; + + this.preamble = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'PREAMBLE'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.comment = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'COMMENT'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.entry = function(d) { + this.entry_body(d); + }; + + this.bibtex = function() { + while (this.matchAt()) { + var d = this.directive(); + this.match("{"); + if (d == "@STRING") { + this.string(); + } else if (d == "@PREAMBLE") { + this.preamble(); + } else if (d == "@COMMENT") { + this.comment(); + } else { + this.entry(d); + } + this.match("}"); + } }; + } + exports.toJSON = function(bibtex) { + var b = new BibtexParser(); + b.setInput(bibtex); + b.bibtex(); + return b.entries; + }; + + /* added during hackathon don't hate on me */ + exports.toBibtex = function(json) { + var out = ''; + for ( var i in json) { + out += "@" + json[i].entryType; + out += '{'; + if (json[i].citationKey) + out += json[i].citationKey + ', '; + if (json[i].entry) + out += json[i].entry ; + if (json[i].entryTags) { + var tags = ''; + for (var jdx in json[i].entryTags) { + if (tags.length != 0) + tags += ', '; + tags += jdx + '= {' + json[i].entryTags[jdx] + '}'; + } + out += tags; + } + out += '}\n\n'; + } + return out; + + }; + + })( exports); + + /* end bibtexParse */ + }); + + // Copyright 2018 The Distill Template Authors + + function normalizeTag(string) { + return string + .replace(/[\t\n ]+/g, ' ') + .replace(/{\\["^`.'acu~Hvs]( )?([a-zA-Z])}/g, (full, x, char) => char) + .replace(/{\\([a-zA-Z])}/g, (full, char) => char); + } + + function parseBibtex(bibtex) { + const bibliography = new Map(); + const parsedEntries = bibtexParse.toJSON(bibtex); + for (const entry of parsedEntries) { + // normalize tags; note entryTags is an object, not Map + for (const [key, value] of Object.entries(entry.entryTags)) { + entry.entryTags[key.toLowerCase()] = normalizeTag(value); + } + entry.entryTags.type = entry.entryType; + // add to bibliography + bibliography.set(entry.citationKey, entry.entryTags); + } + return bibliography; + } + + function serializeFrontmatterToBibtex(frontMatter) { + return `@article{${frontMatter.slug}, + author = {${frontMatter.bibtexAuthors}}, + title = {${frontMatter.title}}, + journal = {${frontMatter.journal.title}}, + year = {${frontMatter.publishedYear}}, + note = {${frontMatter.url}}, + doi = {${frontMatter.doi}} +}`; + } + + // Copyright 2018 The Distill Template Authors + + function parseBibliography(element) { + const scriptTag = element.firstElementChild; + if (scriptTag && scriptTag.tagName === 'SCRIPT') { + if (scriptTag.type == 'text/bibtex') { + const bibtex = element.firstElementChild.textContent; + return parseBibtex(bibtex); + } else if (scriptTag.type == 'text/json') { + return new Map(JSON.parse(scriptTag.textContent)); + } else { + console.warn('Unsupported bibliography script tag type: ' + scriptTag.type); + } + } else { + console.warn('Bibliography did not have any script tag.'); + } + } + + // Copyright 2018 The Distill Template Authors + + function ExtractBibliography(dom, data) { + const bibliographyTag = dom.querySelector('d-bibliography'); + if (!bibliographyTag) { + console.warn('No bibliography tag found!'); + return; + } + + const src = bibliographyTag.getAttribute('src'); + if (src) { + const path = data.inputDirectory + '/' + src; + const text = fs.readFileSync(path, 'utf-8'); + const bibliography = parseBibtex(text); + const scriptTag = dom.createElement('script'); + scriptTag.type = 'text/json'; + scriptTag.textContent = JSON.stringify([...bibliography]); + bibliographyTag.appendChild(scriptTag); + bibliographyTag.removeAttribute('src'); + } + + data.bibliography = parseBibliography(bibliographyTag); + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + function collect_citations(dom = document) { + const citations = new Set(); + const citeTags = dom.querySelectorAll("d-cite"); + for (const tag of citeTags) { + const keyString = tag.getAttribute("key") || tag.getAttribute("bibtex-key"); + const keys = keyString.split(",").map(k => k.trim()); + for (const key of keys) { + citations.add(key); + } + } + return [...citations]; + } + + function author_string(ent, template, sep, finalSep) { + if (ent.author == null) { + return ""; + } + var names = ent.author.split(" and "); + let name_strings = names.map(name => { + name = name.trim(); + if (name.indexOf(",") != -1) { + var last = name.split(",")[0].trim(); + var firsts = name.split(",")[1]; + } else if (name.indexOf(" ") != -1) { + var last = name + .split(" ") + .slice(-1)[0] + .trim(); + var firsts = name + .split(" ") + .slice(0, -1) + .join(" "); + } else { + var last = name.trim(); + } + var initials = ""; + if (firsts != undefined) { + initials = firsts + .trim() + .split(" ") + .map(s => s.trim()[0]); + initials = initials.join(".") + "."; + } + return template + .replace("${F}", firsts) + .replace("${L}", last) + .replace("${I}", initials) + .trim(); // in case one of first or last was empty + }); + if (names.length > 1) { + var str = name_strings.slice(0, names.length - 1).join(sep); + str += (finalSep || sep) + name_strings[names.length - 1]; + return str; + } else { + return name_strings[0]; + } + } + + function venue_string(ent) { + var cite = ent.journal || ent.booktitle || ""; + if ("volume" in ent) { + var issue = ent.issue || ent.number; + issue = issue != undefined ? "(" + issue + ")" : ""; + cite += ", Vol " + ent.volume + issue; + } + if ("pages" in ent) { + cite += ", pp. " + ent.pages; + } + if (cite != "") cite += ". "; + if ("publisher" in ent) { + cite += ent.publisher; + if (cite[cite.length - 1] != ".") cite += "."; + } + return cite; + } + + function link_string(ent) { + if ("url" in ent) { + var url = ent.url; + var arxiv_match = /arxiv\.org\/abs\/([0-9\.]*)/.exec(url); + if (arxiv_match != null) { + url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`; + } + + if (url.slice(-4) == ".pdf") { + var label = "PDF"; + } else if (url.slice(-5) == ".html") { + var label = "HTML"; + } + return `  [${label || "link"}]`; + } /* else if ("doi" in ent){ + return `  [DOI]`; + }*/ else { + return ""; + } + } + function doi_string(ent, new_line) { + if ("doi" in ent) { + return `${new_line ? "
      " : ""} DOI: ${ent.doi}`; + } else { + return ""; + } + } + + function title_string(ent) { + return '' + ent.title + " "; + } + + function bibliography_cite(ent, fancy) { + if (ent) { + var cite = title_string(ent); + cite += link_string(ent) + "
      "; + if (ent.author) { + cite += author_string(ent, "${L}, ${I}", ", ", " and "); + if (ent.year || ent.date) { + cite += ", "; + } + } + if (ent.year || ent.date) { + cite += (ent.year || ent.date) + ". "; + } else { + cite += ". "; + } + cite += venue_string(ent); + cite += doi_string(ent); + return cite; + /*var cite = author_string(ent, "${L}, ${I}", ", ", " and "); + if (ent.year || ent.date){ + cite += ", " + (ent.year || ent.date) + ". " + } else { + cite += ". " + } + cite += "" + ent.title + ". "; + cite += venue_string(ent); + cite += doi_string(ent); + cite += link_string(ent); + return cite*/ + } else { + return "?"; + } + } + + // Copyright 2018 The Distill Template Authors + + function ExtractCitations(dom, data) { + const citations = new Set(data.citations); + const newCitations = collect_citations(dom); + for (const citation of newCitations) { + citations.add(citation); + } + data.citations = Array.from(citations); + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + function HTML(dom) { + + const head = dom.querySelector('head'); + + // set language to 'en' + if (!dom.querySelector('html').getAttribute('lang')) { + dom.querySelector('html').setAttribute('lang', 'en'); + } + + // set charset to 'utf-8' + if (!dom.querySelector('meta[charset]')) { + const meta = dom.createElement('meta'); + meta.setAttribute('charset', 'utf-8'); + head.appendChild(meta); + } + + // set viewport + if (!dom.querySelector('meta[name=viewport]')) { + const meta = dom.createElement('meta'); + meta.setAttribute('name', 'viewport'); + meta.setAttribute('content', 'width=device-width, initial-scale=1'); + head.appendChild(meta); + } + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + // import style from '../styles/d-byline.css'; + + function bylineTemplate(frontMatter) { + return ` + +`; + } + + // Copyright 2018 The Distill Template Authors + + function Byline(dom, data) { + const byline = dom.querySelector('d-byline'); + if (byline) { + byline.innerHTML = bylineTemplate(data); + } + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + // no appendix -> add appendix + // title in front, no h1 -> add it + // no title in front, h1 -> read and put into frontMatter + // footnote -> footnote list + // break up bib + // if citation, no bib-list -> add citation-list + + // if authors, no byline -> add byline + + function OptionalComponents(dom, data) { + const body = dom.body; + const article = body.querySelector('d-article'); + + // If we don't have an article tag, something weird is going on—giving up. + if (!article) { + console.warn('No d-article tag found; skipping adding optional components!'); + return; + } + + let byline = dom.querySelector('d-byline'); + if (!byline) { + if (data.authors) { + byline = dom.createElement('d-byline'); + body.insertBefore(byline, article); + } else { + console.warn('No authors found in front matter; please add them before submission!'); + } + } + + let title = dom.querySelector('d-title'); + if (!title) { + title = dom.createElement('d-title'); + body.insertBefore(title, byline); + } + + let h1 = title.querySelector('h1'); + if (!h1) { + h1 = dom.createElement('h1'); + h1.textContent = data.title; + title.insertBefore(h1, title.firstChild); + } + + const hasPassword = typeof data.password !== 'undefined'; + let interstitial = body.querySelector('d-interstitial'); + if (hasPassword && !interstitial) { + const inBrowser = typeof window !== 'undefined'; + const onLocalhost = inBrowser && window.location.hostname.includes('localhost'); + if (!inBrowser || !onLocalhost) { + interstitial = dom.createElement('d-interstitial'); + interstitial.password = data.password; + body.insertBefore(interstitial, body.firstChild); + } + } else if (!hasPassword && interstitial) { + interstitial.parentElement.removeChild(this); + } + + let appendix = dom.querySelector('d-appendix'); + if (!appendix) { + appendix = dom.createElement('d-appendix'); + dom.body.appendChild(appendix); + } + + let footnoteList = dom.querySelector('d-footnote-list'); + if (!footnoteList) { + footnoteList = dom.createElement('d-footnote-list'); + appendix.appendChild(footnoteList); + } + + let citationList = dom.querySelector('d-citation-list'); + if (!citationList) { + citationList = dom.createElement('d-citation-list'); + appendix.appendChild(citationList); + } + + } + + var katex$1 = createCommonjsModule(function (module, exports) { + (function(f){{module.exports=f();}})(function(){return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof commonjsRequire=="function"&&commonjsRequire;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r);}return n[o].exports}var i=typeof commonjsRequire=="function"&&commonjsRequire;for(var o=0;o= 0; --i) { + tok = expansion[i]; + if (tok.text === "#") { + if (i === 0) { + throw new _ParseError2.default("Incomplete placeholder at end of macro body", tok); + } + tok = expansion[--i]; // next token on stack + if (tok.text === "#") { + // ## → # + expansion.splice(i + 1, 1); // drop first # + } else if (/^[1-9]$/.test(tok.text)) { + // expansion.splice(i, 2, arg[0], arg[1], …) + // to replace placeholder with the indicated argument. + // TODO: use spread once we move to ES2015 + expansion.splice.apply(expansion, [i, 2].concat(args[tok.text - 1])); + } else { + throw new _ParseError2.default("Not a valid argument number", tok); + } + } + } + } + this.stack = this.stack.concat(expansion); + } + } + }, { + key: "get", + value: function get(ignoreSpace) { + this.discardedWhiteSpace = []; + var token = this.nextToken(); + if (ignoreSpace) { + while (token.text === " ") { + this.discardedWhiteSpace.push(token); + token = this.nextToken(); + } + } + return token; + } + + /** + * Undo the effect of the preceding call to the get method. + * A call to this method MUST be immediately preceded and immediately followed + * by a call to get. Only used during mode switching, i.e. after one token + * was got in the old mode but should get got again in a new mode + * with possibly different whitespace handling. + */ + + }, { + key: "unget", + value: function unget(token) { + this.stack.push(token); + while (this.discardedWhiteSpace.length !== 0) { + this.stack.push(this.discardedWhiteSpace.pop()); + } + } + }]); + return MacroExpander; + }(); + + module.exports = MacroExpander; + + },{"./Lexer":26,"./ParseError":29,"./macros":44,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5,"object-assign":25}],28:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _createClass2 = require("babel-runtime/helpers/createClass"); + + var _createClass3 = _interopRequireDefault(_createClass2); + + var _fontMetrics2 = require("./fontMetrics"); + + var _fontMetrics3 = _interopRequireDefault(_fontMetrics2); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var BASESIZE = 6; /** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ + + var sizeStyleMap = [ + // Each element contains [textsize, scriptsize, scriptscriptsize]. + // The size mappings are taken from TeX with \normalsize=10pt. + [1, 1, 1], // size1: [5, 5, 5] \tiny + [2, 1, 1], // size2: [6, 5, 5] + [3, 1, 1], // size3: [7, 5, 5] \scriptsize + [4, 2, 1], // size4: [8, 6, 5] \footnotesize + [5, 2, 1], // size5: [9, 6, 5] \small + [6, 3, 1], // size6: [10, 7, 5] \normalsize + [7, 4, 2], // size7: [12, 8, 6] \large + [8, 6, 3], // size8: [14.4, 10, 7] \Large + [9, 7, 6], // size9: [17.28, 12, 10] \LARGE + [10, 8, 7], // size10: [20.74, 14.4, 12] \huge + [11, 10, 9]]; + + var sizeMultipliers = [ + // fontMetrics.js:getFontMetrics also uses size indexes, so if + // you change size indexes, change that function. + 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488]; + + var sizeAtStyle = function sizeAtStyle(size, style) { + return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1]; + }; + + /** + * This is the main options class. It contains the current style, size, color, + * and font. + * + * Options objects should not be modified. To create a new Options with + * different properties, call a `.having*` method. + */ + + var Options = function () { + function Options(data) { + (0, _classCallCheck3.default)(this, Options); + + this.style = data.style; + this.color = data.color; + this.size = data.size || BASESIZE; + this.textSize = data.textSize || this.size; + this.phantom = data.phantom; + this.font = data.font; + this.sizeMultiplier = sizeMultipliers[this.size - 1]; + this._fontMetrics = null; + } + + /** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ + + + (0, _createClass3.default)(Options, [{ + key: "extend", + value: function extend(extension) { + var data = { + style: this.style, + size: this.size, + textSize: this.textSize, + color: this.color, + phantom: this.phantom, + font: this.font + }; + + for (var key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options(data); + } + + /** + * Return an options object with the given style. If `this.style === style`, + * returns `this`. + */ + + }, { + key: "havingStyle", + value: function havingStyle(style) { + if (this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: sizeAtStyle(this.textSize, style) + }); + } + } + + /** + * Return an options object with a cramped version of the current style. If + * the current style is cramped, returns `this`. + */ + + }, { + key: "havingCrampedStyle", + value: function havingCrampedStyle() { + return this.havingStyle(this.style.cramp()); + } + + /** + * Return an options object with the given size and in at least `\textstyle`. + * Returns `this` if appropriate. + */ + + }, { + key: "havingSize", + value: function havingSize(size) { + if (this.size === size && this.textSize === size) { + return this; + } else { + return this.extend({ + style: this.style.text(), + size: size, + textSize: size + }); + } + } + + /** + * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted, + * changes to at least `\textstyle`. + */ + + }, { + key: "havingBaseStyle", + value: function havingBaseStyle(style) { + style = style || this.style.text(); + var wantSize = sizeAtStyle(BASESIZE, style); + if (this.size === wantSize && this.textSize === BASESIZE && this.style === style) { + return this; + } else { + return this.extend({ + style: style, + size: wantSize, + baseSize: BASESIZE + }); + } + } + + /** + * Create a new options object with the given color. + */ + + }, { + key: "withColor", + value: function withColor(color) { + return this.extend({ + color: color + }); + } + + /** + * Create a new options object with "phantom" set to true. + */ + + }, { + key: "withPhantom", + value: function withPhantom() { + return this.extend({ + phantom: true + }); + } + + /** + * Create a new options objects with the give font. + */ + + }, { + key: "withFont", + value: function withFont(font) { + return this.extend({ + font: font || this.font + }); + } + + /** + * Return the CSS sizing classes required to switch from enclosing options + * `oldOptions` to `this`. Returns an array of classes. + */ + + }, { + key: "sizingClasses", + value: function sizingClasses(oldOptions) { + if (oldOptions.size !== this.size) { + return ["sizing", "reset-size" + oldOptions.size, "size" + this.size]; + } else { + return []; + } + } + + /** + * Return the CSS sizing classes required to switch to the base size. Like + * `this.havingSize(BASESIZE).sizingClasses(this)`. + */ + + }, { + key: "baseSizingClasses", + value: function baseSizingClasses() { + if (this.size !== BASESIZE) { + return ["sizing", "reset-size" + this.size, "size" + BASESIZE]; + } else { + return []; + } + } + + /** + * Return the font metrics for this size. + */ + + }, { + key: "fontMetrics", + value: function fontMetrics() { + if (!this._fontMetrics) { + this._fontMetrics = _fontMetrics3.default.getFontMetrics(this.size); + } + return this._fontMetrics; + } + + /** + * A map of color names to CSS colors. + * TODO(emily): Remove this when we have real macros + */ + + }, { + key: "getColor", + + + /** + * Gets the CSS color of the current options object, accounting for the + * `colorMap`. + */ + value: function getColor() { + if (this.phantom) { + return "transparent"; + } else { + return Options.colorMap[this.color] || this.color; + } + } + }]); + return Options; + }(); + + /** + * The base size index. + */ + + + Options.colorMap = { + "katex-blue": "#6495ed", + "katex-orange": "#ffa500", + "katex-pink": "#ff00af", + "katex-red": "#df0030", + "katex-green": "#28ae7b", + "katex-gray": "gray", + "katex-purple": "#9d38bd", + "katex-blueA": "#ccfaff", + "katex-blueB": "#80f6ff", + "katex-blueC": "#63d9ea", + "katex-blueD": "#11accd", + "katex-blueE": "#0c7f99", + "katex-tealA": "#94fff5", + "katex-tealB": "#26edd5", + "katex-tealC": "#01d1c1", + "katex-tealD": "#01a995", + "katex-tealE": "#208170", + "katex-greenA": "#b6ffb0", + "katex-greenB": "#8af281", + "katex-greenC": "#74cf70", + "katex-greenD": "#1fab54", + "katex-greenE": "#0d923f", + "katex-goldA": "#ffd0a9", + "katex-goldB": "#ffbb71", + "katex-goldC": "#ff9c39", + "katex-goldD": "#e07d10", + "katex-goldE": "#a75a05", + "katex-redA": "#fca9a9", + "katex-redB": "#ff8482", + "katex-redC": "#f9685d", + "katex-redD": "#e84d39", + "katex-redE": "#bc2612", + "katex-maroonA": "#ffbde0", + "katex-maroonB": "#ff92c6", + "katex-maroonC": "#ed5fa6", + "katex-maroonD": "#ca337c", + "katex-maroonE": "#9e034e", + "katex-purpleA": "#ddd7ff", + "katex-purpleB": "#c6b9fc", + "katex-purpleC": "#aa87ff", + "katex-purpleD": "#7854ab", + "katex-purpleE": "#543b78", + "katex-mintA": "#f5f9e8", + "katex-mintB": "#edf2df", + "katex-mintC": "#e0e5cc", + "katex-grayA": "#f6f7f7", + "katex-grayB": "#f0f1f2", + "katex-grayC": "#e3e5e6", + "katex-grayD": "#d6d8da", + "katex-grayE": "#babec2", + "katex-grayF": "#888d93", + "katex-grayG": "#626569", + "katex-grayH": "#3b3e40", + "katex-grayI": "#21242c", + "katex-kaBlue": "#314453", + "katex-kaGreen": "#71B307" + }; + Options.BASESIZE = BASESIZE; + + module.exports = Options; + + },{"./fontMetrics":41,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],29:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + * + * @param {string} message The error message + * @param {(Token|ParseNode)=} token An object providing position information + */ + var ParseError = function ParseError(message, token) { + (0, _classCallCheck3.default)(this, ParseError); + + var error = "KaTeX parse error: " + message; + var start = void 0; + var end = void 0; + + if (token && token.lexer && token.start <= token.end) { + // If we have the input and a position, make the error a bit fancier + + // Get the input + var input = token.lexer.input; + + // Prepend some information + start = token.start; + end = token.end; + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } + + // Underline token in question using combining underscores + var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); + + // Extract some context from the input and add it to the error + var left = void 0; + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + var right = void 0; + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + error += left + underlined + right; + } + + // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + var self = new Error(error); + self.name = "ParseError"; + self.__proto__ = ParseError.prototype; + + self.position = start; + return self; + }; + + // More hackery + + + ParseError.prototype.__proto__ = Error.prototype; + + module.exports = ParseError; + + },{"babel-runtime/helpers/classCallCheck":4}],30:[function(require,module,exports){ + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * The resulting parse tree nodes of the parse tree. + * + * It is possible to provide position information, so that a ParseNode can + * fulfil a role similar to a Token in error reporting. + * For details on the corresponding properties see Token constructor. + * Providing such information can lead to better error reporting. + * + * @param {string} type type of node, like e.g. "ordgroup" + * @param {?object} value type-specific representation of the node + * @param {string} mode parse mode in action for this node, + * "math" or "text" + * @param {Token=} firstToken first token of the input for this node, + * will omit position information if unset + * @param {Token=} lastToken last token of the input for this node, + * will default to firstToken if unset + */ + var ParseNode = function ParseNode(type, value, mode, firstToken, lastToken) { + (0, _classCallCheck3.default)(this, ParseNode); + + this.type = type; + this.value = value; + this.mode = mode; + if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) { + this.lexer = firstToken.lexer; + this.start = firstToken.start; + this.end = (lastToken || firstToken).end; + } + }; + + exports.default = ParseNode; + + },{"babel-runtime/helpers/classCallCheck":4}],31:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _createClass2 = require("babel-runtime/helpers/createClass"); + + var _createClass3 = _interopRequireDefault(_createClass2); + + var _functions = require("./functions"); + + var _functions2 = _interopRequireDefault(_functions); + + var _environments = require("./environments"); + + var _environments2 = _interopRequireDefault(_environments); + + var _MacroExpander = require("./MacroExpander"); + + var _MacroExpander2 = _interopRequireDefault(_MacroExpander); + + var _symbols = require("./symbols"); + + var _symbols2 = _interopRequireDefault(_symbols); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + var _units = require("./units"); + + var _units2 = _interopRequireDefault(_units); + + var _unicodeRegexes = require("./unicodeRegexes"); + + var _ParseNode = require("./ParseNode"); + + var _ParseNode2 = _interopRequireDefault(_ParseNode); + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The earlier functions return ParseNodes. + * The later functions (which are called deeper in the parse) sometimes return + * ParseFuncOrArgument, which contain a ParseNode as well as some data about + * whether the parsed object is a function which is missing some arguments, or a + * standalone object which can be used as an argument to another function. + */ + + /** + * An initial function (without its arguments), or an argument to a function. + * The `result` argument should be a ParseNode. + */ + function ParseFuncOrArgument(result, isFunction, token) { + this.result = result; + // Is this a function (i.e. is it something defined in functions.js)? + this.isFunction = isFunction; + this.token = token; + } /* eslint no-constant-condition:0 */ + + var Parser = function () { + function Parser(input, settings) { + (0, _classCallCheck3.default)(this, Parser); + + // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + this.gullet = new _MacroExpander2.default(input, settings.macros); + // Use old \color behavior (same as LaTeX's \textcolor) if requested. + // We do this after the macros object has been copied by MacroExpander. + if (settings.colorIsTextColor) { + this.gullet.macros["\\color"] = "\\textcolor"; + } + // Store the settings for use in parsing + this.settings = settings; + // Count leftright depth (for \middle errors) + this.leftrightDepth = 0; + } + + /** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + * + * @param {boolean=} consume whether to consume the expected token, + * defaults to true + */ + + + (0, _createClass3.default)(Parser, [{ + key: "expect", + value: function expect(text, consume) { + if (this.nextToken.text !== text) { + throw new _ParseError2.default("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken); + } + if (consume !== false) { + this.consume(); + } + } + + /** + * Considers the current look ahead token as consumed, + * and fetches the one after that as the new look ahead. + */ + + }, { + key: "consume", + value: function consume() { + this.nextToken = this.gullet.get(this.mode === "math"); + } + }, { + key: "switchMode", + value: function switchMode(newMode) { + this.gullet.unget(this.nextToken); + this.mode = newMode; + this.consume(); + } + + /** + * Main parsing function, which parses an entire input. + * + * @return {?Array.} + */ + + }, { + key: "parse", + value: function parse() { + // Try to parse the input + this.mode = "math"; + this.consume(); + var parse = this.parseInput(); + return parse; + } + + /** + * Parses an entire input tree. + */ + + }, { + key: "parseInput", + value: function parseInput() { + // Parse an expression + var expression = this.parseExpression(false); + // If we succeeded, make sure there's an EOF at the end + this.expect("EOF", false); + return expression; + } + }, { + key: "parseExpression", + + + /** + * Parses an "expression", which is a list of atoms. + * + * @param {boolean} breakOnInfix Should the parsing stop when we hit infix + * nodes? This happens when functions have higher precendence + * than infix nodes in implicit parses. + * + * @param {?string} breakOnTokenText The text of the token that the expression + * should end with, or `null` if something else should end the + * expression. + * + * @return {ParseNode} + */ + value: function parseExpression(breakOnInfix, breakOnTokenText) { + var body = []; + // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + while (true) { + var lex = this.nextToken; + if (Parser.endOfExpression.indexOf(lex.text) !== -1) { + break; + } + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + if (breakOnInfix && _functions2.default[lex.text] && _functions2.default[lex.text].infix) { + break; + } + var atom = this.parseAtom(); + if (!atom) { + if (!this.settings.throwOnError && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(); + body.push(errorNode); + continue; + } + + break; + } + body.push(atom); + } + return this.handleInfixNodes(body); + } + + /** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + * + * @returns {Array} + */ + + }, { + key: "handleInfixNodes", + value: function handleInfixNodes(body) { + var overIndex = -1; + var funcName = void 0; + + for (var i = 0; i < body.length; i++) { + var node = body[i]; + if (node.type === "infix") { + if (overIndex !== -1) { + throw new _ParseError2.default("only one infix operator per group", node.value.token); + } + overIndex = i; + funcName = node.value.replaceWith; + } + } + + if (overIndex !== -1) { + var numerNode = void 0; + var denomNode = void 0; + + var numerBody = body.slice(0, overIndex); + var denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = new _ParseNode2.default("ordgroup", numerBody, this.mode); + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = new _ParseNode2.default("ordgroup", denomBody, this.mode); + } + + var value = this.callFunction(funcName, [numerNode, denomNode], null); + return [new _ParseNode2.default(value.type, value, this.mode)]; + } else { + return body; + } + } + + // The greediness of a superscript or subscript + + }, { + key: "handleSupSubscript", + + + /** + * Handle a subscript or superscript with nice errors. + */ + value: function handleSupSubscript(name) { + var symbolToken = this.nextToken; + var symbol = symbolToken.text; + this.consume(); + var group = this.parseGroup(); + + if (!group) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + return this.handleUnsupportedCmd(); + } else { + throw new _ParseError2.default("Expected group after '" + symbol + "'", symbolToken); + } + } else if (group.isFunction) { + // ^ and _ have a greediness, so handle interactions with functions' + // greediness + var funcGreediness = _functions2.default[group.result].greediness; + if (funcGreediness > Parser.SUPSUB_GREEDINESS) { + return this.parseFunction(group); + } else { + throw new _ParseError2.default("Got function '" + group.result + "' with no arguments " + "as " + name, symbolToken); + } + } else { + return group.result; + } + } + + /** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + + }, { + key: "handleUnsupportedCmd", + value: function handleUnsupportedCmd() { + var text = this.nextToken.text; + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new _ParseNode2.default("textord", text[i], "text")); + } + + var textNode = new _ParseNode2.default("text", { + body: textordArray, + type: "text" + }, this.mode); + + var colorNode = new _ParseNode2.default("color", { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, this.mode); + + this.consume(); + return colorNode; + } + + /** + * Parses a group with optional super/subscripts. + * + * @return {?ParseNode} + */ + + }, { + key: "parseAtom", + value: function parseAtom() { + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + var base = this.parseImplicitGroup(); + + // In text mode, we don't have superscripts or subscripts + if (this.mode === "text") { + return base; + } + + // Note that base may be empty (i.e. null) at this point. + + var superscript = void 0; + var subscript = void 0; + while (true) { + // Lex the first token + var lex = this.nextToken; + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.type !== "op") { + throw new _ParseError2.default("Limit controls must follow a math operator", lex); + } else { + var limits = lex.text === "\\limits"; + base.value.limits = limits; + base.value.alwaysHandleSupSub = true; + } + this.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + superscript = this.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new _ParseError2.default("Double subscript", lex); + } + subscript = this.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + if (superscript) { + throw new _ParseError2.default("Double superscript", lex); + } + var prime = new _ParseNode2.default("textord", "\\prime", this.mode); + + // Many primes can be grouped together, so we handle this here + var primes = [prime]; + this.consume(); + // Keep lexing tokens until we get something that's not a prime + while (this.nextToken.text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this.consume(); + } + // If there's a superscript following the primes, combine that + // superscript in with the primes. + if (this.nextToken.text === "^") { + primes.push(this.handleSupSubscript("superscript")); + } + // Put everything into an ordgroup as the superscript + superscript = new _ParseNode2.default("ordgroup", primes, this.mode); + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return new _ParseNode2.default("supsub", { + base: base, + sup: superscript, + sub: subscript + }, this.mode); + } else { + // Otherwise return the original body + return base; + } + } + + // A list of the size-changing functions, for use in parseImplicitGroup + + + // A list of the style-changing functions, for use in parseImplicitGroup + + + // Old font functions + + }, { + key: "parseImplicitGroup", + + + /** + * Parses an implicit group, which is a group that starts at the end of a + * specified, and ends right before a higher explicit group ends, or at EOL. It + * is used for functions that appear to affect the current style, like \Large or + * \textrm, where instead of keeping a style we just pretend that there is an + * implicit grouping after it until the end of the group. E.g. + * small text {\Large large text} small text again + * It is also used for \left and \right to get the correct grouping. + * + * @return {?ParseNode} + */ + value: function parseImplicitGroup() { + var start = this.parseSymbol(); + + if (start == null) { + // If we didn't get anything we handle, fall back to parseFunction + return this.parseFunction(); + } + + var func = start.result; + + if (func === "\\left") { + // If we see a left: + // Parse the entire left function (including the delimiter) + var left = this.parseFunction(start); + // Parse out the implicit body + ++this.leftrightDepth; + var body = this.parseExpression(false); + --this.leftrightDepth; + // Check the next token + this.expect("\\right", false); + var right = this.parseFunction(); + return new _ParseNode2.default("leftright", { + body: body, + left: left.value.value, + right: right.value.value + }, this.mode); + } else if (func === "\\begin") { + // begin...end is similar to left...right + var begin = this.parseFunction(start); + var envName = begin.value.name; + if (!_environments2.default.hasOwnProperty(envName)) { + throw new _ParseError2.default("No such environment: " + envName, begin.value.nameGroup); + } + // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + var env = _environments2.default[envName]; + var args = this.parseArguments("\\begin{" + envName + "}", env); + var context = { + mode: this.mode, + envName: envName, + parser: this, + positions: args.pop() + }; + var result = env.handler(context, args); + this.expect("\\end", false); + var endNameToken = this.nextToken; + var end = this.parseFunction(); + if (end.value.name !== envName) { + throw new _ParseError2.default("Mismatch: \\begin{" + envName + "} matched " + "by \\end{" + end.value.name + "}", endNameToken); + } + result.position = end.position; + return result; + } else if (_utils2.default.contains(Parser.sizeFuncs, func)) { + // If we see a sizing function, parse out the implicit body + this.consumeSpaces(); + var _body = this.parseExpression(false); + return new _ParseNode2.default("sizing", { + // Figure out what size to use based on the list of functions above + size: _utils2.default.indexOf(Parser.sizeFuncs, func) + 1, + value: _body + }, this.mode); + } else if (_utils2.default.contains(Parser.styleFuncs, func)) { + // If we see a styling function, parse out the implicit body + this.consumeSpaces(); + var _body2 = this.parseExpression(true); + return new _ParseNode2.default("styling", { + // Figure out what style to use by pulling out the style from + // the function name + style: func.slice(1, func.length - 5), + value: _body2 + }, this.mode); + } else if (func in Parser.oldFontFuncs) { + var style = Parser.oldFontFuncs[func]; + // If we see an old font function, parse out the implicit body + this.consumeSpaces(); + var _body3 = this.parseExpression(true); + if (style.slice(0, 4) === 'text') { + return new _ParseNode2.default("text", { + style: style, + body: new _ParseNode2.default("ordgroup", _body3, this.mode) + }, this.mode); + } else { + return new _ParseNode2.default("font", { + font: style, + body: new _ParseNode2.default("ordgroup", _body3, this.mode) + }, this.mode); + } + } else if (func === "\\color") { + // If we see a styling function, parse out the implicit body + var color = this.parseColorGroup(false); + if (!color) { + throw new _ParseError2.default("\\color not followed by color"); + } + var _body4 = this.parseExpression(true); + return new _ParseNode2.default("color", { + type: "color", + color: color.result.value, + value: _body4 + }, this.mode); + } else if (func === "$") { + if (this.mode === "math") { + throw new _ParseError2.default("$ within math mode"); + } + this.consume(); + var outerMode = this.mode; + this.switchMode("math"); + var _body5 = this.parseExpression(false, "$"); + this.expect("$", true); + this.switchMode(outerMode); + return new _ParseNode2.default("styling", { + style: "text", + value: _body5 + }, "math"); + } else { + // Defer to parseFunction if it's not a function we handle + return this.parseFunction(start); + } + } + + /** + * Parses an entire function, including its base and all of its arguments. + * The base might either have been parsed already, in which case + * it is provided as an argument, or it's the next group in the input. + * + * @param {ParseFuncOrArgument=} baseGroup optional as described above + * @return {?ParseNode} + */ + + }, { + key: "parseFunction", + value: function parseFunction(baseGroup) { + if (!baseGroup) { + baseGroup = this.parseGroup(); + } + + if (baseGroup) { + if (baseGroup.isFunction) { + var func = baseGroup.result; + var funcData = _functions2.default[func]; + if (this.mode === "text" && !funcData.allowedInText) { + throw new _ParseError2.default("Can't use function '" + func + "' in text mode", baseGroup.token); + } else if (this.mode === "math" && funcData.allowedInMath === false) { + throw new _ParseError2.default("Can't use function '" + func + "' in math mode", baseGroup.token); + } + + var args = this.parseArguments(func, funcData); + var token = baseGroup.token; + var result = this.callFunction(func, args, args.pop(), token); + return new _ParseNode2.default(result.type, result, this.mode); + } else { + return baseGroup.result; + } + } else { + return null; + } + } + + /** + * Call a function handler with a suitable context and arguments. + */ + + }, { + key: "callFunction", + value: function callFunction(name, args, positions, token) { + var context = { + funcName: name, + parser: this, + positions: positions, + token: token + }; + return _functions2.default[name].handler(context, args); + } + + /** + * Parses the arguments of a function or environment + * + * @param {string} func "\name" or "\begin{name}" + * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData + * @return the array of arguments, with the list of positions as last element + */ + + }, { + key: "parseArguments", + value: function parseArguments(func, funcData) { + var totalArgs = funcData.numArgs + funcData.numOptionalArgs; + if (totalArgs === 0) { + return [[this.pos]]; + } + + var baseGreediness = funcData.greediness; + var positions = [this.pos]; + var args = []; + + for (var i = 0; i < totalArgs; i++) { + var nextToken = this.nextToken; + var argType = funcData.argTypes && funcData.argTypes[i]; + var arg = void 0; + if (i < funcData.numOptionalArgs) { + if (argType) { + arg = this.parseGroupOfType(argType, true); + } else { + arg = this.parseGroup(true); + } + if (!arg) { + args.push(null); + positions.push(this.pos); + continue; + } + } else { + if (argType) { + arg = this.parseGroupOfType(argType); + } else { + arg = this.parseGroup(); + } + if (!arg) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + arg = new ParseFuncOrArgument(this.handleUnsupportedCmd(this.nextToken.text), false); + } else { + throw new _ParseError2.default("Expected group after '" + func + "'", nextToken); + } + } + } + var argNode = void 0; + if (arg.isFunction) { + var argGreediness = _functions2.default[arg.result].greediness; + if (argGreediness > baseGreediness) { + argNode = this.parseFunction(arg); + } else { + throw new _ParseError2.default("Got function '" + arg.result + "' as " + "argument to '" + func + "'", nextToken); + } + } else { + argNode = arg.result; + } + args.push(argNode); + positions.push(this.pos); + } + + args.push(positions); + + return args; + } + + /** + * Parses a group when the mode is changing. + * + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseGroupOfType", + value: function parseGroupOfType(innerMode, optional) { + var outerMode = this.mode; + // Handle `original` argTypes + if (innerMode === "original") { + innerMode = outerMode; + } + + if (innerMode === "color") { + return this.parseColorGroup(optional); + } + if (innerMode === "size") { + return this.parseSizeGroup(optional); + } + + this.switchMode(innerMode); + if (innerMode === "text") { + // text mode is special because it should ignore the whitespace before + // it + this.consumeSpaces(); + } + // By the time we get here, innerMode is one of "text" or "math". + // We switch the mode of the parser, recurse, then restore the old mode. + var res = this.parseGroup(optional); + this.switchMode(outerMode); + return res; + } + }, { + key: "consumeSpaces", + value: function consumeSpaces() { + while (this.nextToken.text === " ") { + this.consume(); + } + } + + /** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + * + * @param {string} modeName Used to describe the mode in error messages + * @param {boolean=} optional Whether the group is optional or required + */ + + }, { + key: "parseStringGroup", + value: function parseStringGroup(modeName, optional) { + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (this.nextToken.text !== (optional ? "]" : "}")) { + if (this.nextToken.text === "EOF") { + throw new _ParseError2.default("Unexpected end of input in " + modeName, firstToken.range(this.nextToken, str)); + } + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); + } + + /** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + * + * @param {RegExp} regex + * @param {string} modeName Used to describe the mode in error messages + */ + + }, { + key: "parseRegexGroup", + value: function parseRegexGroup(regex, modeName) { + var outerMode = this.mode; + this.mode = "text"; + var firstToken = this.nextToken; + var lastToken = firstToken; + var str = ""; + while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) { + lastToken = this.nextToken; + str += lastToken.text; + this.consume(); + } + if (str === "") { + throw new _ParseError2.default("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken); + } + this.mode = outerMode; + return firstToken.range(lastToken, str); + } + + /** + * Parses a color description. + */ + + }, { + key: "parseColorGroup", + value: function parseColorGroup(optional) { + var res = this.parseStringGroup("color", optional); + if (!res) { + return null; + } + var match = /^(#[a-z0-9]+|[a-z]+)$/i.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid color: '" + res.text + "'", res); + } + return new ParseFuncOrArgument(new _ParseNode2.default("color", match[0], this.mode), false); + } + + /** + * Parses a size specification, consisting of magnitude and unit. + */ + + }, { + key: "parseSizeGroup", + value: function parseSizeGroup(optional) { + var res = void 0; + if (!optional && this.nextToken.text !== "{") { + res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + if (!res) { + return null; + } + var match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text); + if (!match) { + throw new _ParseError2.default("Invalid size: '" + res.text + "'", res); + } + var data = { + number: +(match[1] + match[2]), // sign + magnitude, cast to number + unit: match[3] + }; + if (!_units2.default.validUnit(data)) { + throw new _ParseError2.default("Invalid unit: '" + data.unit + "'", res); + } + return new ParseFuncOrArgument(new _ParseNode2.default("size", data, this.mode), false); + } + + /** + * If the argument is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}"). + * If the argument is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * + * @param {boolean=} optional Whether the group is optional or required + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseGroup", + value: function parseGroup(optional) { + var firstToken = this.nextToken; + // Try to parse an open brace + if (this.nextToken.text === (optional ? "[" : "{")) { + // If we get a brace, parse an expression + this.consume(); + var expression = this.parseExpression(false, optional ? "]" : null); + var lastToken = this.nextToken; + // Make sure we get a close brace + this.expect(optional ? "]" : "}"); + if (this.mode === "text") { + this.formLigatures(expression); + } + return new ParseFuncOrArgument(new _ParseNode2.default("ordgroup", expression, this.mode, firstToken, lastToken), false); + } else { + // Otherwise, just return a nucleus, or nothing for an optional group + return optional ? null : this.parseSymbol(); + } + } + + /** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * + * @param {Array.} group the nodes of this group, + * list will be moified in place + */ + + }, { + key: "formLigatures", + value: function formLigatures(group) { + var n = group.length - 1; + for (var i = 0; i < n; ++i) { + var a = group[i]; + var v = a.value; + if (v === "-" && group[i + 1].value === "-") { + if (i + 1 < n && group[i + 2].value === "-") { + group.splice(i, 3, new _ParseNode2.default("textord", "---", "text", a, group[i + 2])); + n -= 2; + } else { + group.splice(i, 2, new _ParseNode2.default("textord", "--", "text", a, group[i + 1])); + n -= 1; + } + } + if ((v === "'" || v === "`") && group[i + 1].value === v) { + group.splice(i, 2, new _ParseNode2.default("textord", v + v, "text", a, group[i + 1])); + n -= 1; + } + } + } + + /** + * Parse a single symbol out of the string. Here, we handle both the functions + * we have defined, as well as the single character symbols + * + * @return {?ParseFuncOrArgument} + */ + + }, { + key: "parseSymbol", + value: function parseSymbol() { + var nucleus = this.nextToken; + + if (_functions2.default[nucleus.text]) { + this.consume(); + // If there exists a function with this name, we return the function and + // say that it is a function. + return new ParseFuncOrArgument(nucleus.text, true, nucleus); + } else if (_symbols2.default[this.mode][nucleus.text]) { + this.consume(); + // Otherwise if this is a no-argument function, find the type it + // corresponds to in the symbols map + return new ParseFuncOrArgument(new _ParseNode2.default(_symbols2.default[this.mode][nucleus.text].group, nucleus.text, this.mode, nucleus), false, nucleus); + } else if (this.mode === "text" && _unicodeRegexes.cjkRegex.test(nucleus.text)) { + this.consume(); + return new ParseFuncOrArgument(new _ParseNode2.default("textord", nucleus.text, this.mode, nucleus), false, nucleus); + } else if (nucleus.text === "$") { + return new ParseFuncOrArgument(nucleus.text, false, nucleus); + } else { + return null; + } + } + }]); + return Parser; + }(); + + Parser.endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; + Parser.SUPSUB_GREEDINESS = 1; + Parser.sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"]; + Parser.styleFuncs = ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"]; + Parser.oldFontFuncs = { + "\\rm": "mathrm", + "\\sf": "mathsf", + "\\tt": "mathtt", + "\\bf": "mathbf", + "\\it": "mathit" + }; + + + Parser.prototype.ParseNode = _ParseNode2.default; + + module.exports = Parser; + + },{"./MacroExpander":27,"./ParseError":29,"./ParseNode":30,"./environments":40,"./functions":43,"./symbols":48,"./unicodeRegexes":49,"./units":50,"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],32:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset as inline math + * (false, the default), meaning that the math starts in + * \textstyle and is placed in an inline-block); or as display + * math (true), meaning that the math starts in \displaystyle + * and is placed in a block with vertical margin. + */ + var Settings = function Settings(options) { + (0, _classCallCheck3.default)(this, Settings); + + // allow null options + options = options || {}; + this.displayMode = _utils2.default.deflt(options.displayMode, false); + this.throwOnError = _utils2.default.deflt(options.throwOnError, true); + this.errorColor = _utils2.default.deflt(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; + this.colorIsTextColor = _utils2.default.deflt(options.colorIsTextColor, false); + }; /** + * This is a module for storing settings passed into KaTeX. It correctly handles + * default settings. + */ + + module.exports = Settings; + + },{"./utils":51,"babel-runtime/helpers/classCallCheck":4}],33:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _createClass2 = require("babel-runtime/helpers/createClass"); + + var _createClass3 = _interopRequireDefault(_createClass2); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + + /** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), and a cramped flag. + */ + var Style = function () { + function Style(id, size, cramped) { + (0, _classCallCheck3.default)(this, Style); + + this.id = id; + this.size = size; + this.cramped = cramped; + } + + /** + * Get the style of a superscript given a base in the current style. + */ + + + (0, _createClass3.default)(Style, [{ + key: "sup", + value: function sup() { + return styles[_sup[this.id]]; + } + + /** + * Get the style of a subscript given a base in the current style. + */ + + }, { + key: "sub", + value: function sub() { + return styles[_sub[this.id]]; + } + + /** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ + + }, { + key: "fracNum", + value: function fracNum() { + return styles[_fracNum[this.id]]; + } + + /** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ + + }, { + key: "fracDen", + value: function fracDen() { + return styles[_fracDen[this.id]]; + } + + /** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ + + }, { + key: "cramp", + value: function cramp() { + return styles[_cramp[this.id]]; + } + + /** + * Get a text or display version of this style. + */ + + }, { + key: "text", + value: function text() { + return styles[_text[this.id]]; + } + + /** + * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ + + }, { + key: "isTight", + value: function isTight() { + return this.size >= 2; + } + }]); + return Style; + }(); + + // IDs of the different styles + + + var D = 0; + var Dc = 1; + var T = 2; + var Tc = 3; + var S = 4; + var Sc = 5; + var SS = 6; + var SSc = 7; + + // Instances of the different styles + var styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; + + // Lookup tables for switching from one style to another + var _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; + var _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; + var _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; + var _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; + var _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; + var _text = [D, Dc, T, Tc, T, Tc, T, Tc]; + + // We only export some of the styles. Also, we don't export the `Style` class so + // no more styles can be generated. + module.exports = { + DISPLAY: styles[D], + TEXT: styles[T], + SCRIPT: styles[S], + SCRIPTSCRIPT: styles[SS] + }; + + },{"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],34:[function(require,module,exports){ + + var _domTree = require("./domTree"); + + var _domTree2 = _interopRequireDefault(_domTree); + + var _fontMetrics = require("./fontMetrics"); + + var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + + var _symbols = require("./symbols"); + + var _symbols2 = _interopRequireDefault(_symbols); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // The following have to be loaded from Main-Italic font, using class mainit + /* eslint no-console:0 */ + /** + * This module contains general functions that can be used for building + * different kinds of domTree nodes in a consistent manner. + */ + + var mainitLetters = ["\\imath", // dotless i + "\\jmath", // dotless j + "\\pounds"]; + + /** + * Looks up the given symbol in fontMetrics, after applying any symbol + * replacements defined in symbol.js + */ + var lookupSymbol = function lookupSymbol(value, fontFamily, mode) { + // Replace the value with its replaced value from symbol.js + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + return { + value: value, + metrics: _fontMetrics2.default.getCharacterMetrics(value, fontFamily) + }; + }; + + /** + * Makes a symbolNode after translation via the list of symbols in symbols.js. + * Correctly pulls out metrics for the character, and optionally takes a list of + * classes to be attached to the node. + * + * TODO: make argument order closer to makeSpan + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ + var makeSymbol = function makeSymbol(value, fontFamily, mode, options, classes) { + var lookup = lookupSymbol(value, fontFamily, mode); + var metrics = lookup.metrics; + value = lookup.value; + + var symbolNode = void 0; + if (metrics) { + var italic = metrics.italic; + if (mode === "text") { + italic = 0; + } + symbolNode = new _domTree2.default.symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, classes); + } else { + // TODO(emily): Figure out a good way to only print this in development + typeof console !== "undefined" && console.warn("No character metrics for '" + value + "' in style '" + fontFamily + "'"); + symbolNode = new _domTree2.default.symbolNode(value, 0, 0, 0, 0, classes); + } + + if (options) { + symbolNode.maxFontSize = options.sizeMultiplier; + if (options.style.isTight()) { + symbolNode.classes.push("mtight"); + } + if (options.getColor()) { + symbolNode.style.color = options.getColor(); + } + } + + return symbolNode; + }; + + /** + * Makes a symbol in Main-Regular or AMS-Regular. + * Used for rel, bin, open, close, inner, and punct. + */ + var mathsym = function mathsym(value, mode, options, classes) { + // Decide what font to render the symbol in by its entry in the symbols + // table. + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text + if (value === "\\" || _symbols2.default[mode][value].font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes); + } else { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } + }; + + /** + * Makes a symbol in the default font for mathords and textords. + */ + var mathDefault = function mathDefault(value, mode, options, classes, type) { + if (type === "mathord") { + var fontLookup = mathit(value); + return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass])); + } else if (type === "textord") { + var font = _symbols2.default[mode][value] && _symbols2.default[mode][value].font; + if (font === "ams") { + return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } else { + // if (font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes.concat(["mathrm"])); + } + } else { + throw new Error("unexpected type: " + type + " in mathDefault"); + } + }; + + /** + * Determines which of the two font names (Main-Italic and Math-Italic) and + * corresponding style tags (mainit or mathit) to use for font "mathit", + * depending on the symbol. Use this function instead of fontMap for font + * "mathit". + */ + var mathit = function mathit(value, mode, options, classes) { + if (/[0-9]/.test(value.charAt(0)) || + // glyphs for \imath and \jmath do not exist in Math-Italic so we + // need to use Main-Italic instead + _utils2.default.contains(mainitLetters, value)) { + return { + fontName: "Main-Italic", + fontClass: "mainit" + }; + } else { + return { + fontName: "Math-Italic", + fontClass: "mathit" + }; + } + }; + + /** + * Makes either a mathord or textord in the correct font and color. + */ + var makeOrd = function makeOrd(group, options, type) { + var mode = group.mode; + var value = group.value; + + var classes = ["mord"]; + + var font = options.font; + if (font) { + var fontLookup = void 0; + if (font === "mathit" || _utils2.default.contains(mainitLetters, value)) { + fontLookup = mathit(value); + } else { + fontLookup = fontMap[font]; + } + if (lookupSymbol(value, fontLookup.fontName, mode).metrics) { + return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass || font])); + } else { + return mathDefault(value, mode, options, classes, type); + } + } else { + return mathDefault(value, mode, options, classes, type); + } + }; + + /** + * Calculate the height, depth, and maxFontSize of an element based on its + * children. + */ + var sizeElementFromChildren = function sizeElementFromChildren(elem) { + var height = 0; + var depth = 0; + var maxFontSize = 0; + + if (elem.children) { + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].height > height) { + height = elem.children[i].height; + } + if (elem.children[i].depth > depth) { + depth = elem.children[i].depth; + } + if (elem.children[i].maxFontSize > maxFontSize) { + maxFontSize = elem.children[i].maxFontSize; + } + } + } + + elem.height = height; + elem.depth = depth; + elem.maxFontSize = maxFontSize; + }; + + /** + * Makes a span with the given list of classes, list of children, and options. + * + * TODO: Ensure that `options` is always provided (currently some call sites + * don't pass it). + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ + var makeSpan = function makeSpan(classes, children, options) { + var span = new _domTree2.default.span(classes, children, options); + + sizeElementFromChildren(span); + + return span; + }; + + /** + * Prepends the given children to the given span, updating height, depth, and + * maxFontSize. + */ + var prependChildren = function prependChildren(span, children) { + span.children = children.concat(span.children); + + sizeElementFromChildren(span); + }; + + /** + * Makes a document fragment with the given list of children. + */ + var makeFragment = function makeFragment(children) { + var fragment = new _domTree2.default.documentFragment(children); + + sizeElementFromChildren(fragment); + + return fragment; + }; + + /** + * Makes a vertical list by stacking elements and kerns on top of each other. + * Allows for many different ways of specifying the positioning method. + * + * Arguments: + * - children: A list of child or kern nodes to be stacked on top of each other + * (i.e. the first element will be at the bottom, and the last at + * the top). Element nodes are specified as + * {type: "elem", elem: node} + * while kern nodes are specified as + * {type: "kern", size: size} + * - positionType: The method by which the vlist should be positioned. Valid + * values are: + * - "individualShift": The children list only contains elem + * nodes, and each node contains an extra + * "shift" value of how much it should be + * shifted (note that shifting is always + * moving downwards). positionData is + * ignored. + * - "top": The positionData specifies the topmost point of + * the vlist (note this is expected to be a height, + * so positive values move up) + * - "bottom": The positionData specifies the bottommost point + * of the vlist (note this is expected to be a + * depth, so positive values move down + * - "shift": The vlist will be positioned such that its + * baseline is positionData away from the baseline + * of the first child. Positive values move + * downwards. + * - "firstBaseline": The vlist will be positioned such that + * its baseline is aligned with the + * baseline of the first child. + * positionData is ignored. (this is + * equivalent to "shift" with + * positionData=0) + * - positionData: Data used in different ways depending on positionType + * - options: An Options object + * + */ + var makeVList = function makeVList(children, positionType, positionData, options) { + var depth = void 0; + var currPos = void 0; + var i = void 0; + if (positionType === "individualShift") { + var oldChildren = children; + children = [oldChildren[0]]; + + // Add in kerns to the list of children to get each element to be + // shifted to the correct specified shift + depth = -oldChildren[0].shift - oldChildren[0].elem.depth; + currPos = depth; + for (i = 1; i < oldChildren.length; i++) { + var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth; + var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth); + + currPos = currPos + diff; + + children.push({ type: "kern", size: size }); + children.push(oldChildren[i]); + } + } else if (positionType === "top") { + // We always start at the bottom, so calculate the bottom by adding up + // all the sizes + var bottom = positionData; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + bottom -= children[i].size; + } else { + bottom -= children[i].elem.height + children[i].elem.depth; + } + } + depth = bottom; + } else if (positionType === "bottom") { + depth = -positionData; + } else if (positionType === "shift") { + depth = -children[0].elem.depth - positionData; + } else if (positionType === "firstBaseline") { + depth = -children[0].elem.depth; + } else { + depth = 0; + } + + // Create a strut that is taller than any list item. The strut is added to + // each item, where it will determine the item's baseline. Since it has + // `overflow:hidden`, the strut's top edge will sit on the item's line box's + // top edge and the strut's bottom edge will sit on the item's baseline, + // with no additional line-height spacing. This allows the item baseline to + // be positioned precisely without worrying about font ascent and + // line-height. + var pstrutSize = 0; + for (i = 0; i < children.length; i++) { + if (children[i].type === "elem") { + var child = children[i].elem; + pstrutSize = Math.max(pstrutSize, child.maxFontSize, child.height); + } + } + pstrutSize += 2; + var pstrut = makeSpan(["pstrut"], []); + pstrut.style.height = pstrutSize + "em"; + + // Create a new list of actual children at the correct offsets + var realChildren = []; + var minPos = depth; + var maxPos = depth; + currPos = depth; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + currPos += children[i].size; + } else { + var _child = children[i].elem; + + var childWrap = makeSpan([], [pstrut, _child]); + childWrap.style.top = -pstrutSize - currPos - _child.depth + "em"; + if (children[i].marginLeft) { + childWrap.style.marginLeft = children[i].marginLeft; + } + if (children[i].marginRight) { + childWrap.style.marginRight = children[i].marginRight; + } + + realChildren.push(childWrap); + currPos += _child.height + _child.depth; + } + minPos = Math.min(minPos, currPos); + maxPos = Math.max(maxPos, currPos); + } + + // The vlist contents go in a table-cell with `vertical-align:bottom`. + // This cell's bottom edge will determine the containing table's baseline + // without overly expanding the containing line-box. + var vlist = makeSpan(["vlist"], realChildren); + vlist.style.height = maxPos + "em"; + + // A second row is used if necessary to represent the vlist's depth. + var rows = void 0; + if (minPos < 0) { + var depthStrut = makeSpan(["vlist"], []); + depthStrut.style.height = -minPos + "em"; + + // Safari wants the first row to have inline content; otherwise it + // puts the bottom of the *second* row on the baseline. + var topStrut = makeSpan(["vlist-s"], [new _domTree2.default.symbolNode("\u200B")]); + + rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])]; + } else { + rows = [makeSpan(["vlist-r"], [vlist])]; + } + + var vtable = makeSpan(["vlist-t"], rows); + if (rows.length === 2) { + vtable.classes.push("vlist-t2"); + } + vtable.height = maxPos; + vtable.depth = -minPos; + return vtable; + }; + + // A map of spacing functions to their attributes, like size and corresponding + // CSS class + var spacingFunctions = { + "\\qquad": { + size: "2em", + className: "qquad" + }, + "\\quad": { + size: "1em", + className: "quad" + }, + "\\enspace": { + size: "0.5em", + className: "enspace" + }, + "\\;": { + size: "0.277778em", + className: "thickspace" + }, + "\\:": { + size: "0.22222em", + className: "mediumspace" + }, + "\\,": { + size: "0.16667em", + className: "thinspace" + }, + "\\!": { + size: "-0.16667em", + className: "negativethinspace" + } + }; + + /** + * Maps TeX font commands to objects containing: + * - variant: string used for "mathvariant" attribute in buildMathML.js + * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics + */ + // A map between tex font commands an MathML mathvariant attribute values + var fontMap = { + // styles + "mathbf": { + variant: "bold", + fontName: "Main-Bold" + }, + "mathrm": { + variant: "normal", + fontName: "Main-Regular" + }, + "textit": { + variant: "italic", + fontName: "Main-Italic" + }, + + // "mathit" is missing because it requires the use of two fonts: Main-Italic + // and Math-Italic. This is handled by a special case in makeOrd which ends + // up calling mathit. + + // families + "mathbb": { + variant: "double-struck", + fontName: "AMS-Regular" + }, + "mathcal": { + variant: "script", + fontName: "Caligraphic-Regular" + }, + "mathfrak": { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + "mathscr": { + variant: "script", + fontName: "Script-Regular" + }, + "mathsf": { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + "mathtt": { + variant: "monospace", + fontName: "Typewriter-Regular" + } + }; + + module.exports = { + fontMap: fontMap, + makeSymbol: makeSymbol, + mathsym: mathsym, + makeSpan: makeSpan, + makeFragment: makeFragment, + makeVList: makeVList, + makeOrd: makeOrd, + prependChildren: prependChildren, + spacingFunctions: spacingFunctions + }; + + },{"./domTree":39,"./fontMetrics":41,"./symbols":48,"./utils":51}],35:[function(require,module,exports){ + + var _stringify = require("babel-runtime/core-js/json/stringify"); + + var _stringify2 = _interopRequireDefault(_stringify); + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + var _Style = require("./Style"); + + var _Style2 = _interopRequireDefault(_Style); + + var _buildCommon = require("./buildCommon"); + + var _buildCommon2 = _interopRequireDefault(_buildCommon); + + var _delimiter = require("./delimiter"); + + var _delimiter2 = _interopRequireDefault(_delimiter); + + var _domTree = require("./domTree"); + + var _domTree2 = _interopRequireDefault(_domTree); + + var _units = require("./units"); + + var _units2 = _interopRequireDefault(_units); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + var _stretchy = require("./stretchy"); + + var _stretchy2 = _interopRequireDefault(_stretchy); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* eslint no-console:0 */ + /** + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupTypes functions are + * called, to produce a final HTML tree. + */ + + var isSpace = function isSpace(node) { + return node instanceof _domTree2.default.span && node.classes[0] === "mspace"; + }; + + // Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) + // depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, + // and the text before Rule 19. + var isBin = function isBin(node) { + return node && node.classes[0] === "mbin"; + }; + + var isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) { + // TODO: This code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + if (node) { + return _utils2.default.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } + }; + + var isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) { + if (node) { + return _utils2.default.contains(["mrel", "mclose", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } + }; + + /** + * Splice out any spaces from `children` starting at position `i`, and return + * the spliced-out array. Returns null if `children[i]` does not exist or is not + * a space. + */ + var spliceSpaces = function spliceSpaces(children, i) { + var j = i; + while (j < children.length && isSpace(children[j])) { + j++; + } + if (j === i) { + return null; + } else { + return children.splice(i, j - i); + } + }; + + /** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). + */ + var buildExpression = function buildExpression(expression, options, isRealGroup) { + // Parse expressions into `groups`. + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + var output = buildGroup(group, options); + if (output instanceof _domTree2.default.documentFragment) { + Array.prototype.push.apply(groups, output.children); + } else { + groups.push(output); + } + } + // At this point `groups` consists entirely of `symbolNode`s and `span`s. + + // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom + // spacing (e.g., "add thick space between mord and mrel"). Since CSS + // adjacency rules implement atom spacing, spaces should be invisible to + // CSS. So we splice them out of `groups` and into the atoms themselves. + for (var _i = 0; _i < groups.length; _i++) { + var spaces = spliceSpaces(groups, _i); + if (spaces) { + // Splicing of spaces may have removed all remaining groups. + if (_i < groups.length) { + // If there is a following group, move space within it. + if (groups[_i] instanceof _domTree2.default.symbolNode) { + groups[_i] = (0, _buildCommon.makeSpan)([].concat(groups[_i].classes), [groups[_i]]); + } + _buildCommon2.default.prependChildren(groups[_i], spaces); + } else { + // Otherwise, put any spaces back at the end of the groups. + Array.prototype.push.apply(groups, spaces); + break; + } + } + } + + // Binary operators change to ordinary symbols in some contexts. + for (var _i2 = 0; _i2 < groups.length; _i2++) { + if (isBin(groups[_i2]) && (isBinLeftCanceller(groups[_i2 - 1], isRealGroup) || isBinRightCanceller(groups[_i2 + 1], isRealGroup))) { + groups[_i2].classes[0] = "mord"; + } + } + + // Process \\not commands within the group. + // TODO(kevinb): Handle multiple \\not commands in a row. + // TODO(kevinb): Handle \\not{abc} correctly. The \\not should appear over + // the 'a' instead of the 'c'. + for (var _i3 = 0; _i3 < groups.length; _i3++) { + if (groups[_i3].value === "\u0338" && _i3 + 1 < groups.length) { + var children = groups.slice(_i3, _i3 + 2); + + children[0].classes = ["mainrm"]; + // \u0338 is a combining glyph so we could reorder the children so + // that it comes after the other glyph. This works correctly on + // most browsers except for Safari. Instead we absolutely position + // the glyph and set its right side to match that of the other + // glyph which is visually equivalent. + children[0].style.position = "absolute"; + children[0].style.right = "0"; + + // Copy the classes from the second glyph to the new container. + // This is so it behaves the same as though there was no \\not. + var classes = groups[_i3 + 1].classes; + var container = (0, _buildCommon.makeSpan)(classes, children); + + // LaTeX adds a space between ords separated by a \\not. + if (classes.indexOf("mord") !== -1) { + // \glue(\thickmuskip) 2.77771 plus 2.77771 + container.style.paddingLeft = "0.277771em"; + } + + // Ensure that the \u0338 is positioned relative to the container. + container.style.position = "relative"; + groups.splice(_i3, 2, container); + } + } + + return groups; + }; + + // Return math atom class (mclass) of a domTree. + var getTypeOfDomTree = function getTypeOfDomTree(node) { + if (node instanceof _domTree2.default.documentFragment) { + if (node.children.length) { + return getTypeOfDomTree(node.children[node.children.length - 1]); + } + } else { + if (_utils2.default.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", "mpunct", "minner"], node.classes[0])) { + return node.classes[0]; + } + } + return null; + }; + + /** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ + var shouldHandleSupSub = function shouldHandleSupSub(group, options) { + if (!group.value.base) { + return false; + } else { + var base = group.value.base; + if (base.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + return base.value.limits && (options.style.size === _Style2.default.DISPLAY.size || base.value.alwaysHandleSupSub); + } else if (base.type === "accent") { + return isCharacterBox(base.value.base); + } else if (base.type === "horizBrace") { + var isSup = group.value.sub ? false : true; + return isSup === base.value.isOver; + } else { + return null; + } + } + }; + + /** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ + var getBaseElem = function getBaseElem(group) { + if (!group) { + return false; + } else if (group.type === "ordgroup") { + if (group.value.length === 1) { + return getBaseElem(group.value[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.value.value.length === 1) { + return getBaseElem(group.value.value[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.value.body); + } else { + return group; + } + }; + + /** + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. + */ + var isCharacterBox = function isCharacterBox(group) { + var baseElem = getBaseElem(group); + + // These are all they types of groups which hold single characters + return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "bin" || baseElem.type === "rel" || baseElem.type === "inner" || baseElem.type === "open" || baseElem.type === "close" || baseElem.type === "punct"; + }; + + var makeNullDelimiter = function makeNullDelimiter(options, classes) { + var moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses()); + return (0, _buildCommon.makeSpan)(classes.concat(moreClasses)); + }; + + /** + * This is a map of group types to the function used to handle that type. + * Simpler types come at the beginning, while complicated types come afterwards. + */ + var groupTypes = {}; + + groupTypes.mathord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "mathord"); + }; + + groupTypes.textord = function (group, options) { + return _buildCommon2.default.makeOrd(group, options, "textord"); + }; + + groupTypes.bin = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mbin"]); + }; + + groupTypes.rel = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mrel"]); + }; + + groupTypes.open = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mopen"]); + }; + + groupTypes.close = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mclose"]); + }; + + groupTypes.inner = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["minner"]); + }; + + groupTypes.punct = function (group, options) { + return _buildCommon2.default.mathsym(group.value, group.mode, options, ["mpunct"]); + }; + + groupTypes.ordgroup = function (group, options) { + return (0, _buildCommon.makeSpan)(["mord"], buildExpression(group.value, options, true), options); + }; + + groupTypes.text = function (group, options) { + var newOptions = options.withFont(group.value.style); + var inner = buildExpression(group.value.body, newOptions, true); + for (var i = 0; i < inner.length - 1; i++) { + if (inner[i].tryCombine(inner[i + 1])) { + inner.splice(i + 1, 1); + i--; + } + } + return (0, _buildCommon.makeSpan)(["mord", "text"], inner, newOptions); + }; + + groupTypes.color = function (group, options) { + var elements = buildExpression(group.value.value, options.withColor(group.value.color), false); + + // \color isn't supposed to affect the type of the elements it contains. + // To accomplish this, we wrap the results in a fragment, so the inner + // elements will be able to directly interact with their neighbors. For + // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` + return new _buildCommon2.default.makeFragment(elements); + }; + + groupTypes.supsub = function (group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + if (shouldHandleSupSub(group, options)) { + return groupTypes[group.value.base.type](group, options); + } + + var base = buildGroup(group.value.base, options); + var supm = void 0; + var subm = void 0; + + var metrics = options.fontMetrics(); + var newOptions = void 0; + + // Rule 18a + var supShift = 0; + var subShift = 0; + + if (group.value.sup) { + newOptions = options.havingStyle(options.style.sup()); + supm = buildGroup(group.value.sup, newOptions, options); + if (!isCharacterBox(group.value.base)) { + supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + if (group.value.sub) { + newOptions = options.havingStyle(options.style.sub()); + subm = buildGroup(group.value.sub, newOptions, options); + if (!isCharacterBox(group.value.base)) { + subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier; + } + } + + // Rule 18c + var minSupShift = void 0; + if (options.style === _Style2.default.DISPLAY) { + minSupShift = metrics.sup1; + } else if (options.style.cramped) { + minSupShift = metrics.sup3; + } else { + minSupShift = metrics.sup2; + } + + // scriptspace is a font-size-independent size, so scale it + // appropriately + var multiplier = options.sizeMultiplier; + var scriptspace = 0.5 / metrics.ptPerEm / multiplier + "em"; + + var supsub = void 0; + if (!group.value.sup) { + // Rule 18b + subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight); + + var vlistElem = [{ type: "elem", elem: subm, marginRight: scriptspace }]; + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + if (base instanceof _domTree2.default.symbolNode) { + vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList(vlistElem, "shift", subShift, options); + } else if (!group.value.sub) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + + supsub = _buildCommon2.default.makeVList([{ type: "elem", elem: supm, marginRight: scriptspace }], "shift", -supShift, options); + } else { + supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight); + subShift = Math.max(subShift, metrics.sub2); + + var ruleWidth = metrics.defaultRuleThickness; + + // Rule 18e + if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) { + subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height; + var psi = 0.8 * metrics.xHeight - (supShift - supm.depth); + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + var _vlistElem = [{ type: "elem", elem: subm, shift: subShift, marginRight: scriptspace }, { type: "elem", elem: supm, shift: -supShift, marginRight: scriptspace }]; + // See comment above about subscripts not being shifted + if (base instanceof _domTree2.default.symbolNode) { + _vlistElem[0].marginLeft = -base.italic + "em"; + } + + supsub = _buildCommon2.default.makeVList(_vlistElem, "individualShift", null, options); + } + + // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align + var mclass = getTypeOfDomTree(base) || "mord"; + return (0, _buildCommon.makeSpan)([mclass], [base, (0, _buildCommon.makeSpan)(["msupsub"], [supsub])], options); + }; + + groupTypes.genfrac = function (group, options) { + // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). + // Figure out what style this fraction should be in based on the + // function used + var style = options.style; + if (group.value.size === "display") { + style = _Style2.default.DISPLAY; + } else if (group.value.size === "text") { + style = _Style2.default.TEXT; + } + + var nstyle = style.fracNum(); + var dstyle = style.fracDen(); + var newOptions = void 0; + + newOptions = options.havingStyle(nstyle); + var numerm = buildGroup(group.value.numer, newOptions, options); + + newOptions = options.havingStyle(dstyle); + var denomm = buildGroup(group.value.denom, newOptions, options); + + var rule = void 0; + var ruleWidth = void 0; + var ruleSpacing = void 0; + if (group.value.hasBarLine) { + rule = makeLineSpan("frac-line", options); + ruleWidth = rule.height; + ruleSpacing = rule.height; + } else { + rule = null; + ruleWidth = 0; + ruleSpacing = options.fontMetrics().defaultRuleThickness; + } + + // Rule 15b + var numShift = void 0; + var clearance = void 0; + var denomShift = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + numShift = options.fontMetrics().num1; + if (ruleWidth > 0) { + clearance = 3 * ruleSpacing; + } else { + clearance = 7 * ruleSpacing; + } + denomShift = options.fontMetrics().denom1; + } else { + if (ruleWidth > 0) { + numShift = options.fontMetrics().num2; + clearance = ruleSpacing; + } else { + numShift = options.fontMetrics().num3; + clearance = 3 * ruleSpacing; + } + denomShift = options.fontMetrics().denom2; + } + + var frac = void 0; + if (ruleWidth === 0) { + // Rule 15c + var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift); + if (candidateClearance < clearance) { + numShift += 0.5 * (clearance - candidateClearance); + denomShift += 0.5 * (clearance - candidateClearance); + } + + frac = _buildCommon2.default.makeVList([{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: numerm, shift: -numShift }], "individualShift", null, options); + } else { + // Rule 15d + var axisHeight = options.fontMetrics().axisHeight; + + if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) { + numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth)); + } + + if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) { + denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift)); + } + + var midShift = -(axisHeight - 0.5 * ruleWidth); + + frac = _buildCommon2.default.makeVList([{ type: "elem", elem: denomm, shift: denomShift }, { type: "elem", elem: rule, shift: midShift }, { type: "elem", elem: numerm, shift: -numShift }], "individualShift", null, options); + } + + // Since we manually change the style sometimes (with \dfrac or \tfrac), + // account for the possible size change here. + newOptions = options.havingStyle(style); + frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier; + frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; + + // Rule 15e + var delimSize = void 0; + if (style.size === _Style2.default.DISPLAY.size) { + delimSize = options.fontMetrics().delim1; + } else { + delimSize = options.fontMetrics().delim2; + } + + var leftDelim = void 0; + var rightDelim = void 0; + if (group.value.leftDelim == null) { + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + leftDelim = _delimiter2.default.customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]); + } + if (group.value.rightDelim == null) { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]); + } + + return (0, _buildCommon.makeSpan)(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, (0, _buildCommon.makeSpan)(["mfrac"], [frac]), rightDelim], options); + }; + + groupTypes.array = function (group, options) { + var r = void 0; + var c = void 0; + var nr = group.value.body.length; + var nc = 0; + var body = new Array(nr); + + // Horizontal spacing + var pt = 1 / options.fontMetrics().ptPerEm; + var arraycolsep = 5 * pt; // \arraycolsep in article.cls + + // Vertical spacing + var baselineskip = 12 * pt; // see size10.clo + // Default \jot from ltmath.dtx + // TODO(edemaine): allow overriding \jot via \setlength (#687) + var jot = 3 * pt; + // Default \arraystretch from lttab.dtx + // TODO(gagern): may get redefined once we have user-defined macros + var arraystretch = _utils2.default.deflt(group.value.arraystretch, 1); + var arrayskip = arraystretch * baselineskip; + var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + var totalHeight = 0; + for (r = 0; r < group.value.body.length; ++r) { + var inrow = group.value.body[r]; + var height = arstrutHeight; // \@array adds an \@arstrut + var depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + var outrow = new Array(inrow.length); + for (c = 0; c < inrow.length; ++c) { + var elt = buildGroup(inrow[c], options); + if (depth < elt.depth) { + depth = elt.depth; + } + if (height < elt.height) { + height = elt.height; + } + outrow[c] = elt; + } + + var gap = 0; + if (group.value.rowGaps[r]) { + gap = _units2.default.calculateSize(group.value.rowGaps[r].value, options); + if (gap > 0) { + // \@argarraycr + gap += arstrutDepth; + if (depth < gap) { + depth = gap; // \@xargarraycr + } + gap = 0; + } + } + // In AMS multiline environments such as aligned and gathered, rows + // correspond to lines that have additional \jot added to the + // \baselineskip via \openup. + if (group.value.addJot) { + depth += jot; + } + + outrow.height = height; + outrow.depth = depth; + totalHeight += height; + outrow.pos = totalHeight; + totalHeight += depth + gap; // \@yargarraycr + body[r] = outrow; + } + + var offset = totalHeight / 2 + options.fontMetrics().axisHeight; + var colDescriptions = group.value.cols || []; + var cols = []; + var colSep = void 0; + var colDescrNum = void 0; + for (c = 0, colDescrNum = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) { + + var colDescr = colDescriptions[colDescrNum] || {}; + + var firstSeparator = true; + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = options.fontMetrics().doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|") { + var separator = (0, _buildCommon.makeSpan)(["vertical-separator"], []); + separator.style.height = totalHeight + "em"; + separator.style.verticalAlign = -(totalHeight - offset) + "em"; + + cols.push(separator); + } else { + throw new _ParseError2.default("Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + var sepwidth = void 0; + if (c > 0 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.pregap, arraycolsep); + if (sepwidth !== 0) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + var col = []; + for (r = 0; r < nr; ++r) { + var row = body[r]; + var elem = row[c]; + if (!elem) { + continue; + } + var shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({ type: "elem", elem: elem, shift: shift }); + } + + col = _buildCommon2.default.makeVList(col, "individualShift", null, options); + col = (0, _buildCommon.makeSpan)(["col-align-" + (colDescr.align || "c")], [col]); + cols.push(col); + + if (c < nc - 1 || group.value.hskipBeforeAndAfter) { + sepwidth = _utils2.default.deflt(colDescr.postgap, arraycolsep); + if (sepwidth !== 0) { + colSep = (0, _buildCommon.makeSpan)(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + body = (0, _buildCommon.makeSpan)(["mtable"], cols); + return (0, _buildCommon.makeSpan)(["mord"], [body], options); + }; + + groupTypes.spacing = function (group, options) { + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + if (group.mode === "text") { + return _buildCommon2.default.makeOrd(group, options, "textord"); + } else { + return (0, _buildCommon.makeSpan)(["mspace"], [_buildCommon2.default.mathsym(group.value, group.mode, options)], options); + } + } else { + // Other kinds of spaces are of arbitrary width. We use CSS to + // generate these. + return (0, _buildCommon.makeSpan)(["mspace", _buildCommon2.default.spacingFunctions[group.value].className], [], options); + } + }; + + groupTypes.llap = function (group, options) { + var inner = (0, _buildCommon.makeSpan)(["inner"], [buildGroup(group.value.body, options)]); + var fix = (0, _buildCommon.makeSpan)(["fix"], []); + return (0, _buildCommon.makeSpan)(["mord", "llap"], [inner, fix], options); + }; + + groupTypes.rlap = function (group, options) { + var inner = (0, _buildCommon.makeSpan)(["inner"], [buildGroup(group.value.body, options)]); + var fix = (0, _buildCommon.makeSpan)(["fix"], []); + return (0, _buildCommon.makeSpan)(["mord", "rlap"], [inner, fix], options); + }; + + groupTypes.op = function (group, options) { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + var supGroup = void 0; + var subGroup = void 0; + var hasLimits = false; + if (group.type === "supsub") { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = group.value.sup; + subGroup = group.value.sub; + group = group.value.base; + hasLimits = true; + } + + var style = options.style; + + // Most operators have a large successor symbol, but these don't. + var noSuccessor = ["\\smallint"]; + + var large = false; + if (style.size === _Style2.default.DISPLAY.size && group.value.symbol && !_utils2.default.contains(noSuccessor, group.value.body)) { + + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + var base = void 0; + if (group.value.symbol) { + // If this is a symbol, create the symbol. + var fontName = large ? "Size2-Regular" : "Size1-Regular"; + base = _buildCommon2.default.makeSymbol(group.value.body, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]); + } else if (group.value.value) { + // If this is a list, compose that list. + var inner = buildExpression(group.value.value, options, true); + if (inner.length === 1 && inner[0] instanceof _domTree2.default.symbolNode) { + base = inner[0]; + base.classes[0] = "mop"; // replace old mclass + } else { + base = (0, _buildCommon.makeSpan)(["mop"], inner, options); + } + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + var output = []; + for (var i = 1; i < group.value.body.length; i++) { + output.push(_buildCommon2.default.mathsym(group.value.body[i], group.mode)); + } + base = (0, _buildCommon.makeSpan)(["mop"], output, options); + } + + // If content of op is a single symbol, shift it vertically. + var baseShift = 0; + var slant = 0; + if (base instanceof _domTree2.default.symbolNode) { + // Shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; + + // The slant of the symbol is just its italic correction. + slant = base.italic; + } + + if (hasLimits) { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = (0, _buildCommon.makeSpan)([], [base]); + + var supm = void 0; + var supKern = void 0; + var subm = void 0; + var subKern = void 0; + var newOptions = void 0; + // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + if (supGroup) { + newOptions = options.havingStyle(style.sup()); + supm = buildGroup(supGroup, newOptions, options); + + supKern = Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - supm.depth); + } + + if (subGroup) { + newOptions = options.havingStyle(style.sub()); + subm = buildGroup(subGroup, newOptions, options); + + subKern = Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - subm.height); + } + + // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + var finalGroup = void 0; + var top = void 0; + var bottom = void 0; + if (!supGroup) { + top = base.height - baseShift; + + // Shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + finalGroup = _buildCommon2.default.makeVList([{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: subm, marginLeft: -slant + "em" }, { type: "kern", size: subKern }, { type: "elem", elem: base }], "top", top, options); + } else if (!subGroup) { + bottom = base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList([{ type: "elem", elem: base }, { type: "kern", size: supKern }, { type: "elem", elem: supm, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }], "bottom", bottom, options); + } else if (!supGroup && !subGroup) { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } else { + bottom = options.fontMetrics().bigOpSpacing5 + subm.height + subm.depth + subKern + base.depth + baseShift; + + finalGroup = _buildCommon2.default.makeVList([{ type: "kern", size: options.fontMetrics().bigOpSpacing5 }, { type: "elem", elem: subm, marginLeft: -slant + "em" }, { type: "kern", size: subKern }, { type: "elem", elem: base }, { type: "kern", size: supKern }, { type: "elem", elem: supm, marginLeft: slant + "em" }, { type: "kern", size: options.fontMetrics().bigOpSpacing5 }], "bottom", bottom, options); + } + + return (0, _buildCommon.makeSpan)(["mop", "op-limits"], [finalGroup], options); + } else { + if (baseShift) { + base.style.position = "relative"; + base.style.top = baseShift + "em"; + } + + return base; + } + }; + + groupTypes.mod = function (group, options) { + var inner = []; + + if (group.value.modType === "bmod") { + // “\nonscript\mskip-\medmuskip\mkern5mu” + if (!options.style.isTight()) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "negativemediumspace"], [], options)); + } + inner.push((0, _buildCommon.makeSpan)(["mspace", "thickspace"], [], options)); + } else if (options.style.size === _Style2.default.DISPLAY.size) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "quad"], [], options)); + } else if (group.value.modType === "mod") { + inner.push((0, _buildCommon.makeSpan)(["mspace", "twelvemuspace"], [], options)); + } else { + inner.push((0, _buildCommon.makeSpan)(["mspace", "eightmuspace"], [], options)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym("(", group.mode)); + } + + if (group.value.modType !== "pod") { + var modInner = [_buildCommon2.default.mathsym("m", group.mode), _buildCommon2.default.mathsym("o", group.mode), _buildCommon2.default.mathsym("d", group.mode)]; + if (group.value.modType === "bmod") { + inner.push((0, _buildCommon.makeSpan)(["mbin"], modInner, options)); + // “\mkern5mu\nonscript\mskip-\medmuskip” + inner.push((0, _buildCommon.makeSpan)(["mspace", "thickspace"], [], options)); + if (!options.style.isTight()) { + inner.push((0, _buildCommon.makeSpan)(["mspace", "negativemediumspace"], [], options)); + } + } else { + Array.prototype.push.apply(inner, modInner); + inner.push((0, _buildCommon.makeSpan)(["mspace", "sixmuspace"], [], options)); + } + } + + if (group.value.value) { + Array.prototype.push.apply(inner, buildExpression(group.value.value, options, false)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(_buildCommon2.default.mathsym(")", group.mode)); + } + + return _buildCommon2.default.makeFragment(inner); + }; + + groupTypes.katex = function (group, options) { + // The KaTeX logo. The offsets for the K and a were chosen to look + // good, but the offsets for the T, E, and X were taken from the + // definition of \TeX in TeX (see TeXbook pg. 356) + var k = (0, _buildCommon.makeSpan)(["k"], [_buildCommon2.default.mathsym("K", group.mode)], options); + var a = (0, _buildCommon.makeSpan)(["a"], [_buildCommon2.default.mathsym("A", group.mode)], options); + + a.height = (a.height + 0.2) * 0.75; + a.depth = (a.height - 0.2) * 0.75; + + var t = (0, _buildCommon.makeSpan)(["t"], [_buildCommon2.default.mathsym("T", group.mode)], options); + var e = (0, _buildCommon.makeSpan)(["e"], [_buildCommon2.default.mathsym("E", group.mode)], options); + + e.height = e.height - 0.2155; + e.depth = e.depth + 0.2155; + + var x = (0, _buildCommon.makeSpan)(["x"], [_buildCommon2.default.mathsym("X", group.mode)], options); + + return (0, _buildCommon.makeSpan)(["mord", "katex-logo"], [k, a, t, e, x], options); + }; + + var makeLineSpan = function makeLineSpan(className, options, thickness) { + var line = (0, _buildCommon.makeSpan)([className], [], options); + line.height = thickness || options.fontMetrics().defaultRuleThickness; + line.style.borderBottomWidth = line.height + "em"; + line.maxFontSize = 1.0; + return line; + }; + + groupTypes.overline = function (group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. + + // Build the inner group in the cramped style. + var innerGroup = buildGroup(group.value.body, options.havingCrampedStyle()); + + // Create the line above the body + var line = makeLineSpan("overline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: innerGroup }, { type: "kern", size: 3 * line.height }, { type: "elem", elem: line }, { type: "kern", size: line.height }], "firstBaseline", null, options); + + return (0, _buildCommon.makeSpan)(["mord", "overline"], [vlist], options); + }; + + groupTypes.underline = function (group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + // Build the inner group. + var innerGroup = buildGroup(group.value.body, options); + + // Create the line above the body + var line = makeLineSpan("underline-line", options); + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "kern", size: line.height }, { type: "elem", elem: line }, { type: "kern", size: 3 * line.height }, { type: "elem", elem: innerGroup }], "top", innerGroup.height, options); + + return (0, _buildCommon.makeSpan)(["mord", "underline"], [vlist], options); + }; + + groupTypes.sqrt = function (group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + + // First, we do the same steps as in overline to build the inner group + // and line + var inner = buildGroup(group.value.body, options.havingCrampedStyle()); + + // Some groups can return document fragments. Handle those by wrapping + // them in a span. + if (inner instanceof _domTree2.default.documentFragment) { + inner = (0, _buildCommon.makeSpan)([], [inner], options); + } + + // Calculate the minimum size for the \surd delimiter + var metrics = options.fontMetrics(); + var theta = metrics.defaultRuleThickness; + + var phi = theta; + if (options.style.id < _Style2.default.TEXT.id) { + phi = options.fontMetrics().xHeight; + } + + // Calculate the clearance between the body and line + var lineClearance = theta + phi / 4; + + var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier; + + // Create a sqrt SVG of the required minimum size + var img = _delimiter2.default.customSizedDelim("\\surd", minDelimiterHeight, false, options, group.mode); + + // Calculate the actual line width. + // This actually should depend on the chosen font -- e.g. \boldmath + // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and + // have thicker rules. + var ruleWidth = options.fontMetrics().sqrtRuleThickness * img.sizeMultiplier; + + var delimDepth = img.height - ruleWidth; + + // Adjust the clearance based on the delimiter size + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } + + // Shift the sqrt image + var imgShift = img.height - inner.height - lineClearance - ruleWidth; + + // We add a special case here, because even when `inner` is empty, we + // still get a line. So, we use a simple heuristic to decide if we + // should omit the body entirely. (note this doesn't work for something + // like `\sqrt{\rlap{x}}`, but if someone is doing that they deserve for + // it not to work. + var body = void 0; + if (inner.height === 0 && inner.depth === 0) { + body = (0, _buildCommon.makeSpan)(); + } else { + inner.style.paddingLeft = img.surdWidth + "em"; + + // Overlay the image and the argument. + body = _buildCommon2.default.makeVList([{ type: "elem", elem: inner }, { type: "kern", size: -(inner.height + imgShift) }, { type: "elem", elem: img }, { type: "kern", size: ruleWidth }], "firstBaseline", null, options); + body.children[0].children[0].classes.push("svg-align"); + } + + if (!group.value.index) { + return (0, _buildCommon.makeSpan)(["mord", "sqrt"], [body], options); + } else { + // Handle the optional root index + + // The index is always in scriptscript style + var newOptions = options.havingStyle(_Style2.default.SCRIPTSCRIPT); + var rootm = buildGroup(group.value.index, newOptions, options); + + // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + var toShift = 0.6 * (body.height - body.depth); + + // Build a VList with the superscript shifted up correctly + var rootVList = _buildCommon2.default.makeVList([{ type: "elem", elem: rootm }], "shift", -toShift, options); + // Add a class surrounding it so we can add on the appropriate + // kerning + var rootVListWrap = (0, _buildCommon.makeSpan)(["root"], [rootVList]); + + return (0, _buildCommon.makeSpan)(["mord", "sqrt"], [rootVListWrap, body], options); + } + }; + + function sizingGroup(value, options, baseOptions) { + var inner = buildExpression(value, options, false); + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + for (var i = 0; i < inner.length; i++) { + var pos = _utils2.default.indexOf(inner[i].classes, "sizing"); + if (pos < 0) { + Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions)); + } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-size" + baseOptions.size; + } + + inner[i].height *= multiplier; + inner[i].depth *= multiplier; + } + + return _buildCommon2.default.makeFragment(inner); + } + + groupTypes.sizing = function (group, options) { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + var newOptions = options.havingSize(group.value.size); + return sizingGroup(group.value.value, newOptions, options); + }; + + groupTypes.styling = function (group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + + // Figure out what style we're changing to. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + return sizingGroup(group.value.value, newOptions, options); + }; + + groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFont(font)); + }; + + groupTypes.delimsizing = function (group, options) { + var delim = group.value.value; + + if (delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return (0, _buildCommon.makeSpan)([group.value.mclass]); + } + + // Use delimiter.sizedDelim to generate the delimiter. + return _delimiter2.default.sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]); + }; + + groupTypes.leftright = function (group, options) { + // Build the inner expression + var inner = buildExpression(group.value.body, options, true); + + var innerHeight = 0; + var innerDepth = 0; + var hadMiddle = false; + + // Calculate its height and depth + for (var i = 0; i < inner.length; i++) { + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } + + // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + innerHeight *= options.sizeMultiplier; + innerDepth *= options.sizeMultiplier; + + var leftDelim = void 0; + if (group.value.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = _delimiter2.default.leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, ["mopen"]); + } + // Add it to the beginning of the expression + inner.unshift(leftDelim); + + // Handle middle delimiters + if (hadMiddle) { + for (var _i4 = 1; _i4 < inner.length; _i4++) { + var middleDelim = inner[_i4]; + if (middleDelim.isMiddle) { + // Apply the options that were active when \middle was called + inner[_i4] = _delimiter2.default.leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []); + // Add back spaces shifted into the delimiter + var spaces = spliceSpaces(middleDelim.children, 0); + if (spaces) { + _buildCommon2.default.prependChildren(inner[_i4], spaces); + } + } + } + } + + var rightDelim = void 0; + // Same for the right delimiter + if (group.value.right === ".") { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = _delimiter2.default.leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, ["mclose"]); + } + // Add it to the end of the expression. + inner.push(rightDelim); + + return (0, _buildCommon.makeSpan)(["minner"], inner, options); + }; + + groupTypes.middle = function (group, options) { + var middleDelim = void 0; + if (group.value.value === ".") { + middleDelim = makeNullDelimiter(options, []); + } else { + middleDelim = _delimiter2.default.sizedDelim(group.value.value, 1, options, group.mode, []); + middleDelim.isMiddle = { value: group.value.value, options: options }; + } + return middleDelim; + }; + + groupTypes.rule = function (group, options) { + // Make an empty span for the rule + var rule = (0, _buildCommon.makeSpan)(["mord", "rule"], [], options); + + // Calculate the shift, width, and height of the rule, and account for units + var shift = 0; + if (group.value.shift) { + shift = _units2.default.calculateSize(group.value.shift, options); + } + + var width = _units2.default.calculateSize(group.value.width, options); + var height = _units2.default.calculateSize(group.value.height, options); + + // Style the rule to the right size + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; + + // Record the height and width + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; + // Font size is the number large enough that the browser will + // reserve at least `absHeight` space above the baseline. + // The 1.125 factor was empirically determined + rule.maxFontSize = height * 1.125 * options.sizeMultiplier; + + return rule; + }; + + groupTypes.kern = function (group, options) { + // Make an empty span for the rule + var rule = (0, _buildCommon.makeSpan)(["mord", "rule"], [], options); + + if (group.value.dimension) { + var dimension = _units2.default.calculateSize(group.value.dimension, options); + rule.style.marginLeft = dimension + "em"; + } + + return rule; + }; + + groupTypes.accent = function (group, options) { + // Accents are handled in the TeXbook pg. 443, rule 12. + var base = group.value.base; + + var supsubGroup = void 0; + if (group.type === "supsub") { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + + // The supsub group is the group that was passed in + var supsub = group; + // The real accent group is the base of the supsub group + group = supsub.value.base; + // The character box is the base of the accent group + base = group.value.base; + // Stick the character box into the base of the supsub group + supsub.value.base = base; + + // Rerender the supsub group with its new base, and store that + // result. + supsubGroup = buildGroup(supsub, options); + } + + // Build the base group + var body = buildGroup(base, options.havingCrampedStyle()); + + // Does the accent need to shift for the skew of a character? + var mustShift = group.value.isShifty && isCharacterBox(base); + + // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + var skew = 0; + if (mustShift) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + var baseChar = getBaseElem(base); + // Then, we render its group to get the symbol inside it + var baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); + // Finally, we pull the skew off of the symbol. + skew = baseGroup.skew; + // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } + + // calculate the amount of space between the body and the accent + var clearance = Math.min(body.height, options.fontMetrics().xHeight); + + // Build the accent + var accentBody = void 0; + if (!group.value.isStretchy) { + var accent = _buildCommon2.default.makeSymbol(group.value.label, "Main-Regular", group.mode, options); + // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + accent.italic = 0; + + // The \vec character that the fonts use is a combining character, and + // thus shows up much too far to the left. To account for this, we add a + // specific class which shifts the accent over to where we want it. + // TODO(emily): Fix this in a better way, like by changing the font + // Similarly, text accent \H is a combining character and + // requires a different adjustment. + var accentClass = null; + if (group.value.label === "\\vec") { + accentClass = "accent-vec"; + } else if (group.value.label === '\\H') { + accentClass = "accent-hungarian"; + } + + accentBody = (0, _buildCommon.makeSpan)([], [accent]); + accentBody = (0, _buildCommon.makeSpan)(["accent-body", accentClass], [accentBody]); + + // Shift the accent over by the skew. Note we shift by twice the skew + // because we are centering the accent, so by adding 2*skew to the left, + // we shift it to the right by 1*skew. + accentBody.style.marginLeft = 2 * skew + "em"; + + accentBody = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "kern", size: -clearance }, { type: "elem", elem: accentBody }], "firstBaseline", null, options); + } else { + accentBody = _stretchy2.default.svgSpan(group, options); + + accentBody = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "elem", elem: accentBody }], "firstBaseline", null, options); + + var styleSpan = accentBody.children[0].children[0].children[1]; + styleSpan.classes.push("svg-align"); // text-align: left; + if (skew > 0) { + // Shorten the accent and nudge it to the right. + styleSpan.style.width = "calc(100% - " + 2 * skew + "em)"; + styleSpan.style.marginLeft = 2 * skew + "em"; + } + } + + var accentWrap = (0, _buildCommon.makeSpan)(["mord", "accent"], [accentBody], options); + + if (supsubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supsubGroup.children[0] = accentWrap; + + // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); + + // Accents should always be ords, even when their innards are not. + supsubGroup.classes[0] = "mord"; + + return supsubGroup; + } else { + return accentWrap; + } + }; + + groupTypes.horizBrace = function (group, options) { + var style = options.style; + + var hasSupSub = group.type === "supsub"; + var supSubGroup = void 0; + var newOptions = void 0; + if (hasSupSub) { + // Ref: LaTeX source2e: }}}}\limits} + // i.e. LaTeX treats the brace similar to an op and passes it + // with \limits, so we need to assign supsub style. + if (group.value.sup) { + newOptions = options.havingStyle(style.sup()); + supSubGroup = buildGroup(group.value.sup, newOptions, options); + } else { + newOptions = options.havingStyle(style.sub()); + supSubGroup = buildGroup(group.value.sub, newOptions, options); + } + group = group.value.base; + } + + // Build the base group + var body = buildGroup(group.value.base, options.havingBaseStyle(_Style2.default.DISPLAY)); + + // Create the stretchy element + var braceBody = _stretchy2.default.svgSpan(group, options); + + // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓ + // This first vlist contains the subject matter and the brace: equation + var vlist = void 0; + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: body }, { type: "kern", size: 0.1 }, { type: "elem", elem: braceBody }], "firstBaseline", null, options); + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: braceBody }, { type: "kern", size: 0.1 }, { type: "elem", elem: body }], "bottom", body.depth + 0.1 + braceBody.height, options); + vlist.children[0].children[0].children[0].classes.push("svg-align"); + } + + if (hasSupSub) { + // In order to write the supsub, wrap the first vlist in another vlist: + // They can't all go in the same vlist, because the note might be wider + // than the equation. We want the equation to control the brace width. + + // note long note long note + // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓ + // equation eqn eqn + + var vSpan = (0, _buildCommon.makeSpan)(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); + + if (group.value.isOver) { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: vSpan }, { type: "kern", size: 0.2 }, { type: "elem", elem: supSubGroup }], "firstBaseline", null, options); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: supSubGroup }, { type: "kern", size: 0.2 }, { type: "elem", elem: vSpan }], "bottom", vSpan.depth + 0.2 + supSubGroup.height, options); + } + } + + return (0, _buildCommon.makeSpan)(["mord", group.value.isOver ? "mover" : "munder"], [vlist], options); + }; + + groupTypes.accentUnder = function (group, options) { + // Treat under accents much like underlines. + var innerGroup = buildGroup(group.value.body, options); + + var accentBody = _stretchy2.default.svgSpan(group, options); + var kern = /tilde/.test(group.value.label) ? 0.12 : 0; + + // Generate the vlist, with the appropriate kerns + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: accentBody }, { type: "kern", size: kern }, { type: "elem", elem: innerGroup }], "bottom", accentBody.height + kern, options); + + vlist.children[0].children[0].children[0].classes.push("svg-align"); + + return (0, _buildCommon.makeSpan)(["mord", "accentunder"], [vlist], options); + }; + + groupTypes.enclose = function (group, options) { + // \cancel, \bcancel, \xcancel, \sout, \fbox + var inner = buildGroup(group.value.body, options); + + var label = group.value.label.substr(1); + var scale = options.sizeMultiplier; + var img = void 0; + var pad = 0; + var imgShift = 0; + + if (label === "sout") { + img = (0, _buildCommon.makeSpan)(["stretchy", "sout"]); + img.height = options.fontMetrics().defaultRuleThickness / scale; + imgShift = -0.5 * options.fontMetrics().xHeight; + } else { + // Add horizontal padding + inner.classes.push(label === "fbox" ? "boxpad" : "cancel-pad"); + + // Add vertical padding + var isCharBox = isCharacterBox(group.value.body); + // ref: LaTeX source2e: \fboxsep = 3pt; \fboxrule = .4pt + // ref: cancel package: \advance\totalheight2\p@ % "+2" + pad = label === "fbox" ? 0.34 : isCharBox ? 0.2 : 0; + imgShift = inner.depth + pad; + + img = _stretchy2.default.encloseSpan(inner, label, pad, options); + } + + var vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: inner, shift: 0 }, { type: "elem", elem: img, shift: imgShift }], "individualShift", null, options); + + if (label !== "fbox") { + vlist.children[0].children[0].children[1].classes.push("svg-align"); + } + + if (/cancel/.test(label)) { + // cancel does not create horiz space for its line extension. + // That is, not when adjacent to a mord. + return (0, _buildCommon.makeSpan)(["mord", "cancel-lap"], [vlist], options); + } else { + return (0, _buildCommon.makeSpan)(["mord"], [vlist], options); + } + }; + + groupTypes.xArrow = function (group, options) { + var style = options.style; + + // Build the argument groups in the appropriate style. + // Ref: amsmath.dtx: \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + + var newOptions = options.havingStyle(style.sup()); + var upperGroup = buildGroup(group.value.body, newOptions, options); + upperGroup.classes.push("x-arrow-pad"); + + var lowerGroup = void 0; + if (group.value.below) { + // Build the lower group + newOptions = options.havingStyle(style.sub()); + lowerGroup = buildGroup(group.value.below, newOptions, options); + lowerGroup.classes.push("x-arrow-pad"); + } + + var arrowBody = _stretchy2.default.svgSpan(group, options); + + var arrowShift = -options.fontMetrics().axisHeight + arrowBody.depth; + var upperShift = -options.fontMetrics().axisHeight - arrowBody.height - 0.111; // 2 mu. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi + + // Generate the vlist + var vlist = void 0; + if (group.value.below) { + var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + arrowBody.height + 0.111; + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }, { type: "elem", elem: lowerGroup, shift: lowerShift }], "individualShift", null, options); + } else { + vlist = _buildCommon2.default.makeVList([{ type: "elem", elem: upperGroup, shift: upperShift }, { type: "elem", elem: arrowBody, shift: arrowShift }], "individualShift", null, options); + } + + vlist.children[0].children[0].children[1].classes.push("svg-align"); + + return (0, _buildCommon.makeSpan)(["mrel", "x-arrow"], [vlist], options); + }; + + groupTypes.phantom = function (group, options) { + var elements = buildExpression(group.value.value, options.withPhantom(), false); + + // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + return new _buildCommon2.default.makeFragment(elements); + }; + + groupTypes.mclass = function (group, options) { + var elements = buildExpression(group.value.value, options, true); + + return (0, _buildCommon.makeSpan)([group.value.mclass], elements, options); + }; + + /** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ + var buildGroup = function buildGroup(group, options, baseOptions) { + if (!group) { + return (0, _buildCommon.makeSpan)(); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var groupNode = groupTypes[group.type](group, options); + + // If the size changed between the parent and the current group, account + // for that size difference. + if (baseOptions && options.size !== baseOptions.size) { + groupNode = (0, _buildCommon.makeSpan)(options.sizingClasses(baseOptions), [groupNode], options); + + var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } + }; + + /** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ + var buildHTML = function buildHTML(tree, options) { + // buildExpression is destructive, so we need to make a clone + // of the incoming tree so that it isn't accidentally changed + tree = JSON.parse((0, _stringify2.default)(tree)); + + // Build the expression contained in the tree + var expression = buildExpression(tree, options, true); + var body = (0, _buildCommon.makeSpan)(["base"], expression, options); + + // Add struts, which ensure that the top of the HTML element falls at the + // height of the expression, and the bottom of the HTML element falls at the + // depth of the expression. + var topStrut = (0, _buildCommon.makeSpan)(["strut"]); + var bottomStrut = (0, _buildCommon.makeSpan)(["strut", "bottom"]); + + topStrut.style.height = body.height + "em"; + bottomStrut.style.height = body.height + body.depth + "em"; + // We'd like to use `vertical-align: top` but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead staying in the + // normal place) so we use an absolute value for vertical-align instead + bottomStrut.style.verticalAlign = -body.depth + "em"; + + // Wrap the struts and body together + var htmlNode = (0, _buildCommon.makeSpan)(["katex-html"], [topStrut, bottomStrut, body]); + + htmlNode.setAttribute("aria-hidden", "true"); + + return htmlNode; + }; + + module.exports = buildHTML; + + },{"./ParseError":29,"./Style":33,"./buildCommon":34,"./delimiter":38,"./domTree":39,"./stretchy":47,"./units":50,"./utils":51,"babel-runtime/core-js/json/stringify":2}],36:[function(require,module,exports){ + + var _buildCommon = require("./buildCommon"); + + var _buildCommon2 = _interopRequireDefault(_buildCommon); + + var _fontMetrics = require("./fontMetrics"); + + var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + + var _mathMLTree = require("./mathMLTree"); + + var _mathMLTree2 = _interopRequireDefault(_mathMLTree); + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + var _Style = require("./Style"); + + var _Style2 = _interopRequireDefault(_Style); + + var _symbols = require("./symbols"); + + var _symbols2 = _interopRequireDefault(_symbols); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + var _stretchy = require("./stretchy"); + + var _stretchy2 = _interopRequireDefault(_stretchy); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ + /** + * This file converts a parse tree into a cooresponding MathML tree. The main + * entry point is the `buildMathML` function, which takes a parse tree from the + * parser. + */ + + var makeText = function makeText(text, mode) { + if (_symbols2.default[mode][text] && _symbols2.default[mode][text].replace) { + text = _symbols2.default[mode][text].replace; + } + + return new _mathMLTree2.default.TextNode(text); + }; + + /** + * Returns the math variant as a string or null if none is required. + */ + var getVariant = function getVariant(group, options) { + var font = options.font; + if (!font) { + return null; + } + + var mode = group.mode; + if (font === "mathit") { + return "italic"; + } + + var value = group.value; + if (_utils2.default.contains(["\\imath", "\\jmath"], value)) { + return null; + } + + if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) { + value = _symbols2.default[mode][value].replace; + } + + var fontName = _buildCommon.fontMap[font].fontName; + if (_fontMetrics2.default.getCharacterMetrics(value, fontName)) { + return _buildCommon.fontMap[options.font].variant; + } + + return null; + }; + + /** + * Functions for handling the different types of groups found in the parse + * tree. Each function should take a parse group and return a MathML node. + */ + var groupTypes = {}; + + var defaultVariant = { + "mi": "italic", + "mn": "normal", + "mtext": "normal" + }; + + groupTypes.mathord = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mi", [makeText(group.value, group.mode)]); + + var variant = getVariant(group, options) || "italic"; + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + return node; + }; + + groupTypes.textord = function (group, options) { + var text = makeText(group.value, group.mode); + + var variant = getVariant(group, options) || "normal"; + + var node = void 0; + if (group.mode === 'text') { + node = new _mathMLTree2.default.MathNode("mtext", [text]); + } else if (/[0-9]/.test(group.value)) { + // TODO(kevinb) merge adjacent nodes + // do it as a post processing step + node = new _mathMLTree2.default.MathNode("mn", [text]); + } else if (group.value === "\\prime") { + node = new _mathMLTree2.default.MathNode("mo", [text]); + } else { + node = new _mathMLTree2.default.MathNode("mi", [text]); + } + if (variant !== defaultVariant[node.type]) { + node.setAttribute("mathvariant", variant); + } + + return node; + }; + + groupTypes.bin = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; + }; + + groupTypes.rel = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; + }; + + groupTypes.open = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; + }; + + groupTypes.close = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; + }; + + groupTypes.inner = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + return node; + }; + + groupTypes.punct = function (group) { + var node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value, group.mode)]); + + node.setAttribute("separator", "true"); + + return node; + }; + + groupTypes.ordgroup = function (group, options) { + var inner = buildExpression(group.value, options); + + var node = new _mathMLTree2.default.MathNode("mrow", inner); + + return node; + }; + + groupTypes.text = function (group, options) { + var body = group.value.body; + + // Convert each element of the body into MathML, and combine consecutive + // outputs into a single tag. In this way, we don't + // nest non-text items (e.g., $nested-math$) within an . + var inner = []; + var currentText = null; + for (var i = 0; i < body.length; i++) { + var _group = buildGroup(body[i], options); + if (_group.type === 'mtext' && currentText != null) { + Array.prototype.push.apply(currentText.children, _group.children); + } else { + inner.push(_group); + if (_group.type === 'mtext') { + currentText = _group; + } + } + } + + // If there is a single tag in the end (presumably ), + // just return it. Otherwise, wrap them in an . + if (inner.length === 1) { + return inner[0]; + } else { + return new _mathMLTree2.default.MathNode("mrow", inner); + } + }; + + groupTypes.color = function (group, options) { + var inner = buildExpression(group.value.value, options); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + node.setAttribute("mathcolor", group.value.color); + + return node; + }; + + groupTypes.supsub = function (group, options) { + // Is the inner group a relevant horizonal brace? + var isBrace = false; + var isOver = void 0; + var isSup = void 0; + if (group.value.base) { + if (group.value.base.value.type === "horizBrace") { + isSup = group.value.sup ? true : false; + if (isSup === group.value.base.value.isOver) { + isBrace = true; + isOver = group.value.base.value.isOver; + } + } + } + + var removeUnnecessaryRow = true; + var children = [buildGroup(group.value.base, options, removeUnnecessaryRow)]; + + if (group.value.sub) { + children.push(buildGroup(group.value.sub, options, removeUnnecessaryRow)); + } + + if (group.value.sup) { + children.push(buildGroup(group.value.sup, options, removeUnnecessaryRow)); + } + + var nodeType = void 0; + if (isBrace) { + nodeType = isOver ? "mover" : "munder"; + } else if (!group.value.sub) { + nodeType = "msup"; + } else if (!group.value.sup) { + nodeType = "msub"; + } else { + var base = group.value.base; + if (base && base.value.limits && options.style === _Style2.default.DISPLAY) { + nodeType = "munderover"; + } else { + nodeType = "msubsup"; + } + } + + var node = new _mathMLTree2.default.MathNode(nodeType, children); + + return node; + }; + + groupTypes.genfrac = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mfrac", [buildGroup(group.value.numer, options), buildGroup(group.value.denom, options)]); + + if (!group.value.hasBarLine) { + node.setAttribute("linethickness", "0px"); + } + + if (group.value.leftDelim != null || group.value.rightDelim != null) { + var withDelims = []; + + if (group.value.leftDelim != null) { + var leftOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.leftDelim)]); + + leftOp.setAttribute("fence", "true"); + + withDelims.push(leftOp); + } + + withDelims.push(node); + + if (group.value.rightDelim != null) { + var rightOp = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode(group.value.rightDelim)]); + + rightOp.setAttribute("fence", "true"); + + withDelims.push(rightOp); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", withDelims); + + return outerNode; + } + + return node; + }; + + groupTypes.array = function (group, options) { + return new _mathMLTree2.default.MathNode("mtable", group.value.body.map(function (row) { + return new _mathMLTree2.default.MathNode("mtr", row.map(function (cell) { + return new _mathMLTree2.default.MathNode("mtd", [buildGroup(cell, options)]); + })); + })); + }; + + groupTypes.sqrt = function (group, options) { + var node = void 0; + if (group.value.index) { + node = new _mathMLTree2.default.MathNode("mroot", [buildGroup(group.value.body, options), buildGroup(group.value.index, options)]); + } else { + node = new _mathMLTree2.default.MathNode("msqrt", [buildGroup(group.value.body, options)]); + } + + return node; + }; + + groupTypes.leftright = function (group, options) { + var inner = buildExpression(group.value.body, options); + + if (group.value.left !== ".") { + var leftNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.left, group.mode)]); + + leftNode.setAttribute("fence", "true"); + + inner.unshift(leftNode); + } + + if (group.value.right !== ".") { + var rightNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.right, group.mode)]); + + rightNode.setAttribute("fence", "true"); + + inner.push(rightNode); + } + + var outerNode = new _mathMLTree2.default.MathNode("mrow", inner); + + return outerNode; + }; + + groupTypes.middle = function (group, options) { + var middleNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.middle, group.mode)]); + middleNode.setAttribute("fence", "true"); + return middleNode; + }; + + groupTypes.accent = function (group, options) { + var accentNode = void 0; + if (group.value.isStretchy) { + accentNode = _stretchy2.default.mathMLnode(group.value.label); + } else { + accentNode = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.label, group.mode)]); + } + + var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.base, options), accentNode]); + + node.setAttribute("accent", "true"); + + return node; + }; + + groupTypes.spacing = function (group) { + var node = void 0; + + if (group.value === "\\ " || group.value === "\\space" || group.value === " " || group.value === "~") { + node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("\xA0")]); + } else { + node = new _mathMLTree2.default.MathNode("mspace"); + + node.setAttribute("width", _buildCommon2.default.spacingFunctions[group.value].size); + } + + return node; + }; + + groupTypes.op = function (group, options) { + var node = void 0; + + // TODO(emily): handle big operators using the `largeop` attribute + + if (group.value.symbol) { + // This is a symbol. Just add the symbol. + node = new _mathMLTree2.default.MathNode("mo", [makeText(group.value.body, group.mode)]); + } else if (group.value.value) { + // This is an operator with children. Add them. + node = new _mathMLTree2.default.MathNode("mo", buildExpression(group.value.value, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup. + node = new _mathMLTree2.default.MathNode("mi", [new _mathMLTree2.default.TextNode(group.value.body.slice(1))]); + } + + return node; + }; + + groupTypes.mod = function (group, options) { + var inner = []; + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText("(", group.mode)])); + } + if (group.value.modType !== "pod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText("mod", group.mode)])); + } + if (group.value.value) { + var space = new _mathMLTree2.default.MathNode("mspace"); + space.setAttribute("width", "0.333333em"); + inner.push(space); + inner = inner.concat(buildExpression(group.value.value, options)); + } + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new _mathMLTree2.default.MathNode("mo", [makeText(")", group.mode)])); + } + + return new _mathMLTree2.default.MathNode("mo", inner); + }; + + groupTypes.katex = function (group) { + var node = new _mathMLTree2.default.MathNode("mtext", [new _mathMLTree2.default.TextNode("KaTeX")]); + + return node; + }; + + groupTypes.font = function (group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFont(font)); + }; + + groupTypes.delimsizing = function (group) { + var children = []; + + if (group.value.value !== ".") { + children.push(makeText(group.value.value, group.mode)); + } + + var node = new _mathMLTree2.default.MathNode("mo", children); + + if (group.value.mclass === "mopen" || group.value.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } + + return node; + }; + + groupTypes.styling = function (group, options) { + // Figure out what style we're changing to. + // TODO(kevinb): dedupe this with buildHTML.js + // This will be easier of handling of styling nodes is in the same file. + var styleMap = { + "display": _Style2.default.DISPLAY, + "text": _Style2.default.TEXT, + "script": _Style2.default.SCRIPT, + "scriptscript": _Style2.default.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.havingStyle(newStyle); + + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + var styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + + var attr = styleAttributes[group.value.style]; + + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + + return node; + }; + + groupTypes.sizing = function (group, options) { + var newOptions = options.havingSize(group.value.size); + var inner = buildExpression(group.value.value, newOptions); + + var node = new _mathMLTree2.default.MathNode("mstyle", inner); + + // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + node.setAttribute("mathsize", newOptions.sizeMultiplier + "em"); + + return node; + }; + + groupTypes.overline = function (group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("mover", [buildGroup(group.value.body, options), operator]); + node.setAttribute("accent", "true"); + + return node; + }; + + groupTypes.underline = function (group, options) { + var operator = new _mathMLTree2.default.MathNode("mo", [new _mathMLTree2.default.TextNode("\u203E")]); + operator.setAttribute("stretchy", "true"); + + var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), operator]); + node.setAttribute("accentunder", "true"); + + return node; + }; + + groupTypes.accentUnder = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + var node = new _mathMLTree2.default.MathNode("munder", [buildGroup(group.value.body, options), accentNode]); + node.setAttribute("accentunder", "true"); + return node; + }; + + groupTypes.enclose = function (group, options) { + var node = new _mathMLTree2.default.MathNode("menclose", [buildGroup(group.value.body, options)]); + var notation = ""; + switch (group.value.label) { + case "\\bcancel": + notation = "downdiagonalstrike"; + break; + case "\\sout": + notation = "horizontalstrike"; + break; + case "\\fbox": + notation = "box"; + break; + default: + notation = "updiagonalstrike"; + } + node.setAttribute("notation", notation); + return node; + }; + + groupTypes.horizBrace = function (group, options) { + var accentNode = _stretchy2.default.mathMLnode(group.value.label); + return new _mathMLTree2.default.MathNode(group.value.isOver ? "mover" : "munder", [buildGroup(group.value.base, options), accentNode]); + }; + + groupTypes.xArrow = function (group, options) { + var arrowNode = _stretchy2.default.mathMLnode(group.value.label); + var node = void 0; + var lowerNode = void 0; + + if (group.value.body) { + var upperNode = buildGroup(group.value.body, options); + if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munderover", [arrowNode, lowerNode, upperNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode, upperNode]); + } + } else if (group.value.below) { + lowerNode = buildGroup(group.value.below, options); + node = new _mathMLTree2.default.MathNode("munder", [arrowNode, lowerNode]); + } else { + node = new _mathMLTree2.default.MathNode("mover", [arrowNode]); + } + return node; + }; + + groupTypes.rule = function (group) { + // TODO(emily): Figure out if there's an actual way to draw black boxes + // in MathML. + var node = new _mathMLTree2.default.MathNode("mrow"); + + return node; + }; + + groupTypes.kern = function (group) { + // TODO(kevin): Figure out if there's a way to add space in MathML + var node = new _mathMLTree2.default.MathNode("mrow"); + + return node; + }; + + groupTypes.llap = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + + node.setAttribute("lspace", "-1width"); + node.setAttribute("width", "0px"); + + return node; + }; + + groupTypes.rlap = function (group, options) { + var node = new _mathMLTree2.default.MathNode("mpadded", [buildGroup(group.value.body, options)]); + + node.setAttribute("width", "0px"); + + return node; + }; + + groupTypes.phantom = function (group, options) { + var inner = buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mphantom", inner); + }; + + groupTypes.mclass = function (group, options) { + var inner = buildExpression(group.value.value, options); + return new _mathMLTree2.default.MathNode("mstyle", inner); + }; + + /** + * Takes a list of nodes, builds them, and returns a list of the generated + * MathML nodes. A little simpler than the HTML version because we don't do any + * previous-node handling. + */ + var buildExpression = function buildExpression(expression, options) { + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + groups.push(buildGroup(group, options)); + } + + // TODO(kevinb): combine \\not with mrels and mords + + return groups; + }; + + /** + * Takes a group from the parser and calls the appropriate groupTypes function + * on it to produce a MathML node. + */ + // TODO(kevinb): determine if removeUnnecessaryRow should always be true + var buildGroup = function buildGroup(group, options) { + var removeUnnecessaryRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!group) { + return new _mathMLTree2.default.MathNode("mrow"); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var result = groupTypes[group.type](group, options); + if (removeUnnecessaryRow) { + if (result.type === "mrow" && result.children.length === 1) { + return result.children[0]; + } + } + return result; + } else { + throw new _ParseError2.default("Got group of unknown type: '" + group.type + "'"); + } + }; + + /** + * Takes a full parse tree and settings and builds a MathML representation of + * it. In particular, we put the elements from building the parse tree into a + * tag so we can also include that TeX source as an annotation. + * + * Note that we actually return a domTree element with a `` inside it so + * we can do appropriate styling. + */ + var buildMathML = function buildMathML(tree, texExpression, options) { + var expression = buildExpression(tree, options); + + // Wrap up the expression in an mrow so it is presented in the semantics + // tag correctly. + var wrapper = new _mathMLTree2.default.MathNode("mrow", expression); + + // Build a TeX annotation of the source + var annotation = new _mathMLTree2.default.MathNode("annotation", [new _mathMLTree2.default.TextNode(texExpression)]); + + annotation.setAttribute("encoding", "application/x-tex"); + + var semantics = new _mathMLTree2.default.MathNode("semantics", [wrapper, annotation]); + + var math = new _mathMLTree2.default.MathNode("math", [semantics]); + + // You can't style nodes, so we wrap the node in a span. + return (0, _buildCommon.makeSpan)(["katex-mathml"], [math]); + }; + + module.exports = buildMathML; + + },{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./mathMLTree":45,"./stretchy":47,"./symbols":48,"./utils":51}],37:[function(require,module,exports){ + + var _buildHTML = require("./buildHTML"); + + var _buildHTML2 = _interopRequireDefault(_buildHTML); + + var _buildMathML = require("./buildMathML"); + + var _buildMathML2 = _interopRequireDefault(_buildMathML); + + var _buildCommon = require("./buildCommon"); + + var _Options = require("./Options"); + + var _Options2 = _interopRequireDefault(_Options); + + var _Settings = require("./Settings"); + + var _Settings2 = _interopRequireDefault(_Settings); + + var _Style = require("./Style"); + + var _Style2 = _interopRequireDefault(_Style); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + var buildTree = function buildTree(tree, expression, settings) { + settings = settings || new _Settings2.default({}); + + var startStyle = _Style2.default.TEXT; + if (settings.displayMode) { + startStyle = _Style2.default.DISPLAY; + } + + // Setup the default options + var options = new _Options2.default({ + style: startStyle + }); + + // `buildHTML` sometimes messes with the parse tree (like turning bins -> + // ords), so we build the MathML version first. + var mathMLNode = (0, _buildMathML2.default)(tree, expression, options); + var htmlNode = (0, _buildHTML2.default)(tree, options); + + var katexNode = (0, _buildCommon.makeSpan)(["katex"], [mathMLNode, htmlNode]); + + if (settings.displayMode) { + return (0, _buildCommon.makeSpan)(["katex-display"], [katexNode]); + } else { + return katexNode; + } + }; + + module.exports = buildTree; + + },{"./Options":28,"./Settings":32,"./Style":33,"./buildCommon":34,"./buildHTML":35,"./buildMathML":36}],38:[function(require,module,exports){ + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + var _Style = require("./Style"); + + var _Style2 = _interopRequireDefault(_Style); + + var _buildCommon = require("./buildCommon"); + + var _buildCommon2 = _interopRequireDefault(_buildCommon); + + var _fontMetrics = require("./fontMetrics"); + + var _fontMetrics2 = _interopRequireDefault(_fontMetrics); + + var _symbols = require("./symbols"); + + var _symbols2 = _interopRequireDefault(_symbols); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ + /** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + + var getMetrics = function getMetrics(symbol, font) { + if (_symbols2.default.math[symbol] && _symbols2.default.math[symbol].replace) { + return _fontMetrics2.default.getCharacterMetrics(_symbols2.default.math[symbol].replace, font); + } else { + return _fontMetrics2.default.getCharacterMetrics(symbol, font); + } + }; + + /** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ + var styleWrap = function styleWrap(delim, toStyle, options, classes) { + var newOptions = options.havingBaseStyle(toStyle); + + var span = (0, _buildCommon.makeSpan)((classes || []).concat(newOptions.sizingClasses(options)), [delim], options); + + span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + span.height *= span.delimSizeMultiplier; + span.depth *= span.delimSizeMultiplier; + span.maxFontSize = newOptions.sizeMultiplier; + + return span; + }; + + var centerSpan = function centerSpan(span, options, style) { + var newOptions = options.havingBaseStyle(style); + var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight; + + span.classes.push("delimcenter"); + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; + }; + + /** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ + var makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) { + var text = _buildCommon2.default.makeSymbol(delim, "Main-Regular", mode, options); + var span = styleWrap(text, style, options, classes); + if (center) { + centerSpan(span, options, style); + } + return span; + }; + + /** + * Builds a symbol in the given font size (note size is an integer) + */ + var mathrmSize = function mathrmSize(value, size, mode, options) { + return _buildCommon2.default.makeSymbol(value, "Size" + size + "-Regular", mode, options); + }; + + /** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ + var makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) { + var inner = mathrmSize(delim, size, mode, options); + var span = styleWrap((0, _buildCommon.makeSpan)(["delimsizing", "size" + size], [inner], options), _Style2.default.TEXT, options, classes); + if (center) { + centerSpan(span, options, _Style2.default.TEXT); + } + return span; + }; + + /** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ + var makeInner = function makeInner(symbol, font, mode) { + var sizeClass = void 0; + // Apply the correct CSS class to choose the right font. + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else if (font === "Size4-Regular") { + sizeClass = "delim-size4"; + } + + var inner = (0, _buildCommon.makeSpan)(["delimsizinginner", sizeClass], [(0, _buildCommon.makeSpan)([], [_buildCommon2.default.makeSymbol(symbol, font, mode)])]); + + // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + return { type: "elem", elem: inner }; + }; + + /** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ + var makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + var top = void 0; + var middle = void 0; + var repeat = void 0; + var bottom = void 0; + top = repeat = bottom = delim; + middle = null; + // Also keep track of what font the delimiters are in + var font = "Size1-Regular"; + + // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + if (delim === "\\uparrow") { + repeat = bottom = "\u23D0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23D0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23D0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23A1"; + repeat = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23A4"; + repeat = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor") { + repeat = top = "\u23A2"; + bottom = "\u23A3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil") { + top = "\u23A1"; + repeat = bottom = "\u23A2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor") { + repeat = top = "\u23A5"; + bottom = "\u23A6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil") { + top = "\u23A4"; + repeat = bottom = "\u23A5"; + font = "Size4-Regular"; + } else if (delim === "(") { + top = "\u239B"; + repeat = "\u239C"; + bottom = "\u239D"; + font = "Size4-Regular"; + } else if (delim === ")") { + top = "\u239E"; + repeat = "\u239F"; + bottom = "\u23A0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23A7"; + middle = "\u23A8"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23AB"; + middle = "\u23AC"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23A7"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23AB"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23A7"; + bottom = "\u23AD"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23AB"; + bottom = "\u23A9"; + repeat = "\u23AA"; + font = "Size4-Regular"; + } + + // Get the metrics of the four sections + var topMetrics = getMetrics(top, font); + var topHeightTotal = topMetrics.height + topMetrics.depth; + var repeatMetrics = getMetrics(repeat, font); + var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + var bottomMetrics = getMetrics(bottom, font); + var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + var middleHeightTotal = 0; + var middleFactor = 1; + if (middle !== null) { + var middleMetrics = getMetrics(middle, font); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } + + // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; + + // Compute the number of copies of the repeat symbol we will need + var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); + + // Compute the total height of the delimiter including all the symbols + var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; + + // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + var axisHeight = options.fontMetrics().axisHeight; + if (center) { + axisHeight *= options.sizeMultiplier; + } + // Calculate the depth + var depth = realHeightTotal / 2 - axisHeight; + + // Now, we start building the pieces that will go into the vlist + + // Keep a list of the inner pieces + var inners = []; + + // Add the bottom symbol + inners.push(makeInner(bottom, font, mode)); + + if (middle === null) { + // Add that many symbols + for (var i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (var _i = 0; _i < repeatCount; _i++) { + inners.push(makeInner(repeat, font, mode)); + } + inners.push(makeInner(middle, font, mode)); + for (var _i2 = 0; _i2 < repeatCount; _i2++) { + inners.push(makeInner(repeat, font, mode)); + } + } + + // Add the top symbol + inners.push(makeInner(top, font, mode)); + + // Finally, build the vlist + var newOptions = options.havingBaseStyle(_Style2.default.TEXT); + var inner = _buildCommon2.default.makeVList(inners, "bottom", depth, newOptions); + + return styleWrap((0, _buildCommon.makeSpan)(["delimsizing", "mult"], [inner], newOptions), _Style2.default.TEXT, options, classes); + }; + + var sqrtInnerSVG = { + // The main path geometry is from glyph U221A in the font KaTeX Main + main: "", + + // size1 is from glyph U221A in the font KaTeX_Size1-Regular + 1: "", + + // size2 is from glyph U221A in the font KaTeX_Size2-Regular + 2: "", + + // size3 is from glyph U221A in the font KaTeX_Size3-Regular + 3: "", + + // size4 is from glyph U221A in the font KaTeX_Size4-Regular + 4: "", + + // tall is from glyph U23B7 in the font KaTeX_Size4-Regular + tall: "l-4 4-4 4c-.667.667-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h\n-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170c-4-3.333-8.333\n-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661z\nM702 0H400000v40H742z'/>" + }; + + var sqrtSpan = function sqrtSpan(height, delim, options) { + // Create a span containing an SVG image of a sqrt symbol. + var span = _buildCommon2.default.makeSpan([], [], options); + var sizeMultiplier = options.sizeMultiplier; // default + + if (delim.type === "small") { + // Get an SVG that is derived from glyph U+221A in font KaTeX-Main. + var newOptions = options.havingBaseStyle(delim.style); + sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier; + + span.height = 1 * sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 0.833 * sizeMultiplier; // from the font. + //In the font, the glyph is 1000 units tall. The font scale is 1:1000. + + span.innerHTML = "\n " + sqrtInnerSVG['main'] + ""; + } else if (delim.type === "large") { + // These SVGs come from fonts: KaTeX_Size1, _Size2, etc. + // Get sqrt height from font data + span.height = sizeToMaxHeight[delim.size] / sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 1.0 / sizeMultiplier; // from the font + + span.innerHTML = "\n " + sqrtInnerSVG[delim.size] + ""; + } else { + // Tall sqrt. In TeX, this would be stacked using multiple glyphs. + // We'll use a single SVG to accomplish the same thing. + span.height = height / sizeMultiplier; + span.style.height = span.height + "em"; + span.surdWidth = 1.056 / sizeMultiplier; + var viewBoxHeight = Math.floor(span.height * 1000); // scale = 1:1000 + var vertSegment = viewBoxHeight - 54; + + // This \sqrt is customized in both height and width. We set the + // height now. Then CSS will stretch the image to the correct width. + // This SVG path comes from glyph U+23B7, font KaTeX_Size4-Regular. + span.innerHTML = "\n \n "; + } + + span.sizeMultiplier = sizeMultiplier; + + return span; + }; + + // There are three kinds of delimiters, delimiters that stack when they become + // too large + var stackLargeDelimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd"]; + + // delimiters that always stack + var stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"]; + + // and delimiters that never stack + var stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; + + // Metrics of the different sizes. Found by looking at TeX's output of + // $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ + // Used to create stacked delimiters of appropriate sizes in makeSizedDelim. + var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; + + /** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ + var makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Sized delimiters are never centered. + if (_utils2.default.contains(stackLargeDelimiters, delim) || _utils2.default.contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (_utils2.default.contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new _ParseError2.default("Illegal delimiter: '" + delim + "'"); + } + }; + + /** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + + // Delimiters that never stack try small delimiters and large delimiters only + var stackNeverDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; + + // Delimiters that always stack try the small delimiters first, then stack + var stackAlwaysDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "stack" }]; + + // Delimiters that stack when large try the small and then large delimiters, and + // stack afterwards + var stackLargeDelimiterSequence = [{ type: "small", style: _Style2.default.SCRIPTSCRIPT }, { type: "small", style: _Style2.default.SCRIPT }, { type: "small", style: _Style2.default.TEXT }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; + + /** + * Get the font used in a delimiter based on what kind of delimiter it is. + */ + var delimTypeToFont = function delimTypeToFont(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } + }; + + /** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ + var traverseSequence = function traverseSequence(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + var start = Math.min(2, 3 - options.style.size); + for (var i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + var metrics = getMetrics(delim, delimTypeToFont(sequence[i])); + var heightDepth = metrics.height + metrics.depth; + + // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + var newOptions = options.havingBaseStyle(sequence[i].style); + heightDepth *= newOptions.sizeMultiplier; + } + + // Check if the delimiter at this size works for the given height. + if (heightDepth > height) { + return sequence[i]; + } + } + + // If we reached the end of the sequence, return the last sequence element. + return sequence[sequence.length - 1]; + }; + + /** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ + var makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) { + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Decide what sequence to use + var sequence = void 0; + if (_utils2.default.contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (_utils2.default.contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } + + // Look through the sequence + var delimType = traverseSequence(delim, height, sequence, options); + + if (delim === "\\surd") { + // Get an SVG image for + return sqrtSpan(height, delimType, options); + } else { + // Get the delimiter from font glyphs. + // Depending on the sequence element we decided on, call the + // appropriate function. + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, classes); + } else if (delimType.type === "stack") { + return makeStackedDelim(delim, height, center, options, mode, classes); + } + } + }; + + /** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ + var makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) { + // We always center \left/\right delimiters, so the axis is always shifted + var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; + + // Taken from TeX source, tex.web, function make_left_right + var delimiterFactor = 901; + var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm; + + var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight); + + var totalHeight = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); + + // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes); + }; + + module.exports = { + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim + }; + + },{"./ParseError":29,"./Style":33,"./buildCommon":34,"./fontMetrics":41,"./symbols":48,"./utils":51}],39:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _createClass2 = require("babel-runtime/helpers/createClass"); + + var _createClass3 = _interopRequireDefault(_createClass2); + + var _unicodeRegexes = require("./unicodeRegexes"); + + var _unicodeRegexes2 = _interopRequireDefault(_unicodeRegexes); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Create an HTML className based on a list of classes. In addition to joining + * with spaces, we also remove null or empty classes. + */ + /** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + */ + var createClass = function createClass(classes) { + classes = classes.slice(); + for (var i = classes.length - 1; i >= 0; i--) { + if (!classes[i]) { + classes.splice(i, 1); + } + } + + return classes.join(" "); + }; + + /** + * This node represents a span node, with a className, a list of children, and + * an inline style. It also contains information about its height, depth, and + * maxFontSize. + */ + + var span = function () { + function span(classes, children, options) { + (0, _classCallCheck3.default)(this, span); + + this.classes = classes || []; + this.children = children || []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + this.attributes = {}; + this.innerHTML; // used for inline SVG code. + if (options) { + if (options.style.isTight()) { + this.classes.push("mtight"); + } + if (options.getColor()) { + this.style.color = options.getColor(); + } + } + } + + /** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all + * browsers support attributes the same, and having too many custom attributes + * is probably bad. + */ + + + (0, _createClass3.default)(span, [{ + key: "setAttribute", + value: function setAttribute(attribute, value) { + this.attributes[attribute] = value; + } + }, { + key: "tryCombine", + value: function tryCombine(sibling) { + return false; + } + + /** + * Convert the span into an HTML node + */ + + }, { + key: "toNode", + value: function toNode() { + var span = document.createElement("span"); + + // Apply the class + span.className = createClass(this.classes); + + // Apply inline styles + for (var style in this.style) { + if (Object.prototype.hasOwnProperty.call(this.style, style)) { + span.style[style] = this.style[style]; + } + } + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + span.setAttribute(attr, this.attributes[attr]); + } + } + + if (this.innerHTML) { + span.innerHTML = this.innerHTML; + } + + // Append the children, also as HTML nodes + for (var i = 0; i < this.children.length; i++) { + span.appendChild(this.children[i].toNode()); + } + + return span; + } + + /** + * Convert the span into an HTML markup string + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = " 0 || createClass(this.classes) !== createClass(sibling.classes) || this.skew !== sibling.skew || this.maxFontSize !== sibling.maxFontSize) { + return false; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style) && this.style[style] !== sibling.style[style]) { + return false; + } + } + for (var _style in sibling.style) { + if (sibling.style.hasOwnProperty(_style) && this.style[_style] !== sibling.style[_style]) { + return false; + } + } + this.value += sibling.value; + this.height = Math.max(this.height, sibling.height); + this.depth = Math.max(this.depth, sibling.depth); + this.italic = sibling.italic; + return true; + } + + /** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createTextNode(this.value); + var span = null; + + if (this.italic > 0) { + span = document.createElement("span"); + span.style.marginRight = this.italic + "em"; + } + + if (this.classes.length > 0) { + span = span || document.createElement("span"); + span.className = createClass(this.classes); + } + + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + span = span || document.createElement("span"); + span.style[style] = this.style[style]; + } + } + + if (span) { + span.appendChild(node); + return span; + } else { + return node; + } + } + + /** + * Creates markup for a symbol node. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + // TODO(alpert): More duplication than I'd like from + // span.prototype.toMarkup and symbolNode.prototype.toNode... + var needsSpan = false; + + var markup = " 0) { + styles += "margin-right:" + this.italic + "em;"; + } + for (var style in this.style) { + if (this.style.hasOwnProperty(style)) { + styles += _utils2.default.hyphenate(style) + ":" + this.style[style] + ";"; + } + } + + if (styles) { + needsSpan = true; + markup += " style=\"" + _utils2.default.escape(styles) + "\""; + } + + var escaped = _utils2.default.escape(this.value); + if (needsSpan) { + markup += ">"; + markup += escaped; + markup += "
      "; + return markup; + } else { + return escaped; + } + } + }]); + return symbolNode; + }(); + + module.exports = { + span: span, + documentFragment: documentFragment, + symbolNode: symbolNode + }; + + },{"./unicodeRegexes":49,"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],40:[function(require,module,exports){ + + var _ParseNode = require("./ParseNode"); + + var _ParseNode2 = _interopRequireDefault(_ParseNode); + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. + */ + /* eslint no-constant-condition:0 */ + function parseArray(parser, result, style) { + var row = []; + var body = [row]; + var rowGaps = []; + while (true) { + var cell = parser.parseExpression(false, null); + cell = new _ParseNode2.default("ordgroup", cell, parser.mode); + if (style) { + cell = new _ParseNode2.default("styling", { + style: style, + value: [cell] + }, parser.mode); + } + row.push(cell); + var next = parser.nextToken.text; + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + break; + } else if (next === "\\\\" || next === "\\cr") { + var cr = parser.parseFunction(); + rowGaps.push(cr.value.size); + row = []; + body.push(row); + } else { + throw new _ParseError2.default("Expected & or \\\\ or \\end", parser.nextToken); + } + } + result.body = body; + result.rowGaps = rowGaps; + return new _ParseNode2.default(result.type, result, parser.mode); + } + + /* + * An environment definition is very similar to a function definition: + * it is declared with a name or a list of names, a set of properties + * and a handler containing the actual implementation. + * + * The properties include: + * - numArgs: The number of arguments after the \begin{name} function. + * - argTypes: (optional) Just like for a function + * - allowedInText: (optional) Whether or not the environment is allowed inside + * text mode (default false) (not enforced yet) + * - numOptionalArgs: (optional) Just like for a function + * A bare number instead of that object indicates the numArgs value. + * + * The handler function will receive two arguments + * - context: information and references provided by the parser + * - args: an array of arguments passed to \begin{name} + * The context contains the following properties: + * - envName: the name of the environment, one of the listed names. + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions associated with these arguments from args. + * The handler must return a ParseResult. + */ + function defineEnvironment(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of environments + var data = { + numArgs: props.numArgs || 0, + argTypes: props.argTypes, + greediness: 1, + allowedInText: !!props.allowedInText, + numOptionalArgs: props.numOptionalArgs || 0, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } + } + + // Decides on a style for cells in an array according to whether the given + // environment name starts with the letter 'd'. + function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } + } + + // Arrays are part of LaTeX, defined in lttab.dtx so its documentation + // is part of the source2e.pdf file of LaTeX2e source documentation. + // {darray} is an {array} environment where cells are set in \displaystyle, + // as defined in nccmath.sty. + defineEnvironment(["array", "darray"], { + numArgs: 1 + }, function (context, args) { + var colalign = args[0]; + colalign = colalign.value.map ? colalign.value : [colalign]; + var cols = colalign.map(function (node) { + var ca = node.value; + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } + throw new _ParseError2.default("Unknown column alignment: " + node.value, node); + }); + var res = { + type: "array", + cols: cols, + hskipBeforeAndAfter: true }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + return res; + }); + + // The matrix environments of amsmath builds on the array environment + // of LaTeX, which is discussed above. + defineEnvironment(["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"], {}, function (context) { + var delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; + var res = { + type: "array", + hskipBeforeAndAfter: false }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + if (delimiters) { + res = new _ParseNode2.default("leftright", { + body: [res], + left: delimiters[0], + right: delimiters[1] + }, context.mode); + } + return res; + }); + + // A cases environment (in amsmath.sty) is almost equivalent to + // \def\arraystretch{1.2}% + // \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. + // {dcases} is a {cases} environment where cells are set in \displaystyle, + // as defined in mathtools.sty. + defineEnvironment(["cases", "dcases"], {}, function (context) { + var res = { + type: "array", + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: 1.0 }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + res = parseArray(context.parser, res, dCellStyle(context.envName)); + res = new _ParseNode2.default("leftright", { + body: [res], + left: "\\{", + right: "." + }, context.mode); + return res; + }); + + // An aligned environment is like the align* environment + // except it operates within math mode. + // Note that we assume \nomallineskiplimit to be zero, + // so that \strut@ is the same as \strut. + defineEnvironment("aligned", {}, function (context) { + var res = { + type: "array", + cols: [], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + // Count number of columns = maximum number of cells in each row. + // At the same time, prepend empty group {} at beginning of every second + // cell in each row (starting with second cell) so that operators become + // binary. This behavior is implemented in amsmath's \start@aligned. + var emptyGroup = new _ParseNode2.default("ordgroup", [], context.mode); + var numCols = 0; + res.value.body.forEach(function (row) { + for (var i = 1; i < row.length; i += 2) { + // Modify ordgroup node within styling node + var ordgroup = row[i].value.value[0]; + ordgroup.value.unshift(emptyGroup); + } + if (numCols < row.length) { + numCols = row.length; + } + }); + for (var i = 0; i < numCols; ++i) { + var align = "r"; + var pregap = 0; + if (i % 2 === 1) { + align = "l"; + } else if (i > 0) { + pregap = 2; // one \qquad between columns + } + res.value.cols[i] = { + type: "align", + align: align, + pregap: pregap, + postgap: 0 + }; + } + return res; + }); + + // A gathered environment is like an array environment with one centered + // column, but where rows are considered lines so get \jot line spacing + // and contents are set in \displaystyle. + defineEnvironment("gathered", {}, function (context) { + var res = { + type: "array", + cols: [{ + type: "align", + align: "c" + }], + addJot: true + }; + res = parseArray(context.parser, res, "display"); + return res; + }); + + },{"./ParseError":29,"./ParseNode":30}],41:[function(require,module,exports){ + + var _unicodeRegexes = require("./unicodeRegexes"); + + var _fontMetricsData = require("./fontMetricsData"); + + var _fontMetricsData2 = _interopRequireDefault(_fontMetricsData); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * This file contains metrics regarding fonts and individual symbols. The sigma + * and xi variables, as well as the metricMap map contain data extracted from + * TeX, TeX font metrics, and the TTF files. These data are then exposed via the + * `metrics` variable and the getCharacterMetrics function. + */ + + // In TeX, there are actually three sets of dimensions, one for each of + // textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4: + // 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are + // provided in the the arrays below, in that order. + // + // The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively. + // This was determined by running the following script: + // + // latex -interaction=nonstopmode \ + // '\documentclass{article}\usepackage{amsmath}\begin{document}' \ + // '$a$ \expandafter\show\the\textfont2' \ + // '\expandafter\show\the\scriptfont2' \ + // '\expandafter\show\the\scriptscriptfont2' \ + // '\stop' + // + // The metrics themselves were retreived using the following commands: + // + // tftopl cmsy10 + // tftopl cmsy7 + // tftopl cmsy5 + // + // The output of each of these commands is quite lengthy. The only part we + // care about is the FONTDIMEN section. Each value is measured in EMs. + var sigmasAndXis = { + slant: [0.250, 0.250, 0.250], // sigma1 + space: [0.000, 0.000, 0.000], // sigma2 + stretch: [0.000, 0.000, 0.000], // sigma3 + shrink: [0.000, 0.000, 0.000], // sigma4 + xHeight: [0.431, 0.431, 0.431], // sigma5 + quad: [1.000, 1.171, 1.472], // sigma6 + extraSpace: [0.000, 0.000, 0.000], // sigma7 + num1: [0.677, 0.732, 0.925], // sigma8 + num2: [0.394, 0.384, 0.387], // sigma9 + num3: [0.444, 0.471, 0.504], // sigma10 + denom1: [0.686, 0.752, 1.025], // sigma11 + denom2: [0.345, 0.344, 0.532], // sigma12 + sup1: [0.413, 0.503, 0.504], // sigma13 + sup2: [0.363, 0.431, 0.404], // sigma14 + sup3: [0.289, 0.286, 0.294], // sigma15 + sub1: [0.150, 0.143, 0.200], // sigma16 + sub2: [0.247, 0.286, 0.400], // sigma17 + supDrop: [0.386, 0.353, 0.494], // sigma18 + subDrop: [0.050, 0.071, 0.100], // sigma19 + delim1: [2.390, 1.700, 1.980], // sigma20 + delim2: [1.010, 1.157, 1.420], // sigma21 + axisHeight: [0.250, 0.250, 0.250], // sigma22 + + // These font metrics are extracted from TeX by using tftopl on cmex10.tfm; + // they correspond to the font parameters of the extension fonts (family 3). + // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to + // match cmex7, we'd use cmex7.tfm values for script and scriptscript + // values. + defaultRuleThickness: [0.04, 0.049, 0.049], // xi8; cmex7: 0.049 + bigOpSpacing1: [0.111, 0.111, 0.111], // xi9 + bigOpSpacing2: [0.166, 0.166, 0.166], // xi10 + bigOpSpacing3: [0.2, 0.2, 0.2], // xi11 + bigOpSpacing4: [0.6, 0.611, 0.611], // xi12; cmex7: 0.611 + bigOpSpacing5: [0.1, 0.143, 0.143], // xi13; cmex7: 0.143 + + // The \sqrt rule width is taken from the height of the surd character. + // Since we use the same font at all sizes, this thickness doesn't scale. + sqrtRuleThickness: [0.04, 0.04, 0.04], + + // This value determines how large a pt is, for metrics which are defined + // in terms of pts. + // This value is also used in katex.less; if you change it make sure the + // values match. + ptPerEm: [10.0, 10.0, 10.0], + + // The space between adjacent `|` columns in an array definition. From + // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm. + doubleRuleSep: [0.2, 0.2, 0.2] + }; + + // This map contains a mapping from font name and character code to character + // metrics, including height, depth, italic correction, and skew (kern from the + // character to the corresponding \skewchar) + // This map is generated via `make metrics`. It should not be changed manually. + + + // These are very rough approximations. We default to Times New Roman which + // should have Latin-1 and Cyrillic characters, but may not depending on the + // operating system. The metrics do not account for extra height from the + // accents. In the case of Cyrillic characters which have both ascenders and + // descenders we prefer approximations with ascenders, primarily to prevent + // the fraction bar or root line from intersecting the glyph. + // TODO(kevinb) allow union of multiple glyph metrics for better accuracy. + var extraCharacterMap = { + // Latin-1 + 'À': 'A', + 'Á': 'A', + 'Â': 'A', + 'Ã': 'A', + 'Ä': 'A', + 'Å': 'A', + 'Æ': 'A', + 'Ç': 'C', + 'È': 'E', + 'É': 'E', + 'Ê': 'E', + 'Ë': 'E', + 'Ì': 'I', + 'Í': 'I', + 'Î': 'I', + 'Ï': 'I', + 'Ð': 'D', + 'Ñ': 'N', + 'Ò': 'O', + 'Ó': 'O', + 'Ô': 'O', + 'Õ': 'O', + 'Ö': 'O', + 'Ø': 'O', + 'Ù': 'U', + 'Ú': 'U', + 'Û': 'U', + 'Ü': 'U', + 'Ý': 'Y', + 'Þ': 'o', + 'ß': 'B', + 'à': 'a', + 'á': 'a', + 'â': 'a', + 'ã': 'a', + 'ä': 'a', + 'å': 'a', + 'æ': 'a', + 'ç': 'c', + 'è': 'e', + 'é': 'e', + 'ê': 'e', + 'ë': 'e', + 'ì': 'i', + 'í': 'i', + 'î': 'i', + 'ï': 'i', + 'ð': 'd', + 'ñ': 'n', + 'ò': 'o', + 'ó': 'o', + 'ô': 'o', + 'õ': 'o', + 'ö': 'o', + 'ø': 'o', + 'ù': 'u', + 'ú': 'u', + 'û': 'u', + 'ü': 'u', + 'ý': 'y', + 'þ': 'o', + 'ÿ': 'y', + + // Cyrillic + 'А': 'A', + 'Б': 'B', + 'В': 'B', + 'Г': 'F', + 'Д': 'A', + 'Е': 'E', + 'Ж': 'K', + 'З': '3', + 'И': 'N', + 'Й': 'N', + 'К': 'K', + 'Л': 'N', + 'М': 'M', + 'Н': 'H', + 'О': 'O', + 'П': 'N', + 'Р': 'P', + 'С': 'C', + 'Т': 'T', + 'У': 'y', + 'Ф': 'O', + 'Х': 'X', + 'Ц': 'U', + 'Ч': 'h', + 'Ш': 'W', + 'Щ': 'W', + 'Ъ': 'B', + 'Ы': 'X', + 'Ь': 'B', + 'Э': '3', + 'Ю': 'X', + 'Я': 'R', + 'а': 'a', + 'б': 'b', + 'в': 'a', + 'г': 'r', + 'д': 'y', + 'е': 'e', + 'ж': 'm', + 'з': 'e', + 'и': 'n', + 'й': 'n', + 'к': 'n', + 'л': 'n', + 'м': 'm', + 'н': 'n', + 'о': 'o', + 'п': 'n', + 'р': 'p', + 'с': 'c', + 'т': 'o', + 'у': 'y', + 'ф': 'b', + 'х': 'x', + 'ц': 'n', + 'ч': 'n', + 'ш': 'w', + 'щ': 'w', + 'ъ': 'a', + 'ы': 'm', + 'ь': 'a', + 'э': 'e', + 'ю': 'm', + 'я': 'r' + }; + + /** + * This function is a convenience function for looking up information in the + * metricMap table. It takes a character as a string, and a style. + * + * Note: the `width` property may be undefined if fontMetricsData.js wasn't + * built using `Make extended_metrics`. + */ + var getCharacterMetrics = function getCharacterMetrics(character, style) { + var ch = character.charCodeAt(0); + if (character[0] in extraCharacterMap) { + ch = extraCharacterMap[character[0]].charCodeAt(0); + } else if (_unicodeRegexes.cjkRegex.test(character[0])) { + ch = 'M'.charCodeAt(0); + } + var metrics = _fontMetricsData2.default[style][ch]; + if (metrics) { + return { + depth: metrics[0], + height: metrics[1], + italic: metrics[2], + skew: metrics[3], + width: metrics[4] + }; + } + }; + + var fontMetricsBySizeIndex = {}; + + /** + * Get the font metrics for a given size. + */ + var getFontMetrics = function getFontMetrics(size) { + var sizeIndex = void 0; + if (size >= 5) { + sizeIndex = 0; + } else if (size >= 3) { + sizeIndex = 1; + } else { + sizeIndex = 2; + } + if (!fontMetricsBySizeIndex[sizeIndex]) { + var metrics = fontMetricsBySizeIndex[sizeIndex] = {}; + for (var key in sigmasAndXis) { + if (sigmasAndXis.hasOwnProperty(key)) { + metrics[key] = sigmasAndXis[key][sizeIndex]; + } + } + metrics.cssEmPerMu = metrics.quad / 18; + } + return fontMetricsBySizeIndex[sizeIndex]; + }; + + module.exports = { + getFontMetrics: getFontMetrics, + getCharacterMetrics: getCharacterMetrics + }; + + },{"./fontMetricsData":42,"./unicodeRegexes":49}],42:[function(require,module,exports){ + + module.exports = { + "AMS-Regular": { + "65": [0, 0.68889, 0, 0], + "66": [0, 0.68889, 0, 0], + "67": [0, 0.68889, 0, 0], + "68": [0, 0.68889, 0, 0], + "69": [0, 0.68889, 0, 0], + "70": [0, 0.68889, 0, 0], + "71": [0, 0.68889, 0, 0], + "72": [0, 0.68889, 0, 0], + "73": [0, 0.68889, 0, 0], + "74": [0.16667, 0.68889, 0, 0], + "75": [0, 0.68889, 0, 0], + "76": [0, 0.68889, 0, 0], + "77": [0, 0.68889, 0, 0], + "78": [0, 0.68889, 0, 0], + "79": [0.16667, 0.68889, 0, 0], + "80": [0, 0.68889, 0, 0], + "81": [0.16667, 0.68889, 0, 0], + "82": [0, 0.68889, 0, 0], + "83": [0, 0.68889, 0, 0], + "84": [0, 0.68889, 0, 0], + "85": [0, 0.68889, 0, 0], + "86": [0, 0.68889, 0, 0], + "87": [0, 0.68889, 0, 0], + "88": [0, 0.68889, 0, 0], + "89": [0, 0.68889, 0, 0], + "90": [0, 0.68889, 0, 0], + "107": [0, 0.68889, 0, 0], + "165": [0, 0.675, 0.025, 0], + "174": [0.15559, 0.69224, 0, 0], + "240": [0, 0.68889, 0, 0], + "295": [0, 0.68889, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.9, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.9, 0, 0], + "989": [0.08167, 0.58167, 0, 0], + "1008": [0, 0.43056, 0.04028, 0], + "8245": [0, 0.54986, 0, 0], + "8463": [0, 0.68889, 0, 0], + "8487": [0, 0.68889, 0, 0], + "8498": [0, 0.68889, 0, 0], + "8502": [0, 0.68889, 0, 0], + "8503": [0, 0.68889, 0, 0], + "8504": [0, 0.68889, 0, 0], + "8513": [0, 0.68889, 0, 0], + "8592": [-0.03598, 0.46402, 0, 0], + "8594": [-0.03598, 0.46402, 0, 0], + "8602": [-0.13313, 0.36687, 0, 0], + "8603": [-0.13313, 0.36687, 0, 0], + "8606": [0.01354, 0.52239, 0, 0], + "8608": [0.01354, 0.52239, 0, 0], + "8610": [0.01354, 0.52239, 0, 0], + "8611": [0.01354, 0.52239, 0, 0], + "8619": [0, 0.54986, 0, 0], + "8620": [0, 0.54986, 0, 0], + "8621": [-0.13313, 0.37788, 0, 0], + "8622": [-0.13313, 0.36687, 0, 0], + "8624": [0, 0.69224, 0, 0], + "8625": [0, 0.69224, 0, 0], + "8630": [0, 0.43056, 0, 0], + "8631": [0, 0.43056, 0, 0], + "8634": [0.08198, 0.58198, 0, 0], + "8635": [0.08198, 0.58198, 0, 0], + "8638": [0.19444, 0.69224, 0, 0], + "8639": [0.19444, 0.69224, 0, 0], + "8642": [0.19444, 0.69224, 0, 0], + "8643": [0.19444, 0.69224, 0, 0], + "8644": [0.1808, 0.675, 0, 0], + "8646": [0.1808, 0.675, 0, 0], + "8647": [0.1808, 0.675, 0, 0], + "8648": [0.19444, 0.69224, 0, 0], + "8649": [0.1808, 0.675, 0, 0], + "8650": [0.19444, 0.69224, 0, 0], + "8651": [0.01354, 0.52239, 0, 0], + "8652": [0.01354, 0.52239, 0, 0], + "8653": [-0.13313, 0.36687, 0, 0], + "8654": [-0.13313, 0.36687, 0, 0], + "8655": [-0.13313, 0.36687, 0, 0], + "8666": [0.13667, 0.63667, 0, 0], + "8667": [0.13667, 0.63667, 0, 0], + "8669": [-0.13313, 0.37788, 0, 0], + "8672": [-0.064, 0.437, 0, 0], + "8674": [-0.064, 0.437, 0, 0], + "8705": [0, 0.825, 0, 0], + "8708": [0, 0.68889, 0, 0], + "8709": [0.08167, 0.58167, 0, 0], + "8717": [0, 0.43056, 0, 0], + "8722": [-0.03598, 0.46402, 0, 0], + "8724": [0.08198, 0.69224, 0, 0], + "8726": [0.08167, 0.58167, 0, 0], + "8733": [0, 0.69224, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8737": [0, 0.69224, 0, 0], + "8738": [0.03517, 0.52239, 0, 0], + "8739": [0.08167, 0.58167, 0, 0], + "8740": [0.25142, 0.74111, 0, 0], + "8741": [0.08167, 0.58167, 0, 0], + "8742": [0.25142, 0.74111, 0, 0], + "8756": [0, 0.69224, 0, 0], + "8757": [0, 0.69224, 0, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8765": [-0.13313, 0.37788, 0, 0], + "8769": [-0.13313, 0.36687, 0, 0], + "8770": [-0.03625, 0.46375, 0, 0], + "8774": [0.30274, 0.79383, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8778": [0.08167, 0.58167, 0, 0], + "8782": [0.06062, 0.54986, 0, 0], + "8783": [0.06062, 0.54986, 0, 0], + "8785": [0.08198, 0.58198, 0, 0], + "8786": [0.08198, 0.58198, 0, 0], + "8787": [0.08198, 0.58198, 0, 0], + "8790": [0, 0.69224, 0, 0], + "8791": [0.22958, 0.72958, 0, 0], + "8796": [0.08198, 0.91667, 0, 0], + "8806": [0.25583, 0.75583, 0, 0], + "8807": [0.25583, 0.75583, 0, 0], + "8808": [0.25142, 0.75726, 0, 0], + "8809": [0.25142, 0.75726, 0, 0], + "8812": [0.25583, 0.75583, 0, 0], + "8814": [0.20576, 0.70576, 0, 0], + "8815": [0.20576, 0.70576, 0, 0], + "8816": [0.30274, 0.79383, 0, 0], + "8817": [0.30274, 0.79383, 0, 0], + "8818": [0.22958, 0.72958, 0, 0], + "8819": [0.22958, 0.72958, 0, 0], + "8822": [0.1808, 0.675, 0, 0], + "8823": [0.1808, 0.675, 0, 0], + "8828": [0.13667, 0.63667, 0, 0], + "8829": [0.13667, 0.63667, 0, 0], + "8830": [0.22958, 0.72958, 0, 0], + "8831": [0.22958, 0.72958, 0, 0], + "8832": [0.20576, 0.70576, 0, 0], + "8833": [0.20576, 0.70576, 0, 0], + "8840": [0.30274, 0.79383, 0, 0], + "8841": [0.30274, 0.79383, 0, 0], + "8842": [0.13597, 0.63597, 0, 0], + "8843": [0.13597, 0.63597, 0, 0], + "8847": [0.03517, 0.54986, 0, 0], + "8848": [0.03517, 0.54986, 0, 0], + "8858": [0.08198, 0.58198, 0, 0], + "8859": [0.08198, 0.58198, 0, 0], + "8861": [0.08198, 0.58198, 0, 0], + "8862": [0, 0.675, 0, 0], + "8863": [0, 0.675, 0, 0], + "8864": [0, 0.675, 0, 0], + "8865": [0, 0.675, 0, 0], + "8872": [0, 0.69224, 0, 0], + "8873": [0, 0.69224, 0, 0], + "8874": [0, 0.69224, 0, 0], + "8876": [0, 0.68889, 0, 0], + "8877": [0, 0.68889, 0, 0], + "8878": [0, 0.68889, 0, 0], + "8879": [0, 0.68889, 0, 0], + "8882": [0.03517, 0.54986, 0, 0], + "8883": [0.03517, 0.54986, 0, 0], + "8884": [0.13667, 0.63667, 0, 0], + "8885": [0.13667, 0.63667, 0, 0], + "8888": [0, 0.54986, 0, 0], + "8890": [0.19444, 0.43056, 0, 0], + "8891": [0.19444, 0.69224, 0, 0], + "8892": [0.19444, 0.69224, 0, 0], + "8901": [0, 0.54986, 0, 0], + "8903": [0.08167, 0.58167, 0, 0], + "8905": [0.08167, 0.58167, 0, 0], + "8906": [0.08167, 0.58167, 0, 0], + "8907": [0, 0.69224, 0, 0], + "8908": [0, 0.69224, 0, 0], + "8909": [-0.03598, 0.46402, 0, 0], + "8910": [0, 0.54986, 0, 0], + "8911": [0, 0.54986, 0, 0], + "8912": [0.03517, 0.54986, 0, 0], + "8913": [0.03517, 0.54986, 0, 0], + "8914": [0, 0.54986, 0, 0], + "8915": [0, 0.54986, 0, 0], + "8916": [0, 0.69224, 0, 0], + "8918": [0.0391, 0.5391, 0, 0], + "8919": [0.0391, 0.5391, 0, 0], + "8920": [0.03517, 0.54986, 0, 0], + "8921": [0.03517, 0.54986, 0, 0], + "8922": [0.38569, 0.88569, 0, 0], + "8923": [0.38569, 0.88569, 0, 0], + "8926": [0.13667, 0.63667, 0, 0], + "8927": [0.13667, 0.63667, 0, 0], + "8928": [0.30274, 0.79383, 0, 0], + "8929": [0.30274, 0.79383, 0, 0], + "8934": [0.23222, 0.74111, 0, 0], + "8935": [0.23222, 0.74111, 0, 0], + "8936": [0.23222, 0.74111, 0, 0], + "8937": [0.23222, 0.74111, 0, 0], + "8938": [0.20576, 0.70576, 0, 0], + "8939": [0.20576, 0.70576, 0, 0], + "8940": [0.30274, 0.79383, 0, 0], + "8941": [0.30274, 0.79383, 0, 0], + "8994": [0.19444, 0.69224, 0, 0], + "8995": [0.19444, 0.69224, 0, 0], + "9416": [0.15559, 0.69224, 0, 0], + "9484": [0, 0.69224, 0, 0], + "9488": [0, 0.69224, 0, 0], + "9492": [0, 0.37788, 0, 0], + "9496": [0, 0.37788, 0, 0], + "9585": [0.19444, 0.68889, 0, 0], + "9586": [0.19444, 0.74111, 0, 0], + "9632": [0, 0.675, 0, 0], + "9633": [0, 0.675, 0, 0], + "9650": [0, 0.54986, 0, 0], + "9651": [0, 0.54986, 0, 0], + "9654": [0.03517, 0.54986, 0, 0], + "9660": [0, 0.54986, 0, 0], + "9661": [0, 0.54986, 0, 0], + "9664": [0.03517, 0.54986, 0, 0], + "9674": [0.11111, 0.69224, 0, 0], + "9733": [0.19444, 0.69224, 0, 0], + "10003": [0, 0.69224, 0, 0], + "10016": [0, 0.69224, 0, 0], + "10731": [0.11111, 0.69224, 0, 0], + "10846": [0.19444, 0.75583, 0, 0], + "10877": [0.13667, 0.63667, 0, 0], + "10878": [0.13667, 0.63667, 0, 0], + "10885": [0.25583, 0.75583, 0, 0], + "10886": [0.25583, 0.75583, 0, 0], + "10887": [0.13597, 0.63597, 0, 0], + "10888": [0.13597, 0.63597, 0, 0], + "10889": [0.26167, 0.75726, 0, 0], + "10890": [0.26167, 0.75726, 0, 0], + "10891": [0.48256, 0.98256, 0, 0], + "10892": [0.48256, 0.98256, 0, 0], + "10901": [0.13667, 0.63667, 0, 0], + "10902": [0.13667, 0.63667, 0, 0], + "10933": [0.25142, 0.75726, 0, 0], + "10934": [0.25142, 0.75726, 0, 0], + "10935": [0.26167, 0.75726, 0, 0], + "10936": [0.26167, 0.75726, 0, 0], + "10937": [0.26167, 0.75726, 0, 0], + "10938": [0.26167, 0.75726, 0, 0], + "10949": [0.25583, 0.75583, 0, 0], + "10950": [0.25583, 0.75583, 0, 0], + "10955": [0.28481, 0.79383, 0, 0], + "10956": [0.28481, 0.79383, 0, 0], + "57350": [0.08167, 0.58167, 0, 0], + "57351": [0.08167, 0.58167, 0, 0], + "57352": [0.08167, 0.58167, 0, 0], + "57353": [0, 0.43056, 0.04028, 0], + "57356": [0.25142, 0.75726, 0, 0], + "57357": [0.25142, 0.75726, 0, 0], + "57358": [0.41951, 0.91951, 0, 0], + "57359": [0.30274, 0.79383, 0, 0], + "57360": [0.30274, 0.79383, 0, 0], + "57361": [0.41951, 0.91951, 0, 0], + "57366": [0.25142, 0.75726, 0, 0], + "57367": [0.25142, 0.75726, 0, 0], + "57368": [0.25142, 0.75726, 0, 0], + "57369": [0.25142, 0.75726, 0, 0], + "57370": [0.13597, 0.63597, 0, 0], + "57371": [0.13597, 0.63597, 0, 0] + }, + "Caligraphic-Regular": { + "48": [0, 0.43056, 0, 0], + "49": [0, 0.43056, 0, 0], + "50": [0, 0.43056, 0, 0], + "51": [0.19444, 0.43056, 0, 0], + "52": [0.19444, 0.43056, 0, 0], + "53": [0.19444, 0.43056, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0.19444, 0.43056, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0.19444, 0.43056, 0, 0], + "65": [0, 0.68333, 0, 0.19445], + "66": [0, 0.68333, 0.03041, 0.13889], + "67": [0, 0.68333, 0.05834, 0.13889], + "68": [0, 0.68333, 0.02778, 0.08334], + "69": [0, 0.68333, 0.08944, 0.11111], + "70": [0, 0.68333, 0.09931, 0.11111], + "71": [0.09722, 0.68333, 0.0593, 0.11111], + "72": [0, 0.68333, 0.00965, 0.11111], + "73": [0, 0.68333, 0.07382, 0], + "74": [0.09722, 0.68333, 0.18472, 0.16667], + "75": [0, 0.68333, 0.01445, 0.05556], + "76": [0, 0.68333, 0, 0.13889], + "77": [0, 0.68333, 0, 0.13889], + "78": [0, 0.68333, 0.14736, 0.08334], + "79": [0, 0.68333, 0.02778, 0.11111], + "80": [0, 0.68333, 0.08222, 0.08334], + "81": [0.09722, 0.68333, 0, 0.11111], + "82": [0, 0.68333, 0, 0.08334], + "83": [0, 0.68333, 0.075, 0.13889], + "84": [0, 0.68333, 0.25417, 0], + "85": [0, 0.68333, 0.09931, 0.08334], + "86": [0, 0.68333, 0.08222, 0], + "87": [0, 0.68333, 0.08222, 0.08334], + "88": [0, 0.68333, 0.14643, 0.13889], + "89": [0.09722, 0.68333, 0.08222, 0.08334], + "90": [0, 0.68333, 0.07944, 0.13889] + }, + "Fraktur-Regular": { + "33": [0, 0.69141, 0, 0], + "34": [0, 0.69141, 0, 0], + "38": [0, 0.69141, 0, 0], + "39": [0, 0.69141, 0, 0], + "40": [0.24982, 0.74947, 0, 0], + "41": [0.24982, 0.74947, 0, 0], + "42": [0, 0.62119, 0, 0], + "43": [0.08319, 0.58283, 0, 0], + "44": [0, 0.10803, 0, 0], + "45": [0.08319, 0.58283, 0, 0], + "46": [0, 0.10803, 0, 0], + "47": [0.24982, 0.74947, 0, 0], + "48": [0, 0.47534, 0, 0], + "49": [0, 0.47534, 0, 0], + "50": [0, 0.47534, 0, 0], + "51": [0.18906, 0.47534, 0, 0], + "52": [0.18906, 0.47534, 0, 0], + "53": [0.18906, 0.47534, 0, 0], + "54": [0, 0.69141, 0, 0], + "55": [0.18906, 0.47534, 0, 0], + "56": [0, 0.69141, 0, 0], + "57": [0.18906, 0.47534, 0, 0], + "58": [0, 0.47534, 0, 0], + "59": [0.12604, 0.47534, 0, 0], + "61": [-0.13099, 0.36866, 0, 0], + "63": [0, 0.69141, 0, 0], + "65": [0, 0.69141, 0, 0], + "66": [0, 0.69141, 0, 0], + "67": [0, 0.69141, 0, 0], + "68": [0, 0.69141, 0, 0], + "69": [0, 0.69141, 0, 0], + "70": [0.12604, 0.69141, 0, 0], + "71": [0, 0.69141, 0, 0], + "72": [0.06302, 0.69141, 0, 0], + "73": [0, 0.69141, 0, 0], + "74": [0.12604, 0.69141, 0, 0], + "75": [0, 0.69141, 0, 0], + "76": [0, 0.69141, 0, 0], + "77": [0, 0.69141, 0, 0], + "78": [0, 0.69141, 0, 0], + "79": [0, 0.69141, 0, 0], + "80": [0.18906, 0.69141, 0, 0], + "81": [0.03781, 0.69141, 0, 0], + "82": [0, 0.69141, 0, 0], + "83": [0, 0.69141, 0, 0], + "84": [0, 0.69141, 0, 0], + "85": [0, 0.69141, 0, 0], + "86": [0, 0.69141, 0, 0], + "87": [0, 0.69141, 0, 0], + "88": [0, 0.69141, 0, 0], + "89": [0.18906, 0.69141, 0, 0], + "90": [0.12604, 0.69141, 0, 0], + "91": [0.24982, 0.74947, 0, 0], + "93": [0.24982, 0.74947, 0, 0], + "94": [0, 0.69141, 0, 0], + "97": [0, 0.47534, 0, 0], + "98": [0, 0.69141, 0, 0], + "99": [0, 0.47534, 0, 0], + "100": [0, 0.62119, 0, 0], + "101": [0, 0.47534, 0, 0], + "102": [0.18906, 0.69141, 0, 0], + "103": [0.18906, 0.47534, 0, 0], + "104": [0.18906, 0.69141, 0, 0], + "105": [0, 0.69141, 0, 0], + "106": [0, 0.69141, 0, 0], + "107": [0, 0.69141, 0, 0], + "108": [0, 0.69141, 0, 0], + "109": [0, 0.47534, 0, 0], + "110": [0, 0.47534, 0, 0], + "111": [0, 0.47534, 0, 0], + "112": [0.18906, 0.52396, 0, 0], + "113": [0.18906, 0.47534, 0, 0], + "114": [0, 0.47534, 0, 0], + "115": [0, 0.47534, 0, 0], + "116": [0, 0.62119, 0, 0], + "117": [0, 0.47534, 0, 0], + "118": [0, 0.52396, 0, 0], + "119": [0, 0.52396, 0, 0], + "120": [0.18906, 0.47534, 0, 0], + "121": [0.18906, 0.47534, 0, 0], + "122": [0.18906, 0.47534, 0, 0], + "8216": [0, 0.69141, 0, 0], + "8217": [0, 0.69141, 0, 0], + "58112": [0, 0.62119, 0, 0], + "58113": [0, 0.62119, 0, 0], + "58114": [0.18906, 0.69141, 0, 0], + "58115": [0.18906, 0.69141, 0, 0], + "58116": [0.18906, 0.47534, 0, 0], + "58117": [0, 0.69141, 0, 0], + "58118": [0, 0.62119, 0, 0], + "58119": [0, 0.47534, 0, 0] + }, + "Main-Bold": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.13333, 0.63333, 0, 0], + "44": [0.19444, 0.15556, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.15556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.19444, 0.44444, 0, 0], + "60": [0.08556, 0.58556, 0, 0], + "61": [-0.10889, 0.39111, 0, 0], + "62": [0.08556, 0.58556, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0, 0], + "67": [0, 0.68611, 0, 0], + "68": [0, 0.68611, 0, 0], + "69": [0, 0.68611, 0, 0], + "70": [0, 0.68611, 0, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0, 0], + "73": [0, 0.68611, 0, 0], + "74": [0, 0.68611, 0, 0], + "75": [0, 0.68611, 0, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0, 0], + "78": [0, 0.68611, 0, 0], + "79": [0, 0.68611, 0, 0], + "80": [0, 0.68611, 0, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0, 0], + "83": [0, 0.68611, 0, 0], + "84": [0, 0.68611, 0, 0], + "85": [0, 0.68611, 0, 0], + "86": [0, 0.68611, 0.01597, 0], + "87": [0, 0.68611, 0.01597, 0], + "88": [0, 0.68611, 0, 0], + "89": [0, 0.68611, 0.02875, 0], + "90": [0, 0.68611, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.13444, 0.03194, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.10903, 0], + "103": [0.19444, 0.44444, 0.01597, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69444, 0, 0], + "106": [0.19444, 0.69444, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01597, 0], + "119": [0, 0.44444, 0.01597, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01597, 0], + "122": [0, 0.44444, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.34444, 0, 0], + "168": [0, 0.69444, 0, 0], + "172": [0, 0.44444, 0, 0], + "175": [0, 0.59611, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.13333, 0.63333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.13333, 0.63333, 0, 0], + "247": [0.13333, 0.63333, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.63194, 0, 0], + "713": [0, 0.59611, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.69444, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.69444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.69444, 0, 0], + "772": [0, 0.59611, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.69444, 0, 0], + "776": [0, 0.69444, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68611, 0, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0, 0], + "928": [0, 0.68611, 0, 0], + "931": [0, 0.68611, 0, 0], + "933": [0, 0.68611, 0, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0, 0], + "937": [0, 0.68611, 0, 0], + "8211": [0, 0.44444, 0.03194, 0], + "8212": [0, 0.44444, 0.03194, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.72444, 0.15486, 0], + "8463": [0, 0.69444, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0], + "8472": [0.19444, 0.44444, 0, 0], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.10889, 0.39111, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.10889, 0.39111, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.10889, 0.39111, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8636": [-0.10889, 0.39111, 0, 0], + "8637": [-0.10889, 0.39111, 0, 0], + "8640": [-0.10889, 0.39111, 0, 0], + "8641": [-0.10889, 0.39111, 0, 0], + "8656": [-0.10889, 0.39111, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.10889, 0.39111, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.10889, 0.39111, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.06389, 0], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68611, 0, 0], + "8712": [0.08556, 0.58556, 0, 0], + "8715": [0.08556, 0.58556, 0, 0], + "8722": [0.13333, 0.63333, 0, 0], + "8723": [0.13333, 0.63333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.02778, 0.47222, 0, 0], + "8728": [-0.02639, 0.47361, 0, 0], + "8729": [-0.02639, 0.47361, 0, 0], + "8730": [0.18, 0.82, 0, 0], + "8733": [0, 0.44444, 0, 0], + "8734": [0, 0.44444, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.12778, 0], + "8764": [-0.10889, 0.39111, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [0.00222, 0.50222, 0, 0], + "8776": [0.02444, 0.52444, 0, 0], + "8781": [0.00222, 0.50222, 0, 0], + "8801": [0.00222, 0.50222, 0, 0], + "8804": [0.19667, 0.69667, 0, 0], + "8805": [0.19667, 0.69667, 0, 0], + "8810": [0.08556, 0.58556, 0, 0], + "8811": [0.08556, 0.58556, 0, 0], + "8826": [0.08556, 0.58556, 0, 0], + "8827": [0.08556, 0.58556, 0, 0], + "8834": [0.08556, 0.58556, 0, 0], + "8835": [0.08556, 0.58556, 0, 0], + "8838": [0.19667, 0.69667, 0, 0], + "8839": [0.19667, 0.69667, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.19667, 0.69667, 0, 0], + "8850": [0.19667, 0.69667, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.13333, 0.63333, 0, 0], + "8854": [0.13333, 0.63333, 0, 0], + "8855": [0.13333, 0.63333, 0, 0], + "8856": [0.13333, 0.63333, 0, 0], + "8857": [0.13333, 0.63333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8900": [-0.02639, 0.47361, 0, 0], + "8901": [-0.02639, 0.47361, 0, 0], + "8902": [-0.02778, 0.47222, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.13889, 0.36111, 0, 0], + "8995": [-0.13889, 0.36111, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.02778, 0.47222, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.02778, 0.47222, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10815": [0, 0.68611, 0, 0], + "10927": [0.19667, 0.69667, 0, 0], + "10928": [0.19667, 0.69667, 0, 0] + }, + "Main-Italic": { + "33": [0, 0.69444, 0.12417, 0], + "34": [0, 0.69444, 0.06961, 0], + "35": [0.19444, 0.69444, 0.06616, 0], + "37": [0.05556, 0.75, 0.13639, 0], + "38": [0, 0.69444, 0.09694, 0], + "39": [0, 0.69444, 0.12417, 0], + "40": [0.25, 0.75, 0.16194, 0], + "41": [0.25, 0.75, 0.03694, 0], + "42": [0, 0.75, 0.14917, 0], + "43": [0.05667, 0.56167, 0.03694, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0.02826, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0.16194, 0], + "48": [0, 0.64444, 0.13556, 0], + "49": [0, 0.64444, 0.13556, 0], + "50": [0, 0.64444, 0.13556, 0], + "51": [0, 0.64444, 0.13556, 0], + "52": [0.19444, 0.64444, 0.13556, 0], + "53": [0, 0.64444, 0.13556, 0], + "54": [0, 0.64444, 0.13556, 0], + "55": [0.19444, 0.64444, 0.13556, 0], + "56": [0, 0.64444, 0.13556, 0], + "57": [0, 0.64444, 0.13556, 0], + "58": [0, 0.43056, 0.0582, 0], + "59": [0.19444, 0.43056, 0.0582, 0], + "61": [-0.13313, 0.36687, 0.06616, 0], + "63": [0, 0.69444, 0.1225, 0], + "64": [0, 0.69444, 0.09597, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0.10257, 0], + "67": [0, 0.68333, 0.14528, 0], + "68": [0, 0.68333, 0.09403, 0], + "69": [0, 0.68333, 0.12028, 0], + "70": [0, 0.68333, 0.13305, 0], + "71": [0, 0.68333, 0.08722, 0], + "72": [0, 0.68333, 0.16389, 0], + "73": [0, 0.68333, 0.15806, 0], + "74": [0, 0.68333, 0.14028, 0], + "75": [0, 0.68333, 0.14528, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0.16389, 0], + "78": [0, 0.68333, 0.16389, 0], + "79": [0, 0.68333, 0.09403, 0], + "80": [0, 0.68333, 0.10257, 0], + "81": [0.19444, 0.68333, 0.09403, 0], + "82": [0, 0.68333, 0.03868, 0], + "83": [0, 0.68333, 0.11972, 0], + "84": [0, 0.68333, 0.13305, 0], + "85": [0, 0.68333, 0.16389, 0], + "86": [0, 0.68333, 0.18361, 0], + "87": [0, 0.68333, 0.18361, 0], + "88": [0, 0.68333, 0.15806, 0], + "89": [0, 0.68333, 0.19383, 0], + "90": [0, 0.68333, 0.14528, 0], + "91": [0.25, 0.75, 0.1875, 0], + "93": [0.25, 0.75, 0.10528, 0], + "94": [0, 0.69444, 0.06646, 0], + "95": [0.31, 0.12056, 0.09208, 0], + "97": [0, 0.43056, 0.07671, 0], + "98": [0, 0.69444, 0.06312, 0], + "99": [0, 0.43056, 0.05653, 0], + "100": [0, 0.69444, 0.10333, 0], + "101": [0, 0.43056, 0.07514, 0], + "102": [0.19444, 0.69444, 0.21194, 0], + "103": [0.19444, 0.43056, 0.08847, 0], + "104": [0, 0.69444, 0.07671, 0], + "105": [0, 0.65536, 0.1019, 0], + "106": [0.19444, 0.65536, 0.14467, 0], + "107": [0, 0.69444, 0.10764, 0], + "108": [0, 0.69444, 0.10333, 0], + "109": [0, 0.43056, 0.07671, 0], + "110": [0, 0.43056, 0.07671, 0], + "111": [0, 0.43056, 0.06312, 0], + "112": [0.19444, 0.43056, 0.06312, 0], + "113": [0.19444, 0.43056, 0.08847, 0], + "114": [0, 0.43056, 0.10764, 0], + "115": [0, 0.43056, 0.08208, 0], + "116": [0, 0.61508, 0.09486, 0], + "117": [0, 0.43056, 0.07671, 0], + "118": [0, 0.43056, 0.10764, 0], + "119": [0, 0.43056, 0.10764, 0], + "120": [0, 0.43056, 0.12042, 0], + "121": [0.19444, 0.43056, 0.08847, 0], + "122": [0, 0.43056, 0.12292, 0], + "126": [0.35, 0.31786, 0.11585, 0], + "163": [0, 0.69444, 0, 0], + "305": [0, 0.43056, 0, 0.02778], + "567": [0.19444, 0.43056, 0, 0.08334], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0.09694, 0], + "770": [0, 0.69444, 0.06646, 0], + "771": [0, 0.66786, 0.11585, 0], + "772": [0, 0.56167, 0.10333, 0], + "774": [0, 0.69444, 0.10806, 0], + "775": [0, 0.66786, 0.11752, 0], + "776": [0, 0.66786, 0.10474, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0.1225, 0], + "780": [0, 0.62847, 0.08295, 0], + "915": [0, 0.68333, 0.13305, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0.09403, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0.15294, 0], + "928": [0, 0.68333, 0.16389, 0], + "931": [0, 0.68333, 0.12028, 0], + "933": [0, 0.68333, 0.11111, 0], + "934": [0, 0.68333, 0.05986, 0], + "936": [0, 0.68333, 0.11111, 0], + "937": [0, 0.68333, 0.10257, 0], + "8211": [0, 0.43056, 0.09208, 0], + "8212": [0, 0.43056, 0.09208, 0], + "8216": [0, 0.69444, 0.12417, 0], + "8217": [0, 0.69444, 0.12417, 0], + "8220": [0, 0.69444, 0.1685, 0], + "8221": [0, 0.69444, 0.06961, 0], + "8463": [0, 0.68889, 0, 0] + }, + "Main-Regular": { + "32": [0, 0, 0, 0], + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.19444, 0.43056, 0, 0], + "60": [0.0391, 0.5391, 0, 0], + "61": [-0.13313, 0.36687, 0, 0], + "62": [0.0391, 0.5391, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0, 0], + "67": [0, 0.68333, 0, 0], + "68": [0, 0.68333, 0, 0], + "69": [0, 0.68333, 0, 0], + "70": [0, 0.68333, 0, 0], + "71": [0, 0.68333, 0, 0], + "72": [0, 0.68333, 0, 0], + "73": [0, 0.68333, 0, 0], + "74": [0, 0.68333, 0, 0], + "75": [0, 0.68333, 0, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0, 0], + "78": [0, 0.68333, 0, 0], + "79": [0, 0.68333, 0, 0], + "80": [0, 0.68333, 0, 0], + "81": [0.19444, 0.68333, 0, 0], + "82": [0, 0.68333, 0, 0], + "83": [0, 0.68333, 0, 0], + "84": [0, 0.68333, 0, 0], + "85": [0, 0.68333, 0, 0], + "86": [0, 0.68333, 0.01389, 0], + "87": [0, 0.68333, 0.01389, 0], + "88": [0, 0.68333, 0, 0], + "89": [0, 0.68333, 0.025, 0], + "90": [0, 0.68333, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.12056, 0.02778, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.69444, 0.07778, 0], + "103": [0.19444, 0.43056, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.66786, 0, 0], + "106": [0.19444, 0.66786, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.19444, 0.43056, 0, 0], + "113": [0.19444, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.61508, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0.01389, 0], + "119": [0, 0.43056, 0.01389, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.19444, 0.43056, 0.01389, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.31786, 0, 0], + "160": [0, 0, 0, 0], + "168": [0, 0.66786, 0, 0], + "172": [0, 0.43056, 0, 0], + "175": [0, 0.56778, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.08333, 0.58333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.08333, 0.58333, 0, 0], + "247": [0.08333, 0.58333, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.19444, 0.43056, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.62847, 0, 0], + "713": [0, 0.56778, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.66786, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.66786, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.66786, 0, 0], + "772": [0, 0.56778, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.66786, 0, 0], + "776": [0, 0.66786, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.62847, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68333, 0, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0, 0], + "928": [0, 0.68333, 0, 0], + "931": [0, 0.68333, 0, 0], + "933": [0, 0.68333, 0, 0], + "934": [0, 0.68333, 0, 0], + "936": [0, 0.68333, 0, 0], + "937": [0, 0.68333, 0, 0], + "8211": [0, 0.43056, 0.02778, 0], + "8212": [0, 0.43056, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8230": [0, 0.12, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.71444, 0.15382, 0], + "8463": [0, 0.68889, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0.11111], + "8472": [0.19444, 0.43056, 0, 0.11111], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.13313, 0.36687, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.13313, 0.36687, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.13313, 0.36687, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8614": [0.011, 0.511, 0, 0], + "8617": [0.011, 0.511, 0, 0], + "8618": [0.011, 0.511, 0, 0], + "8636": [-0.13313, 0.36687, 0, 0], + "8637": [-0.13313, 0.36687, 0, 0], + "8640": [-0.13313, 0.36687, 0, 0], + "8641": [-0.13313, 0.36687, 0, 0], + "8652": [0.011, 0.671, 0, 0], + "8656": [-0.13313, 0.36687, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.13313, 0.36687, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.13313, 0.36687, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.05556, 0.08334], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68333, 0, 0], + "8712": [0.0391, 0.5391, 0, 0], + "8715": [0.0391, 0.5391, 0, 0], + "8722": [0.08333, 0.58333, 0, 0], + "8723": [0.08333, 0.58333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.03472, 0.46528, 0, 0], + "8728": [-0.05555, 0.44445, 0, 0], + "8729": [-0.05555, 0.44445, 0, 0], + "8730": [0.2, 0.8, 0, 0], + "8733": [0, 0.43056, 0, 0], + "8734": [0, 0.43056, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.11111, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [-0.03625, 0.46375, 0, 0], + "8773": [-0.022, 0.589, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8781": [-0.03625, 0.46375, 0, 0], + "8784": [-0.133, 0.67, 0, 0], + "8800": [0.215, 0.716, 0, 0], + "8801": [-0.03625, 0.46375, 0, 0], + "8804": [0.13597, 0.63597, 0, 0], + "8805": [0.13597, 0.63597, 0, 0], + "8810": [0.0391, 0.5391, 0, 0], + "8811": [0.0391, 0.5391, 0, 0], + "8826": [0.0391, 0.5391, 0, 0], + "8827": [0.0391, 0.5391, 0, 0], + "8834": [0.0391, 0.5391, 0, 0], + "8835": [0.0391, 0.5391, 0, 0], + "8838": [0.13597, 0.63597, 0, 0], + "8839": [0.13597, 0.63597, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.13597, 0.63597, 0, 0], + "8850": [0.13597, 0.63597, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.08333, 0.58333, 0, 0], + "8854": [0.08333, 0.58333, 0, 0], + "8855": [0.08333, 0.58333, 0, 0], + "8856": [0.08333, 0.58333, 0, 0], + "8857": [0.08333, 0.58333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8872": [0.249, 0.75, 0, 0], + "8900": [-0.05555, 0.44445, 0, 0], + "8901": [-0.05555, 0.44445, 0, 0], + "8902": [-0.03472, 0.46528, 0, 0], + "8904": [0.005, 0.505, 0, 0], + "8942": [0.03, 0.9, 0, 0], + "8943": [-0.19, 0.31, 0, 0], + "8945": [-0.1, 0.82, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.14236, 0.35764, 0, 0], + "8995": [-0.14236, 0.35764, 0, 0], + "9136": [0.244, 0.744, 0, 0], + "9137": [0.244, 0.744, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.03472, 0.46528, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.03472, 0.46528, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10222": [0.244, 0.744, 0, 0], + "10223": [0.244, 0.744, 0, 0], + "10229": [0.011, 0.511, 0, 0], + "10230": [0.011, 0.511, 0, 0], + "10231": [0.011, 0.511, 0, 0], + "10232": [0.024, 0.525, 0, 0], + "10233": [0.024, 0.525, 0, 0], + "10234": [0.024, 0.525, 0, 0], + "10236": [0.011, 0.511, 0, 0], + "10815": [0, 0.68333, 0, 0], + "10927": [0.13597, 0.63597, 0, 0], + "10928": [0.13597, 0.63597, 0, 0] + }, + "Math-BoldItalic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0.04835, 0], + "67": [0, 0.68611, 0.06979, 0], + "68": [0, 0.68611, 0.03194, 0], + "69": [0, 0.68611, 0.05451, 0], + "70": [0, 0.68611, 0.15972, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0.08229, 0], + "73": [0, 0.68611, 0.07778, 0], + "74": [0, 0.68611, 0.10069, 0], + "75": [0, 0.68611, 0.06979, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0.11424, 0], + "78": [0, 0.68611, 0.11424, 0], + "79": [0, 0.68611, 0.03194, 0], + "80": [0, 0.68611, 0.15972, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0.00421, 0], + "83": [0, 0.68611, 0.05382, 0], + "84": [0, 0.68611, 0.15972, 0], + "85": [0, 0.68611, 0.11424, 0], + "86": [0, 0.68611, 0.25555, 0], + "87": [0, 0.68611, 0.15972, 0], + "88": [0, 0.68611, 0.07778, 0], + "89": [0, 0.68611, 0.25555, 0], + "90": [0, 0.68611, 0.06979, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0.19444, 0.69444, 0.11042, 0], + "103": [0.19444, 0.44444, 0.03704, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69326, 0, 0], + "106": [0.19444, 0.69326, 0.0622, 0], + "107": [0, 0.69444, 0.01852, 0], + "108": [0, 0.69444, 0.0088, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0.03704, 0], + "114": [0, 0.44444, 0.03194, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.03704, 0], + "119": [0, 0.44444, 0.02778, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.03704, 0], + "122": [0, 0.44444, 0.04213, 0], + "915": [0, 0.68611, 0.15972, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0.03194, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0.07458, 0], + "928": [0, 0.68611, 0.08229, 0], + "931": [0, 0.68611, 0.05451, 0], + "933": [0, 0.68611, 0.15972, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0.11653, 0], + "937": [0, 0.68611, 0.04835, 0], + "945": [0, 0.44444, 0, 0], + "946": [0.19444, 0.69444, 0.03403, 0], + "947": [0.19444, 0.44444, 0.06389, 0], + "948": [0, 0.69444, 0.03819, 0], + "949": [0, 0.44444, 0, 0], + "950": [0.19444, 0.69444, 0.06215, 0], + "951": [0.19444, 0.44444, 0.03704, 0], + "952": [0, 0.69444, 0.03194, 0], + "953": [0, 0.44444, 0, 0], + "954": [0, 0.44444, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.44444, 0, 0], + "957": [0, 0.44444, 0.06898, 0], + "958": [0.19444, 0.69444, 0.03021, 0], + "959": [0, 0.44444, 0, 0], + "960": [0, 0.44444, 0.03704, 0], + "961": [0.19444, 0.44444, 0, 0], + "962": [0.09722, 0.44444, 0.07917, 0], + "963": [0, 0.44444, 0.03704, 0], + "964": [0, 0.44444, 0.13472, 0], + "965": [0, 0.44444, 0.03704, 0], + "966": [0.19444, 0.44444, 0, 0], + "967": [0.19444, 0.44444, 0, 0], + "968": [0.19444, 0.69444, 0.03704, 0], + "969": [0, 0.44444, 0.03704, 0], + "977": [0, 0.69444, 0, 0], + "981": [0.19444, 0.69444, 0, 0], + "982": [0, 0.44444, 0.03194, 0], + "1009": [0.19444, 0.44444, 0, 0], + "1013": [0, 0.44444, 0, 0] + }, + "Math-Italic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "Math-Regular": { + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "SansSerif-Regular": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.125, 0.08333, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.08333, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.65556, 0, 0], + "49": [0, 0.65556, 0, 0], + "50": [0, 0.65556, 0, 0], + "51": [0, 0.65556, 0, 0], + "52": [0, 0.65556, 0, 0], + "53": [0, 0.65556, 0, 0], + "54": [0, 0.65556, 0, 0], + "55": [0, 0.65556, 0, 0], + "56": [0, 0.65556, 0, 0], + "57": [0, 0.65556, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.125, 0.44444, 0, 0], + "61": [-0.13, 0.37, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.69444, 0, 0], + "66": [0, 0.69444, 0, 0], + "67": [0, 0.69444, 0, 0], + "68": [0, 0.69444, 0, 0], + "69": [0, 0.69444, 0, 0], + "70": [0, 0.69444, 0, 0], + "71": [0, 0.69444, 0, 0], + "72": [0, 0.69444, 0, 0], + "73": [0, 0.69444, 0, 0], + "74": [0, 0.69444, 0, 0], + "75": [0, 0.69444, 0, 0], + "76": [0, 0.69444, 0, 0], + "77": [0, 0.69444, 0, 0], + "78": [0, 0.69444, 0, 0], + "79": [0, 0.69444, 0, 0], + "80": [0, 0.69444, 0, 0], + "81": [0.125, 0.69444, 0, 0], + "82": [0, 0.69444, 0, 0], + "83": [0, 0.69444, 0, 0], + "84": [0, 0.69444, 0, 0], + "85": [0, 0.69444, 0, 0], + "86": [0, 0.69444, 0.01389, 0], + "87": [0, 0.69444, 0.01389, 0], + "88": [0, 0.69444, 0, 0], + "89": [0, 0.69444, 0.025, 0], + "90": [0, 0.69444, 0, 0], + "91": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.35, 0.09444, 0.02778, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.06944, 0], + "103": [0.19444, 0.44444, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.67937, 0, 0], + "106": [0.19444, 0.67937, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0.01389, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.57143, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01389, 0], + "119": [0, 0.44444, 0.01389, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01389, 0], + "122": [0, 0.44444, 0, 0], + "126": [0.35, 0.32659, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.67659, 0, 0], + "772": [0, 0.60889, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.67937, 0, 0], + "776": [0, 0.67937, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "915": [0, 0.69444, 0, 0], + "916": [0, 0.69444, 0, 0], + "920": [0, 0.69444, 0, 0], + "923": [0, 0.69444, 0, 0], + "926": [0, 0.69444, 0, 0], + "928": [0, 0.69444, 0, 0], + "931": [0, 0.69444, 0, 0], + "933": [0, 0.69444, 0, 0], + "934": [0, 0.69444, 0, 0], + "936": [0, 0.69444, 0, 0], + "937": [0, 0.69444, 0, 0], + "8211": [0, 0.44444, 0.02778, 0], + "8212": [0, 0.44444, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0] + }, + "Script-Regular": { + "65": [0, 0.7, 0.22925, 0], + "66": [0, 0.7, 0.04087, 0], + "67": [0, 0.7, 0.1689, 0], + "68": [0, 0.7, 0.09371, 0], + "69": [0, 0.7, 0.18583, 0], + "70": [0, 0.7, 0.13634, 0], + "71": [0, 0.7, 0.17322, 0], + "72": [0, 0.7, 0.29694, 0], + "73": [0, 0.7, 0.19189, 0], + "74": [0.27778, 0.7, 0.19189, 0], + "75": [0, 0.7, 0.31259, 0], + "76": [0, 0.7, 0.19189, 0], + "77": [0, 0.7, 0.15981, 0], + "78": [0, 0.7, 0.3525, 0], + "79": [0, 0.7, 0.08078, 0], + "80": [0, 0.7, 0.08078, 0], + "81": [0, 0.7, 0.03305, 0], + "82": [0, 0.7, 0.06259, 0], + "83": [0, 0.7, 0.19189, 0], + "84": [0, 0.7, 0.29087, 0], + "85": [0, 0.7, 0.25815, 0], + "86": [0, 0.7, 0.27523, 0], + "87": [0, 0.7, 0.27523, 0], + "88": [0, 0.7, 0.26006, 0], + "89": [0, 0.7, 0.2939, 0], + "90": [0, 0.7, 0.24037, 0] + }, + "Size1-Regular": { + "40": [0.35001, 0.85, 0, 0], + "41": [0.35001, 0.85, 0, 0], + "47": [0.35001, 0.85, 0, 0], + "91": [0.35001, 0.85, 0, 0], + "92": [0.35001, 0.85, 0, 0], + "93": [0.35001, 0.85, 0, 0], + "123": [0.35001, 0.85, 0, 0], + "125": [0.35001, 0.85, 0, 0], + "710": [0, 0.72222, 0, 0], + "732": [0, 0.72222, 0, 0], + "770": [0, 0.72222, 0, 0], + "771": [0, 0.72222, 0, 0], + "8214": [-0.00099, 0.601, 0, 0], + "8593": [1e-05, 0.6, 0, 0], + "8595": [1e-05, 0.6, 0, 0], + "8657": [1e-05, 0.6, 0, 0], + "8659": [1e-05, 0.6, 0, 0], + "8719": [0.25001, 0.75, 0, 0], + "8720": [0.25001, 0.75, 0, 0], + "8721": [0.25001, 0.75, 0, 0], + "8730": [0.35001, 0.85, 0, 0], + "8739": [-0.00599, 0.606, 0, 0], + "8741": [-0.00599, 0.606, 0, 0], + "8747": [0.30612, 0.805, 0.19445, 0], + "8748": [0.306, 0.805, 0.19445, 0], + "8749": [0.306, 0.805, 0.19445, 0], + "8750": [0.30612, 0.805, 0.19445, 0], + "8896": [0.25001, 0.75, 0, 0], + "8897": [0.25001, 0.75, 0, 0], + "8898": [0.25001, 0.75, 0, 0], + "8899": [0.25001, 0.75, 0, 0], + "8968": [0.35001, 0.85, 0, 0], + "8969": [0.35001, 0.85, 0, 0], + "8970": [0.35001, 0.85, 0, 0], + "8971": [0.35001, 0.85, 0, 0], + "9168": [-0.00099, 0.601, 0, 0], + "10216": [0.35001, 0.85, 0, 0], + "10217": [0.35001, 0.85, 0, 0], + "10752": [0.25001, 0.75, 0, 0], + "10753": [0.25001, 0.75, 0, 0], + "10754": [0.25001, 0.75, 0, 0], + "10756": [0.25001, 0.75, 0, 0], + "10758": [0.25001, 0.75, 0, 0] + }, + "Size2-Regular": { + "40": [0.65002, 1.15, 0, 0], + "41": [0.65002, 1.15, 0, 0], + "47": [0.65002, 1.15, 0, 0], + "91": [0.65002, 1.15, 0, 0], + "92": [0.65002, 1.15, 0, 0], + "93": [0.65002, 1.15, 0, 0], + "123": [0.65002, 1.15, 0, 0], + "125": [0.65002, 1.15, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8719": [0.55001, 1.05, 0, 0], + "8720": [0.55001, 1.05, 0, 0], + "8721": [0.55001, 1.05, 0, 0], + "8730": [0.65002, 1.15, 0, 0], + "8747": [0.86225, 1.36, 0.44445, 0], + "8748": [0.862, 1.36, 0.44445, 0], + "8749": [0.862, 1.36, 0.44445, 0], + "8750": [0.86225, 1.36, 0.44445, 0], + "8896": [0.55001, 1.05, 0, 0], + "8897": [0.55001, 1.05, 0, 0], + "8898": [0.55001, 1.05, 0, 0], + "8899": [0.55001, 1.05, 0, 0], + "8968": [0.65002, 1.15, 0, 0], + "8969": [0.65002, 1.15, 0, 0], + "8970": [0.65002, 1.15, 0, 0], + "8971": [0.65002, 1.15, 0, 0], + "10216": [0.65002, 1.15, 0, 0], + "10217": [0.65002, 1.15, 0, 0], + "10752": [0.55001, 1.05, 0, 0], + "10753": [0.55001, 1.05, 0, 0], + "10754": [0.55001, 1.05, 0, 0], + "10756": [0.55001, 1.05, 0, 0], + "10758": [0.55001, 1.05, 0, 0] + }, + "Size3-Regular": { + "40": [0.95003, 1.45, 0, 0], + "41": [0.95003, 1.45, 0, 0], + "47": [0.95003, 1.45, 0, 0], + "91": [0.95003, 1.45, 0, 0], + "92": [0.95003, 1.45, 0, 0], + "93": [0.95003, 1.45, 0, 0], + "123": [0.95003, 1.45, 0, 0], + "125": [0.95003, 1.45, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8730": [0.95003, 1.45, 0, 0], + "8968": [0.95003, 1.45, 0, 0], + "8969": [0.95003, 1.45, 0, 0], + "8970": [0.95003, 1.45, 0, 0], + "8971": [0.95003, 1.45, 0, 0], + "10216": [0.95003, 1.45, 0, 0], + "10217": [0.95003, 1.45, 0, 0] + }, + "Size4-Regular": { + "40": [1.25003, 1.75, 0, 0], + "41": [1.25003, 1.75, 0, 0], + "47": [1.25003, 1.75, 0, 0], + "91": [1.25003, 1.75, 0, 0], + "92": [1.25003, 1.75, 0, 0], + "93": [1.25003, 1.75, 0, 0], + "123": [1.25003, 1.75, 0, 0], + "125": [1.25003, 1.75, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.825, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.825, 0, 0], + "8730": [1.25003, 1.75, 0, 0], + "8968": [1.25003, 1.75, 0, 0], + "8969": [1.25003, 1.75, 0, 0], + "8970": [1.25003, 1.75, 0, 0], + "8971": [1.25003, 1.75, 0, 0], + "9115": [0.64502, 1.155, 0, 0], + "9116": [1e-05, 0.6, 0, 0], + "9117": [0.64502, 1.155, 0, 0], + "9118": [0.64502, 1.155, 0, 0], + "9119": [1e-05, 0.6, 0, 0], + "9120": [0.64502, 1.155, 0, 0], + "9121": [0.64502, 1.155, 0, 0], + "9122": [-0.00099, 0.601, 0, 0], + "9123": [0.64502, 1.155, 0, 0], + "9124": [0.64502, 1.155, 0, 0], + "9125": [-0.00099, 0.601, 0, 0], + "9126": [0.64502, 1.155, 0, 0], + "9127": [1e-05, 0.9, 0, 0], + "9128": [0.65002, 1.15, 0, 0], + "9129": [0.90001, 0, 0, 0], + "9130": [0, 0.3, 0, 0], + "9131": [1e-05, 0.9, 0, 0], + "9132": [0.65002, 1.15, 0, 0], + "9133": [0.90001, 0, 0, 0], + "9143": [0.88502, 0.915, 0, 0], + "10216": [1.25003, 1.75, 0, 0], + "10217": [1.25003, 1.75, 0, 0], + "57344": [-0.00499, 0.605, 0, 0], + "57345": [-0.00499, 0.605, 0, 0], + "57680": [0, 0.12, 0, 0], + "57681": [0, 0.12, 0, 0], + "57682": [0, 0.12, 0, 0], + "57683": [0, 0.12, 0, 0] + }, + "Typewriter-Regular": { + "33": [0, 0.61111, 0, 0], + "34": [0, 0.61111, 0, 0], + "35": [0, 0.61111, 0, 0], + "36": [0.08333, 0.69444, 0, 0], + "37": [0.08333, 0.69444, 0, 0], + "38": [0, 0.61111, 0, 0], + "39": [0, 0.61111, 0, 0], + "40": [0.08333, 0.69444, 0, 0], + "41": [0.08333, 0.69444, 0, 0], + "42": [0, 0.52083, 0, 0], + "43": [-0.08056, 0.53055, 0, 0], + "44": [0.13889, 0.125, 0, 0], + "45": [-0.08056, 0.53055, 0, 0], + "46": [0, 0.125, 0, 0], + "47": [0.08333, 0.69444, 0, 0], + "48": [0, 0.61111, 0, 0], + "49": [0, 0.61111, 0, 0], + "50": [0, 0.61111, 0, 0], + "51": [0, 0.61111, 0, 0], + "52": [0, 0.61111, 0, 0], + "53": [0, 0.61111, 0, 0], + "54": [0, 0.61111, 0, 0], + "55": [0, 0.61111, 0, 0], + "56": [0, 0.61111, 0, 0], + "57": [0, 0.61111, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.13889, 0.43056, 0, 0], + "60": [-0.05556, 0.55556, 0, 0], + "61": [-0.19549, 0.41562, 0, 0], + "62": [-0.05556, 0.55556, 0, 0], + "63": [0, 0.61111, 0, 0], + "64": [0, 0.61111, 0, 0], + "65": [0, 0.61111, 0, 0], + "66": [0, 0.61111, 0, 0], + "67": [0, 0.61111, 0, 0], + "68": [0, 0.61111, 0, 0], + "69": [0, 0.61111, 0, 0], + "70": [0, 0.61111, 0, 0], + "71": [0, 0.61111, 0, 0], + "72": [0, 0.61111, 0, 0], + "73": [0, 0.61111, 0, 0], + "74": [0, 0.61111, 0, 0], + "75": [0, 0.61111, 0, 0], + "76": [0, 0.61111, 0, 0], + "77": [0, 0.61111, 0, 0], + "78": [0, 0.61111, 0, 0], + "79": [0, 0.61111, 0, 0], + "80": [0, 0.61111, 0, 0], + "81": [0.13889, 0.61111, 0, 0], + "82": [0, 0.61111, 0, 0], + "83": [0, 0.61111, 0, 0], + "84": [0, 0.61111, 0, 0], + "85": [0, 0.61111, 0, 0], + "86": [0, 0.61111, 0, 0], + "87": [0, 0.61111, 0, 0], + "88": [0, 0.61111, 0, 0], + "89": [0, 0.61111, 0, 0], + "90": [0, 0.61111, 0, 0], + "91": [0.08333, 0.69444, 0, 0], + "92": [0.08333, 0.69444, 0, 0], + "93": [0.08333, 0.69444, 0, 0], + "94": [0, 0.61111, 0, 0], + "95": [0.09514, 0, 0, 0], + "96": [0, 0.61111, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.61111, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.61111, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.61111, 0, 0], + "103": [0.22222, 0.43056, 0, 0], + "104": [0, 0.61111, 0, 0], + "105": [0, 0.61111, 0, 0], + "106": [0.22222, 0.61111, 0, 0], + "107": [0, 0.61111, 0, 0], + "108": [0, 0.61111, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.22222, 0.43056, 0, 0], + "113": [0.22222, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.55358, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0, 0], + "119": [0, 0.43056, 0, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.22222, 0.43056, 0, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.08333, 0.69444, 0, 0], + "124": [0.08333, 0.69444, 0, 0], + "125": [0.08333, 0.69444, 0, 0], + "126": [0, 0.61111, 0, 0], + "127": [0, 0.61111, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.22222, 0.43056, 0, 0], + "768": [0, 0.61111, 0, 0], + "769": [0, 0.61111, 0, 0], + "770": [0, 0.61111, 0, 0], + "771": [0, 0.61111, 0, 0], + "772": [0, 0.56555, 0, 0], + "774": [0, 0.61111, 0, 0], + "776": [0, 0.61111, 0, 0], + "778": [0, 0.61111, 0, 0], + "780": [0, 0.56597, 0, 0], + "915": [0, 0.61111, 0, 0], + "916": [0, 0.61111, 0, 0], + "920": [0, 0.61111, 0, 0], + "923": [0, 0.61111, 0, 0], + "926": [0, 0.61111, 0, 0], + "928": [0, 0.61111, 0, 0], + "931": [0, 0.61111, 0, 0], + "933": [0, 0.61111, 0, 0], + "934": [0, 0.61111, 0, 0], + "936": [0, 0.61111, 0, 0], + "937": [0, 0.61111, 0, 0], + "2018": [0, 0.61111, 0, 0], + "2019": [0, 0.61111, 0, 0], + "8242": [0, 0.61111, 0, 0] + } + }; + + },{}],43:[function(require,module,exports){ + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + var _ParseNode = require("./ParseNode"); + + var _ParseNode2 = _interopRequireDefault(_ParseNode); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /* This file contains a list of functions that we parse, identified by + * the calls to defineFunction. + * + * The first argument to defineFunction is a single name or a list of names. + * All functions named in such a list will share a single implementation. + * + * Each declared function can have associated properties, which + * include the following: + * + * - numArgs: The number of arguments the function takes. + * If this is the only property, it can be passed as a number + * instead of an element of a properties object. + * - argTypes: (optional) An array corresponding to each argument of the + * function, giving the type of argument that should be parsed. Its + * length should be equal to `numArgs + numOptionalArgs`. Valid + * types: + * - "size": A size-like thing, such as "1em" or "5ex" + * - "color": An html color, like "#abc" or "blue" + * - "original": The same type as the environment that the + * function being parsed is in (e.g. used for the + * bodies of functions like \textcolor where the + * first argument is special and the second + * argument is parsed normally) + * Other possible types (probably shouldn't be used) + * - "text": Text-like (e.g. \text) + * - "math": Normal math + * If undefined, this will be treated as an appropriate length + * array of "original" strings + * - greediness: (optional) The greediness of the function to use ungrouped + * arguments. + * + * E.g. if you have an expression + * \sqrt \frac 1 2 + * since \frac has greediness=2 vs \sqrt's greediness=1, \frac + * will use the two arguments '1' and '2' as its two arguments, + * then that whole function will be used as the argument to + * \sqrt. On the other hand, the expressions + * \frac \frac 1 2 3 + * and + * \frac \sqrt 1 2 + * will fail because \frac and \frac have equal greediness + * and \sqrt has a lower greediness than \frac respectively. To + * make these parse, we would have to change them to: + * \frac {\frac 1 2} 3 + * and + * \frac {\sqrt 1} 2 + * + * The default value is `1` + * - allowedInText: (optional) Whether or not the function is allowed inside + * text mode (default false) + * - numOptionalArgs: (optional) The number of optional arguments the function + * should parse. If the optional arguments aren't found, + * `null` will be passed to the handler in their place. + * (default 0) + * - infix: (optional) Must be true if the function is an infix operator. + * + * The last argument is that implementation, the handler for the function(s). + * It is called to handle these functions and their arguments. + * It receives two arguments: + * - context contains information and references provided by the parser + * - args is an array of arguments obtained from TeX input + * The context contains the following properties: + * - funcName: the text (i.e. name) of the function, including \ + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions in the overall string of the function + * and the arguments. + * The latter three should only be used to produce error messages. + * + * The function should return an object with the following keys: + * - type: The type of element that this is. This is then used in + * buildHTML/buildMathML to determine which function + * should be called to build this node into a DOM node + * Any other data can be added to the object, which will be passed + * in to the function in buildHTML/buildMathML as `group.value`. + */ + + function defineFunction(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of functions + var data = { + numArgs: props.numArgs, + argTypes: props.argTypes, + greediness: props.greediness === undefined ? 1 : props.greediness, + allowedInText: !!props.allowedInText, + allowedInMath: props.allowedInMath, + numOptionalArgs: props.numOptionalArgs || 0, + infix: !!props.infix, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } + } + + // Since the corresponding buildHTML/buildMathML function expects a + // list of elements, we normalize for different kinds of arguments + var ordargument = function ordargument(arg) { + if (arg.type === "ordgroup") { + return arg.value; + } else { + return [arg]; + } + }; + + // A normal square root + defineFunction("\\sqrt", { + numArgs: 1, + numOptionalArgs: 1 + }, function (context, args) { + var index = args[0]; + var body = args[1]; + return { + type: "sqrt", + body: body, + index: index + }; + }); + + // Non-mathy text, possibly in a font + var textFunctionStyles = { + "\\text": undefined, "\\textrm": "mathrm", "\\textsf": "mathsf", + "\\texttt": "mathtt", "\\textnormal": "mathrm", "\\textbf": "mathbf", + "\\textit": "textit" + }; + + defineFunction(["\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", "\\textbf", "\\textit"], { + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true + }, function (context, args) { + var body = args[0]; + return { + type: "text", + body: ordargument(body), + style: textFunctionStyles[context.funcName] + }; + }); + + // A two-argument custom color + defineFunction("\\textcolor", { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "original"] + }, function (context, args) { + var color = args[0]; + var body = args[1]; + return { + type: "color", + color: color.value, + value: ordargument(body) + }; + }); + + // \color is handled in Parser.js's parseImplicitGroup + defineFunction("\\color", { + numArgs: 1, + allowedInText: true, + greediness: 3, + argTypes: ["color"] + }, null); + + // An overline + defineFunction("\\overline", { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "overline", + body: body + }; + }); + + // An underline + defineFunction("\\underline", { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "underline", + body: body + }; + }); + + // A box of the width and height + defineFunction("\\rule", { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] + }, function (context, args) { + var shift = args[0]; + var width = args[1]; + var height = args[2]; + return { + type: "rule", + shift: shift && shift.value, + width: width.value, + height: height.value + }; + }); + + // TODO: In TeX, \mkern only accepts mu-units, and \kern does not accept + // mu-units. In current KaTeX we relax this; both commands accept any unit. + defineFunction(["\\kern", "\\mkern"], { + numArgs: 1, + argTypes: ["size"] + }, function (context, args) { + return { + type: "kern", + dimension: args[0].value + }; + }); + + // A KaTeX logo + defineFunction("\\KaTeX", { + numArgs: 0 + }, function (context) { + return { + type: "katex" + }; + }); + + defineFunction("\\phantom", { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "phantom", + value: ordargument(body) + }; + }); + + // Math class commands except \mathop + defineFunction(["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"], { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "mclass", + mclass: "m" + context.funcName.substr(5), + value: ordargument(body) + }; + }); + + // Build a relation by placing one symbol on top of another + defineFunction("\\stackrel", { + numArgs: 2 + }, function (context, args) { + var top = args[0]; + var bottom = args[1]; + + var bottomop = new _ParseNode2.default("op", { + type: "op", + limits: true, + alwaysHandleSupSub: true, + symbol: false, + value: ordargument(bottom) + }, bottom.mode); + + var supsub = new _ParseNode2.default("supsub", { + base: bottomop, + sup: top, + sub: null + }, top.mode); + + return { + type: "mclass", + mclass: "mrel", + value: [supsub] + }; + }); + + // \mod-type functions + defineFunction("\\bmod", { + numArgs: 0 + }, function (context, args) { + return { + type: "mod", + modType: "bmod", + value: null + }; + }); + + defineFunction(["\\pod", "\\pmod", "\\mod"], { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "mod", + modType: context.funcName.substr(1), + value: ordargument(body) + }; + }); + + // Extra data needed for the delimiter handler down below + var delimiterSizes = { + "\\bigl": { mclass: "mopen", size: 1 }, + "\\Bigl": { mclass: "mopen", size: 2 }, + "\\biggl": { mclass: "mopen", size: 3 }, + "\\Biggl": { mclass: "mopen", size: 4 }, + "\\bigr": { mclass: "mclose", size: 1 }, + "\\Bigr": { mclass: "mclose", size: 2 }, + "\\biggr": { mclass: "mclose", size: 3 }, + "\\Biggr": { mclass: "mclose", size: 4 }, + "\\bigm": { mclass: "mrel", size: 1 }, + "\\Bigm": { mclass: "mrel", size: 2 }, + "\\biggm": { mclass: "mrel", size: 3 }, + "\\Biggm": { mclass: "mrel", size: 4 }, + "\\big": { mclass: "mord", size: 1 }, + "\\Big": { mclass: "mord", size: 2 }, + "\\bigg": { mclass: "mord", size: 3 }, + "\\Bigg": { mclass: "mord", size: 4 } + }; + + var delimiters = ["(", ")", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."]; + + var fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak" + }; + + // Single-argument color functions + defineFunction(["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"], { + numArgs: 1, + allowedInText: true, + greediness: 3 + }, function (context, args) { + var body = args[0]; + return { + type: "color", + color: "katex-" + context.funcName.slice(1), + value: ordargument(body) + }; + }); + + // There are 2 flags for operators; whether they produce limits in + // displaystyle, and whether they are symbols and should grow in + // displaystyle. These four groups cover the four possible choices. + + // No limits, not symbols + defineFunction(["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"], { + numArgs: 0 + }, function (context) { + return { + type: "op", + limits: false, + symbol: false, + body: context.funcName + }; + }); + + // Limits, not symbols + defineFunction(["\\det", "\\gcd", "\\inf", "\\lim", "\\liminf", "\\limsup", "\\max", "\\min", "\\Pr", "\\sup"], { + numArgs: 0 + }, function (context) { + return { + type: "op", + limits: true, + symbol: false, + body: context.funcName + }; + }); + + // No limits, symbols + defineFunction(["\\int", "\\iint", "\\iiint", "\\oint"], { + numArgs: 0 + }, function (context) { + return { + type: "op", + limits: false, + symbol: true, + body: context.funcName + }; + }); + + // Limits, symbols + defineFunction(["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint"], { + numArgs: 0 + }, function (context) { + return { + type: "op", + limits: true, + symbol: true, + body: context.funcName + }; + }); + + // \mathop class command + defineFunction("\\mathop", { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "op", + limits: false, + symbol: false, + value: ordargument(body) + }; + }); + + // Fractions + defineFunction(["\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac"], { + numArgs: 2, + greediness: 2 + }, function (context, args) { + var numer = args[0]; + var denom = args[1]; + var hasBarLine = void 0; + var leftDelim = null; + var rightDelim = null; + var size = "auto"; + + switch (context.funcName) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + hasBarLine = true; + break; + case "\\\\atopfrac": + hasBarLine = false; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + hasBarLine = false; + leftDelim = "("; + rightDelim = ")"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + + switch (context.funcName) { + case "\\dfrac": + case "\\dbinom": + size = "display"; + break; + case "\\tfrac": + case "\\tbinom": + size = "text"; + break; + } + + return { + type: "genfrac", + numer: numer, + denom: denom, + hasBarLine: hasBarLine, + leftDelim: leftDelim, + rightDelim: rightDelim, + size: size + }; + }); + + // Left and right overlap functions + defineFunction(["\\llap", "\\rlap"], { + numArgs: 1, + allowedInText: true + }, function (context, args) { + var body = args[0]; + return { + type: context.funcName.slice(1), + body: body + }; + }); + + // Delimiter functions + var checkDelimiter = function checkDelimiter(delim, context) { + if (_utils2.default.contains(delimiters, delim.value)) { + return delim; + } else { + throw new _ParseError2.default("Invalid delimiter: '" + delim.value + "' after '" + context.funcName + "'", delim); + } + }; + + defineFunction(["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"], { + numArgs: 1 + }, function (context, args) { + var delim = checkDelimiter(args[0], context); + + return { + type: "delimsizing", + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + value: delim.value + }; + }); + + defineFunction(["\\left", "\\right"], { + numArgs: 1 + }, function (context, args) { + var delim = checkDelimiter(args[0], context); + + // \left and \right are caught somewhere in Parser.js, which is + // why this data doesn't match what is in buildHTML. + return { + type: "leftright", + value: delim.value + }; + }); + + defineFunction("\\middle", { + numArgs: 1 + }, function (context, args) { + var delim = checkDelimiter(args[0], context); + if (!context.parser.leftrightDepth) { + throw new _ParseError2.default("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + value: delim.value + }; + }); + + // Sizing functions (handled in Parser.js explicitly, hence no handler) + defineFunction(["\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], 0, null); + + // Style changing functions (handled in Parser.js explicitly, hence no + // handler) + defineFunction(["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"], 0, null); + + // Old font changing functions + defineFunction(["\\rm", "\\sf", "\\tt", "\\bf", "\\it"], 0, null); + + defineFunction([ + // styles + "\\mathrm", "\\mathit", "\\mathbf", + + // families + "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", + + // aliases + "\\Bbb", "\\bold", "\\frak"], { + numArgs: 1, + greediness: 2 + }, function (context, args) { + var body = args[0]; + var func = context.funcName; + if (func in fontAliases) { + func = fontAliases[func]; + } + return { + type: "font", + font: func.slice(1), + body: body + }; + }); + + // Accents + defineFunction(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"], { + numArgs: 1 + }, function (context, args) { + var base = args[0]; + + var isStretchy = !_utils2.default.contains(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot"], context.funcName); + + var isShifty = !isStretchy || _utils2.default.contains(["\\widehat", "\\widetilde"], context.funcName); + + return { + type: "accent", + label: context.funcName, + isStretchy: isStretchy, + isShifty: isShifty, + value: ordargument(base), + base: base + }; + }); + + // Text-mode accents + defineFunction(["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v"], { + numArgs: 1, + allowedInText: true, + allowedInMath: false + }, function (context, args) { + var base = args[0]; + + return { + type: "accent", + label: context.funcName, + isStretchy: false, + isShifty: true, + value: ordargument(base), + base: base + }; + }); + + // Horizontal stretchy braces + defineFunction(["\\overbrace", "\\underbrace"], { + numArgs: 1 + }, function (context, args) { + var base = args[0]; + return { + type: "horizBrace", + label: context.funcName, + isOver: /^\\over/.test(context.funcName), + base: base + }; + }); + + // Stretchy accents under the body + defineFunction(["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\undertilde"], { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "accentUnder", + label: context.funcName, + value: ordargument(body), + body: body + }; + }); + + // Stretchy arrows with an optional argument + defineFunction(["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xLongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xLongequal", "\\xtofrom"], { + numArgs: 1, + numOptionalArgs: 1 + }, function (context, args) { + var below = args[0]; + var body = args[1]; + return { + type: "xArrow", // x for extensible + label: context.funcName, + body: body, + below: below + }; + }); + + // enclose + defineFunction(["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\fbox"], { + numArgs: 1 + }, function (context, args) { + var body = args[0]; + return { + type: "enclose", + label: context.funcName, + body: body + }; + }); + + // Infix generalized fractions + defineFunction(["\\over", "\\choose", "\\atop"], { + numArgs: 0, + infix: true + }, function (context) { + var replaceWith = void 0; + switch (context.funcName) { + case "\\over": + replaceWith = "\\frac"; + break; + case "\\choose": + replaceWith = "\\binom"; + break; + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + replaceWith: replaceWith, + token: context.token + }; + }); + + // Row breaks for aligned data + defineFunction(["\\\\", "\\cr"], { + numArgs: 0, + numOptionalArgs: 1, + argTypes: ["size"] + }, function (context, args) { + var size = args[0]; + return { + type: "cr", + size: size + }; + }); + + // Environment delimiters + defineFunction(["\\begin", "\\end"], { + numArgs: 1, + argTypes: ["text"] + }, function (context, args) { + var nameGroup = args[0]; + if (nameGroup.type !== "ordgroup") { + throw new _ParseError2.default("Invalid environment name", nameGroup); + } + var name = ""; + for (var i = 0; i < nameGroup.value.length; ++i) { + name += nameGroup.value[i].value; + } + return { + type: "environment", + name: name, + nameGroup: nameGroup + }; + }); + + },{"./ParseError":29,"./ParseNode":30,"./utils":51}],44:[function(require,module,exports){ + + /** + * Predefined macros for KaTeX. + * This can be used to define some commands in terms of others. + */ + + // This function might one day accept additional argument and do more things. + function defineMacro(name, body) { + module.exports[name] = body; + } + + ////////////////////////////////////////////////////////////////////// + // basics + defineMacro("\\bgroup", "{"); + defineMacro("\\egroup", "}"); + defineMacro("\\begingroup", "{"); + defineMacro("\\endgroup", "}"); + + // We don't distinguish between math and nonmath kerns. + // (In TeX, the mu unit works only with \mkern.) + defineMacro("\\mkern", "\\kern"); + + ////////////////////////////////////////////////////////////////////// + // amsmath.sty + + // \def\overset#1#2{\binrel@{#2}\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} + defineMacro("\\overset", "\\mathop{#2}\\limits^{#1}"); + defineMacro("\\underset", "\\mathop{#2}\\limits_{#1}"); + + // \newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} + defineMacro("\\boxed", "\\fbox{\\displaystyle{#1}}"); + + //TODO: When implementing \dots, should ideally add the \DOTSB indicator + // into the macro, to indicate these are binary operators. + // \def\iff{\DOTSB\;\Longleftrightarrow\;} + // \def\implies{\DOTSB\;\Longrightarrow\;} + // \def\impliedby{\DOTSB\;\Longleftarrow\;} + defineMacro("\\iff", "\\;\\Longleftrightarrow\\;"); + defineMacro("\\implies", "\\;\\Longrightarrow\\;"); + defineMacro("\\impliedby", "\\;\\Longleftarrow\\;"); + + ////////////////////////////////////////////////////////////////////// + // mathtools.sty + + //\providecommand\ordinarycolon{:} + defineMacro("\\ordinarycolon", ":"); + //\def\vcentcolon{\mathrel{\mathop\ordinarycolon}} + //TODO(edemaine): Not yet centered. Fix via \raisebox or #726 + defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); + // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon} + defineMacro("\\dblcolon", "\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon"); + // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=} + defineMacro("\\coloneqq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}="); + // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=} + defineMacro("\\Coloneqq", "\\dblcolon\\mathrel{\\mkern-1.2mu}="); + // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}} + defineMacro("\\coloneq", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); + // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}} + defineMacro("\\Coloneq", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}"); + // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon} + defineMacro("\\eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\vcentcolon"); + // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon} + defineMacro("\\Eqqcolon", "=\\mathrel{\\mkern-1.2mu}\\dblcolon"); + // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon} + defineMacro("\\eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon"); + // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon} + defineMacro("\\Eqcolon", "\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon"); + // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx} + defineMacro("\\colonapprox", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx"); + // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx} + defineMacro("\\Colonapprox", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx"); + // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim} + defineMacro("\\colonsim", "\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim"); + // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim} + defineMacro("\\Colonsim", "\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim"); + + ////////////////////////////////////////////////////////////////////// + // colonequals.sty + + // Alternate names for mathtools's macros: + defineMacro("\\ratio", "\\vcentcolon"); + defineMacro("\\coloncolon", "\\dblcolon"); + defineMacro("\\colonequals", "\\coloneqq"); + defineMacro("\\coloncolonequals", "\\Coloneqq"); + defineMacro("\\equalscolon", "\\eqqcolon"); + defineMacro("\\equalscoloncolon", "\\Eqqcolon"); + defineMacro("\\colonminus", "\\coloneq"); + defineMacro("\\coloncolonminus", "\\Coloneq"); + defineMacro("\\minuscolon", "\\eqcolon"); + defineMacro("\\minuscoloncolon", "\\Eqcolon"); + // \colonapprox name is same in mathtools and colonequals. + defineMacro("\\coloncolonapprox", "\\Colonapprox"); + // \colonsim name is same in mathtools and colonequals. + defineMacro("\\coloncolonsim", "\\Colonsim"); + + // Additional macros, implemented by analogy with mathtools definitions: + defineMacro("\\simcolon", "\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon"); + defineMacro("\\simcoloncolon", "\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon"); + defineMacro("\\approxcolon", "\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon"); + defineMacro("\\approxcoloncolon", "\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon"); + + },{}],45:[function(require,module,exports){ + + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); + + var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + + var _createClass2 = require("babel-runtime/helpers/createClass"); + + var _createClass3 = _interopRequireDefault(_createClass2); + + var _utils = require("./utils"); + + var _utils2 = _interopRequireDefault(_utils); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `` and `` tags). + */ + var MathNode = function () { + function MathNode(type, children) { + (0, _classCallCheck3.default)(this, MathNode); + + this.type = type; + this.attributes = {}; + this.children = children || []; + } + + /** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ + + + (0, _createClass3.default)(MathNode, [{ + key: "setAttribute", + value: function setAttribute(name, value) { + this.attributes[name] = value; + } + + /** + * Converts the math node into a MathML-namespaced DOM element. + */ + + }, { + key: "toNode", + value: function toNode() { + var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type); + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + node.setAttribute(attr, this.attributes[attr]); + } + } + + for (var i = 0; i < this.children.length; i++) { + node.appendChild(this.children[i].toNode()); + } + + return node; + } + + /** + * Converts the math node into an HTML markup string. + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + var markup = "<" + this.type; + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) { + markup += " " + attr + "=\""; + markup += _utils2.default.escape(this.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this.children[i].toMarkup(); + } + + markup += ""; + + return markup; + } + }]); + return MathNode; + }(); + + /** + * This node represents a piece of text. + */ + /** + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. + */ + + var TextNode = function () { + function TextNode(text) { + (0, _classCallCheck3.default)(this, TextNode); + + this.text = text; + } + + /** + * Converts the text node into a DOM text node. + */ + + + (0, _createClass3.default)(TextNode, [{ + key: "toNode", + value: function toNode() { + return document.createTextNode(this.text); + } + + /** + * Converts the text node into HTML markup (which is just the text itself). + */ + + }, { + key: "toMarkup", + value: function toMarkup() { + return _utils2.default.escape(this.text); + } + }]); + return TextNode; + }(); + + module.exports = { + MathNode: MathNode, + TextNode: TextNode + }; + + },{"./utils":51,"babel-runtime/helpers/classCallCheck":4,"babel-runtime/helpers/createClass":5}],46:[function(require,module,exports){ + + var _Parser = require('./Parser'); + + var _Parser2 = _interopRequireDefault(_Parser); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + /** + * Parses an expression using a Parser, then returns the parsed result. + */ + var parseTree = function parseTree(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + var parser = new _Parser2.default(toParse, settings); + + return parser.parse(); + }; /** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + + module.exports = parseTree; + + },{"./Parser":31}],47:[function(require,module,exports){ + + /** + * This file provides support to buildMathML.js and buildHTML.js + * for stretchy wide elements rendered from SVG files + * and other CSS trickery. + */ + + var buildCommon = require("./buildCommon"); + var mathMLTree = require("./mathMLTree"); + var utils = require("./utils"); + + var stretchyCodePoint = { + widehat: "^", + widetilde: "~", + undertilde: "~", + overleftarrow: "\u2190", + underleftarrow: "\u2190", + xleftarrow: "\u2190", + overrightarrow: "\u2192", + underrightarrow: "\u2192", + xrightarrow: "\u2192", + underbrace: "\u23B5", + overbrace: "\u23DE", + overleftrightarrow: "\u2194", + underleftrightarrow: "\u2194", + xleftrightarrow: "\u2194", + Overrightarrow: "\u21D2", + xRightarrow: "\u21D2", + overleftharpoon: "\u21BC", + xleftharpoonup: "\u21BC", + overrightharpoon: "\u21C0", + xrightharpoonup: "\u21C0", + xLeftarrow: "\u21D0", + xLeftrightarrow: "\u21D4", + xhookleftarrow: "\u21A9", + xhookrightarrow: "\u21AA", + xmapsto: "\u21A6", + xrightharpoondown: "\u21C1", + xleftharpoondown: "\u21BD", + xrightleftharpoons: "\u21CC", + xleftrightharpoons: "\u21CB", + xtwoheadleftarrow: "\u219E", + xtwoheadrightarrow: "\u21A0", + xLongequal: "=", + xtofrom: "\u21C4" + }; + + var mathMLnode = function mathMLnode(label) { + var node = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.substr(1)])]); + node.setAttribute("stretchy", "true"); + return node; + }; + + // In the katexImagesData object just below, the dimensions all + // correspond to path geometry inside the relevant SVG. + // For example, \rightarrow uses the same arrowhead as glyph U+2192 + // from the KaTeX Main font. The scaling factor is 1000. + // That is, inside the font, that arrowhead is 522 units tall, which + // corresponds to 0.522 em inside the document. + // And for extensible arrows, we split that distance around the math axis. + + var katexImagesData = { + // height, depth, imageName, minWidth + overleftarrow: [0.522, 0, "leftarrow", 0.5], + underleftarrow: [0.522, 0, "leftarrow", 0.5], + xleftarrow: [0.261, 0.261, "leftarrow", 0.783], + overrightarrow: [0.522, 0, "rightarrow", 0.5], + underrightarrow: [0.522, 0, "rightarrow", 0.5], + xrightarrow: [0.261, 0.261, "rightarrow", 0.783], + overbrace: [0.548, 0, "overbrace", 1.6], + underbrace: [0.548, 0, "underbrace", 1.6], + overleftrightarrow: [0.522, 0, "leftrightarrow", 0.5], + underleftrightarrow: [0.522, 0, "leftrightarrow", 0.5], + xleftrightarrow: [0.261, 0.261, "leftrightarrow", 0.783], + Overrightarrow: [0.56, 0, "doublerightarrow", 0.5], + xLeftarrow: [0.28, 0.28, "doubleleftarrow", 0.783], + xRightarrow: [0.28, 0.28, "doublerightarrow", 0.783], + xLeftrightarrow: [0.28, 0.28, "doubleleftrightarrow", 0.955], + overleftharpoon: [0.522, 0, "leftharpoon", 0.5], + overrightharpoon: [0.522, 0, "rightharpoon", 0.5], + xleftharpoonup: [0.261, 0.261, "leftharpoon", 0.783], + xrightharpoonup: [0.261, 0.261, "rightharpoon", 0.783], + xhookleftarrow: [0.261, 0.261, "hookleftarrow", 0.87], + xhookrightarrow: [0.261, 0.261, "hookrightarrow", 0.87], + overlinesegment: [0.414, 0, "linesegment", 0.5], + underlinesegment: [0.414, 0, "linesegment", 0.5], + xmapsto: [0.261, 0.261, "mapsto", 0.783], + xrightharpoondown: [0.261, 0.261, "rightharpoondown", 0.783], + xleftharpoondown: [0.261, 0.261, "leftharpoondown", 0.783], + xrightleftharpoons: [0.358, 0.358, "rightleftharpoons", 0.716], + xleftrightharpoons: [0.358, 0.358, "leftrightharpoons", 0.716], + overgroup: [0.342, 0, "overgroup", 0.87], + undergroup: [0.342, 0, "undergroup", 0.87], + xtwoheadleftarrow: [0.167, 0.167, "twoheadleftarrow", 0.86], + xtwoheadrightarrow: [0.167, 0.167, "twoheadrightarrow", 0.86], + xLongequal: [0.167, 0.167, "longequal", 0.5], + xtofrom: [0.264, 0.264, "tofrom", 0.86] + }; + + // Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts. + // Copyright (c) 2009-2010, Design Science, Inc. () + // Copyright (c) 2014-2017 Khan Academy () + // Licensed under the SIL Open Font License, Version 1.1. + // See \nhttp://scripts.sil.org/OFL + + // Nested SVGs + // Many of the KaTeX SVG images contain a nested SVG. This is done to + // achieve a stretchy image while avoiding distortion of arrowheads or + // brace corners. + + // The inner SVG typically contains a very long (400 em) arrow. + + // The outer SVG acts like a window that exposes only part of the inner SVG. + // The outer SVG will grow or shrink to match the dimensions set by CSS. + + // The inner SVG always has a longer, thinner aspect ratio than the outer + // SVG. After the inner SVG fills 100% of the height of the outer SVG, + // there is a long arrow shaft left over. That left-over shaft is not shown. + // Instead, it is sliced off because the inner SVG is set to + // "preserveAspectRatio='... slice'". + + // Thus, the reader sees an arrow that matches the subject matter width + // without distortion. + + // Some functions, such as \cancel, need to vary their aspect ratio. These + // functions do not get the nested SVG treatment. + + // Second Brush Stroke + // Low resolution monitors struggle to display images in fine detail. + // So browsers apply anti-aliasing. A long straight arrow shaft therefore + // will sometimes appear as if it has a blurred edge. + + // To mitigate this, these SVG files contain a second "brush-stroke" on the + // arrow shafts. That is, a second long thin rectangular SVG path has been + // written directly on top of each arrow shaft. This reinforcement causes + // some of the screen pixels to display as black instead of the anti-aliased + // gray pixel that a single path would generate. So we get arrow shafts + // whose edges appear to be sharper. + + var svgPath = { + doubleleftarrow: "", + + doublerightarrow: "", + + leftarrow: "", + + rightarrow: "" + }; + + var innerSVG = { + // Since bcancel's SVG is inline and it omits the viewBox attribute, + // it's stroke-width will not vary with span area. + bcancel: "", + + cancel: "", + + // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main + doubleleftarrow: ">" + svgPath["doubleleftarrow"] + "", + + // doubleleftrightarrow is from glyph U+21D4 in font KaTeX Main + doubleleftrightarrow: ">" + svgPath["doubleleftarrow"] + "\n" + svgPath["doublerightarrow"] + "", + + // doublerightarrow is from glyph U+21D2 in font KaTeX Main + doublerightarrow: ">" + svgPath["doublerightarrow"] + "", + + // hookleftarrow is from glyph U+21A9 in font KaTeX Main + hookleftarrow: ">" + svgPath["leftarrow"] + "\n", + + // hookrightarrow is from glyph U+21AA in font KaTeX Main + hookrightarrow: ">" + svgPath["rightarrow"] + "", + + // leftarrow is from glyph U+2190 in font KaTeX Main + leftarrow: ">" + svgPath["leftarrow"] + "", + + // leftharpoon is from glyph U+21BD in font KaTeX Main + leftharpoon: ">", + + // leftharpoondown is from glyph U+21BD in font KaTeX Main + leftharpoondown: ">", + + // leftrightarrow is from glyph U+2194 in font KaTeX Main + leftrightarrow: ">" + svgPath["leftarrow"] + "\n" + svgPath["rightarrow"] + "", + + // leftrightharpoons is from glyphs U+21BC/21B1 in font KaTeX Main + leftrightharpoons: ">\n", + + linesegment: ">\n", + + longequal: " viewBox='0 0 100 334' preserveAspectRatio='none'>\n", + + // mapsto is from glyph U+21A6 in font KaTeX Main + mapsto: ">" + svgPath["rightarrow"] + "", + + // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + overbrace: ">\n", + + // overgroup is from the MnSymbol package (public domain) + overgroup: ">", + + // rightarrow is from glyph U+2192 in font KaTeX Main + rightarrow: ">" + svgPath["rightarrow"] + "", + + // rightharpoon is from glyph U+21C0 in font KaTeX Main + rightharpoon: ">", + + // rightharpoondown is from glyph U+21C1 in font KaTeX Main + rightharpoondown: ">", + + // rightleftharpoons is from glyph U+21CC in font KaTeX Main + rightleftharpoons: ">", + + // tilde1 is a modified version of a glyph from the MnSymbol package + tilde1: " viewBox='0 0 600 260' preserveAspectRatio='none'>\n", + + // Ditto tilde2, tilde3, and tilde 4 + tilde2: " viewBox='0 0 1033 286' preserveAspectRatio='none'>\n", + + tilde3: " viewBox='0 0 2339 306' preserveAspectRatio='none'>\n", + + tilde4: " viewBox='0 0 2340 312' preserveAspectRatio='none'>\n", + + // tofrom is from glyph U+21C4 in font KaTeX AMS Regular + tofrom: ">", + + // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular + twoheadleftarrow: ">\n", + + // twoheadrightarrow is from glyph U+21A0 in font KaTeX AMS Regular + twoheadrightarrow: ">\n", + + // underbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular + underbrace: ">\n", + + // undergroup is from the MnSymbol package (public domain) + undergroup: ">", + + // widehat1 is a modified version of a glyph from the MnSymbol package + widehat1: " viewBox='0 0 1062 239' preserveAspectRatio='none'>\n", + + // Ditto widehat2, widehat3, and widehat4 + widehat2: " viewBox='0 0 2364 300' preserveAspectRatio='none'>\n", + + widehat3: " viewBox='0 0 2364 360' preserveAspectRatio='none'>\n", + + widehat4: " viewBox='0 0 2364 420' preserveAspectRatio='none'>\n", + + xcancel: "\n" + }; + + var svgSpan = function svgSpan(group, options) { + // Create a span with inline SVG for the element. + var label = group.value.label.substr(1); + var height = 0; + var depth = 0; + var imageName = ""; + var minWidth = 0; + + if (utils.contains(["widehat", "widetilde", "undertilde"], label)) { + // There are four SVG images available for each function. + // Choose a taller image when there are more characters. + var numChars = group.value.value.length; + if (numChars > 5) { + height = 0.312; + imageName = (label === "widehat" ? "widehat" : "tilde") + "4"; + } else { + var imgIndex = [1, 1, 2, 2, 3, 3][numChars]; + if (label === "widehat") { + height = [0, 0.24, 0.30, 0.30, 0.36, 0.36][numChars]; + imageName = "widehat" + imgIndex; + } else { + height = [0, 0.26, 0.30, 0.30, 0.34, 0.34][numChars]; + imageName = "tilde" + imgIndex; + } + } + } else { + var imgData = katexImagesData[label]; + height = imgData[0]; + depth = imgData[1]; + imageName = imgData[2]; + minWidth = imgData[3]; + } + + var span = buildCommon.makeSpan([], [], options); + span.height = height; + span.depth = depth; + var totalHeight = height + depth; + span.style.height = totalHeight + "em"; + if (minWidth > 0) { + span.style.minWidth = minWidth + "em"; + } + + span.innerHTML = ""; + + return span; + }; + + var encloseSpan = function encloseSpan(inner, label, pad, options) { + // Return an image span for \cancel, \bcancel, \xcancel, or \fbox + var img = void 0; + var totalHeight = inner.height + inner.depth + 2 * pad; + + if (label === "fbox") { + img = buildCommon.makeSpan(["stretchy", label], [], options); + if (options.color) { + img.style.borderColor = options.getColor(); + } + } else { + img = buildCommon.makeSpan([], [], options); + img.innerHTML = "" + innerSVG[label] + ""; + } + + img.height = totalHeight; + img.style.height = totalHeight + "em"; + + return img; + }; + + module.exports = { + encloseSpan: encloseSpan, + mathMLnode: mathMLnode, + svgSpan: svgSpan + }; + + },{"./buildCommon":34,"./mathMLTree":45,"./utils":51}],48:[function(require,module,exports){ + + /** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ + + module.exports = { + math: {}, + text: {} + }; + + function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) { + module.exports[mode][name] = { + font: font, + group: group, + replace: replace + }; + + if (acceptUnicodeChar) { + module.exports[mode][replace] = module.exports[mode][name]; + } + } + + // Some abbreviations for commonly used strings. + // This helps minify the code, and also spotting typos using jshint. + + // modes: + var math = "math"; + var text = "text"; + + // fonts: + var main = "main"; + var ams = "ams"; + + // groups: + var accent = "accent"; + var bin = "bin"; + var close = "close"; + var inner = "inner"; + var mathord = "mathord"; + var op = "op"; + var open = "open"; + var punct = "punct"; + var rel = "rel"; + var spacing = "spacing"; + var textord = "textord"; + + // Now comes the symbol table + + // Relation Symbols + defineSymbol(math, main, rel, "\u2261", "\\equiv"); + defineSymbol(math, main, rel, "\u227A", "\\prec"); + defineSymbol(math, main, rel, "\u227B", "\\succ"); + defineSymbol(math, main, rel, "\u223C", "\\sim"); + defineSymbol(math, main, rel, "\u22A5", "\\perp"); + defineSymbol(math, main, rel, "\u2AAF", "\\preceq"); + defineSymbol(math, main, rel, "\u2AB0", "\\succeq"); + defineSymbol(math, main, rel, "\u2243", "\\simeq"); + defineSymbol(math, main, rel, "\u2223", "\\mid"); + defineSymbol(math, main, rel, "\u226A", "\\ll"); + defineSymbol(math, main, rel, "\u226B", "\\gg"); + defineSymbol(math, main, rel, "\u224D", "\\asymp"); + defineSymbol(math, main, rel, "\u2225", "\\parallel"); + defineSymbol(math, main, rel, "\u22C8", "\\bowtie"); + defineSymbol(math, main, rel, "\u2323", "\\smile"); + defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq"); + defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq"); + defineSymbol(math, main, rel, "\u2250", "\\doteq"); + defineSymbol(math, main, rel, "\u2322", "\\frown"); + defineSymbol(math, main, rel, "\u220B", "\\ni"); + defineSymbol(math, main, rel, "\u221D", "\\propto"); + defineSymbol(math, main, rel, "\u22A2", "\\vdash"); + defineSymbol(math, main, rel, "\u22A3", "\\dashv"); + defineSymbol(math, main, rel, "\u220B", "\\owns"); + + // Punctuation + defineSymbol(math, main, punct, ".", "\\ldotp"); + defineSymbol(math, main, punct, "\u22C5", "\\cdotp"); + + // Misc Symbols + defineSymbol(math, main, textord, "#", "\\#"); + defineSymbol(text, main, textord, "#", "\\#"); + defineSymbol(math, main, textord, "&", "\\&"); + defineSymbol(text, main, textord, "&", "\\&"); + defineSymbol(math, main, textord, "\u2135", "\\aleph"); + defineSymbol(math, main, textord, "\u2200", "\\forall"); + defineSymbol(math, main, textord, "\u210F", "\\hbar"); + defineSymbol(math, main, textord, "\u2203", "\\exists"); + defineSymbol(math, main, textord, "\u2207", "\\nabla"); + defineSymbol(math, main, textord, "\u266D", "\\flat"); + defineSymbol(math, main, textord, "\u2113", "\\ell"); + defineSymbol(math, main, textord, "\u266E", "\\natural"); + defineSymbol(math, main, textord, "\u2663", "\\clubsuit"); + defineSymbol(math, main, textord, "\u2118", "\\wp"); + defineSymbol(math, main, textord, "\u266F", "\\sharp"); + defineSymbol(math, main, textord, "\u2662", "\\diamondsuit"); + defineSymbol(math, main, textord, "\u211C", "\\Re"); + defineSymbol(math, main, textord, "\u2661", "\\heartsuit"); + defineSymbol(math, main, textord, "\u2111", "\\Im"); + defineSymbol(math, main, textord, "\u2660", "\\spadesuit"); + + // Math and Text + defineSymbol(math, main, textord, "\u2020", "\\dag"); + defineSymbol(text, main, textord, "\u2020", "\\dag"); + defineSymbol(text, main, textord, "\u2020", "\\textdagger"); + defineSymbol(math, main, textord, "\u2021", "\\ddag"); + defineSymbol(text, main, textord, "\u2021", "\\ddag"); + defineSymbol(text, main, textord, "\u2020", "\\textdaggerdbl"); + + // Large Delimiters + defineSymbol(math, main, close, "\u23B1", "\\rmoustache"); + defineSymbol(math, main, open, "\u23B0", "\\lmoustache"); + defineSymbol(math, main, close, "\u27EF", "\\rgroup"); + defineSymbol(math, main, open, "\u27EE", "\\lgroup"); + + // Binary Operators + defineSymbol(math, main, bin, "\u2213", "\\mp"); + defineSymbol(math, main, bin, "\u2296", "\\ominus"); + defineSymbol(math, main, bin, "\u228E", "\\uplus"); + defineSymbol(math, main, bin, "\u2293", "\\sqcap"); + defineSymbol(math, main, bin, "\u2217", "\\ast"); + defineSymbol(math, main, bin, "\u2294", "\\sqcup"); + defineSymbol(math, main, bin, "\u25EF", "\\bigcirc"); + defineSymbol(math, main, bin, "\u2219", "\\bullet"); + defineSymbol(math, main, bin, "\u2021", "\\ddagger"); + defineSymbol(math, main, bin, "\u2240", "\\wr"); + defineSymbol(math, main, bin, "\u2A3F", "\\amalg"); + + // Arrow Symbols + defineSymbol(math, main, rel, "\u27F5", "\\longleftarrow"); + defineSymbol(math, main, rel, "\u21D0", "\\Leftarrow"); + defineSymbol(math, main, rel, "\u27F8", "\\Longleftarrow"); + defineSymbol(math, main, rel, "\u27F6", "\\longrightarrow"); + defineSymbol(math, main, rel, "\u21D2", "\\Rightarrow"); + defineSymbol(math, main, rel, "\u27F9", "\\Longrightarrow"); + defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow"); + defineSymbol(math, main, rel, "\u27F7", "\\longleftrightarrow"); + defineSymbol(math, main, rel, "\u21D4", "\\Leftrightarrow"); + defineSymbol(math, main, rel, "\u27FA", "\\Longleftrightarrow"); + defineSymbol(math, main, rel, "\u21A6", "\\mapsto"); + defineSymbol(math, main, rel, "\u27FC", "\\longmapsto"); + defineSymbol(math, main, rel, "\u2197", "\\nearrow"); + defineSymbol(math, main, rel, "\u21A9", "\\hookleftarrow"); + defineSymbol(math, main, rel, "\u21AA", "\\hookrightarrow"); + defineSymbol(math, main, rel, "\u2198", "\\searrow"); + defineSymbol(math, main, rel, "\u21BC", "\\leftharpoonup"); + defineSymbol(math, main, rel, "\u21C0", "\\rightharpoonup"); + defineSymbol(math, main, rel, "\u2199", "\\swarrow"); + defineSymbol(math, main, rel, "\u21BD", "\\leftharpoondown"); + defineSymbol(math, main, rel, "\u21C1", "\\rightharpoondown"); + defineSymbol(math, main, rel, "\u2196", "\\nwarrow"); + defineSymbol(math, main, rel, "\u21CC", "\\rightleftharpoons"); + + // AMS Negated Binary Relations + defineSymbol(math, ams, rel, "\u226E", "\\nless"); + defineSymbol(math, ams, rel, "\uE010", "\\nleqslant"); + defineSymbol(math, ams, rel, "\uE011", "\\nleqq"); + defineSymbol(math, ams, rel, "\u2A87", "\\lneq"); + defineSymbol(math, ams, rel, "\u2268", "\\lneqq"); + defineSymbol(math, ams, rel, "\uE00C", "\\lvertneqq"); + defineSymbol(math, ams, rel, "\u22E6", "\\lnsim"); + defineSymbol(math, ams, rel, "\u2A89", "\\lnapprox"); + defineSymbol(math, ams, rel, "\u2280", "\\nprec"); + defineSymbol(math, ams, rel, "\u22E0", "\\npreceq"); + defineSymbol(math, ams, rel, "\u22E8", "\\precnsim"); + defineSymbol(math, ams, rel, "\u2AB9", "\\precnapprox"); + defineSymbol(math, ams, rel, "\u2241", "\\nsim"); + defineSymbol(math, ams, rel, "\uE006", "\\nshortmid"); + defineSymbol(math, ams, rel, "\u2224", "\\nmid"); + defineSymbol(math, ams, rel, "\u22AC", "\\nvdash"); + defineSymbol(math, ams, rel, "\u22AD", "\\nvDash"); + defineSymbol(math, ams, rel, "\u22EA", "\\ntriangleleft"); + defineSymbol(math, ams, rel, "\u22EC", "\\ntrianglelefteq"); + defineSymbol(math, ams, rel, "\u228A", "\\subsetneq"); + defineSymbol(math, ams, rel, "\uE01A", "\\varsubsetneq"); + defineSymbol(math, ams, rel, "\u2ACB", "\\subsetneqq"); + defineSymbol(math, ams, rel, "\uE017", "\\varsubsetneqq"); + defineSymbol(math, ams, rel, "\u226F", "\\ngtr"); + defineSymbol(math, ams, rel, "\uE00F", "\\ngeqslant"); + defineSymbol(math, ams, rel, "\uE00E", "\\ngeqq"); + defineSymbol(math, ams, rel, "\u2A88", "\\gneq"); + defineSymbol(math, ams, rel, "\u2269", "\\gneqq"); + defineSymbol(math, ams, rel, "\uE00D", "\\gvertneqq"); + defineSymbol(math, ams, rel, "\u22E7", "\\gnsim"); + defineSymbol(math, ams, rel, "\u2A8A", "\\gnapprox"); + defineSymbol(math, ams, rel, "\u2281", "\\nsucc"); + defineSymbol(math, ams, rel, "\u22E1", "\\nsucceq"); + defineSymbol(math, ams, rel, "\u22E9", "\\succnsim"); + defineSymbol(math, ams, rel, "\u2ABA", "\\succnapprox"); + defineSymbol(math, ams, rel, "\u2246", "\\ncong"); + defineSymbol(math, ams, rel, "\uE007", "\\nshortparallel"); + defineSymbol(math, ams, rel, "\u2226", "\\nparallel"); + defineSymbol(math, ams, rel, "\u22AF", "\\nVDash"); + defineSymbol(math, ams, rel, "\u22EB", "\\ntriangleright"); + defineSymbol(math, ams, rel, "\u22ED", "\\ntrianglerighteq"); + defineSymbol(math, ams, rel, "\uE018", "\\nsupseteqq"); + defineSymbol(math, ams, rel, "\u228B", "\\supsetneq"); + defineSymbol(math, ams, rel, "\uE01B", "\\varsupsetneq"); + defineSymbol(math, ams, rel, "\u2ACC", "\\supsetneqq"); + defineSymbol(math, ams, rel, "\uE019", "\\varsupsetneqq"); + defineSymbol(math, ams, rel, "\u22AE", "\\nVdash"); + defineSymbol(math, ams, rel, "\u2AB5", "\\precneqq"); + defineSymbol(math, ams, rel, "\u2AB6", "\\succneqq"); + defineSymbol(math, ams, rel, "\uE016", "\\nsubseteqq"); + defineSymbol(math, ams, bin, "\u22B4", "\\unlhd"); + defineSymbol(math, ams, bin, "\u22B5", "\\unrhd"); + + // AMS Negated Arrows + defineSymbol(math, ams, rel, "\u219A", "\\nleftarrow"); + defineSymbol(math, ams, rel, "\u219B", "\\nrightarrow"); + defineSymbol(math, ams, rel, "\u21CD", "\\nLeftarrow"); + defineSymbol(math, ams, rel, "\u21CF", "\\nRightarrow"); + defineSymbol(math, ams, rel, "\u21AE", "\\nleftrightarrow"); + defineSymbol(math, ams, rel, "\u21CE", "\\nLeftrightarrow"); + + // AMS Misc + defineSymbol(math, ams, rel, "\u25B3", "\\vartriangle"); + defineSymbol(math, ams, textord, "\u210F", "\\hslash"); + defineSymbol(math, ams, textord, "\u25BD", "\\triangledown"); + defineSymbol(math, ams, textord, "\u25CA", "\\lozenge"); + defineSymbol(math, ams, textord, "\u24C8", "\\circledS"); + defineSymbol(math, ams, textord, "\xAE", "\\circledR"); + defineSymbol(text, ams, textord, "\xAE", "\\circledR"); + defineSymbol(math, ams, textord, "\u2221", "\\measuredangle"); + defineSymbol(math, ams, textord, "\u2204", "\\nexists"); + defineSymbol(math, ams, textord, "\u2127", "\\mho"); + defineSymbol(math, ams, textord, "\u2132", "\\Finv"); + defineSymbol(math, ams, textord, "\u2141", "\\Game"); + defineSymbol(math, ams, textord, "k", "\\Bbbk"); + defineSymbol(math, ams, textord, "\u2035", "\\backprime"); + defineSymbol(math, ams, textord, "\u25B2", "\\blacktriangle"); + defineSymbol(math, ams, textord, "\u25BC", "\\blacktriangledown"); + defineSymbol(math, ams, textord, "\u25A0", "\\blacksquare"); + defineSymbol(math, ams, textord, "\u29EB", "\\blacklozenge"); + defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); + defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle"); + defineSymbol(math, ams, textord, "\u2201", "\\complement"); + defineSymbol(math, ams, textord, "\xF0", "\\eth"); + defineSymbol(math, ams, textord, "\u2571", "\\diagup"); + defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); + defineSymbol(math, ams, textord, "\u25A1", "\\square"); + defineSymbol(math, ams, textord, "\u25A1", "\\Box"); + defineSymbol(math, ams, textord, "\u25CA", "\\Diamond"); + defineSymbol(math, ams, textord, "\xA5", "\\yen"); + defineSymbol(math, ams, textord, "\u2713", "\\checkmark"); + defineSymbol(text, ams, textord, "\u2713", "\\checkmark"); + + // AMS Hebrew + defineSymbol(math, ams, textord, "\u2136", "\\beth"); + defineSymbol(math, ams, textord, "\u2138", "\\daleth"); + defineSymbol(math, ams, textord, "\u2137", "\\gimel"); + + // AMS Greek + defineSymbol(math, ams, textord, "\u03DD", "\\digamma"); + defineSymbol(math, ams, textord, "\u03F0", "\\varkappa"); + + // AMS Delimiters + defineSymbol(math, ams, open, "\u250C", "\\ulcorner"); + defineSymbol(math, ams, close, "\u2510", "\\urcorner"); + defineSymbol(math, ams, open, "\u2514", "\\llcorner"); + defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); + + // AMS Binary Relations + defineSymbol(math, ams, rel, "\u2266", "\\leqq"); + defineSymbol(math, ams, rel, "\u2A7D", "\\leqslant"); + defineSymbol(math, ams, rel, "\u2A95", "\\eqslantless"); + defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); + defineSymbol(math, ams, rel, "\u2A85", "\\lessapprox"); + defineSymbol(math, ams, rel, "\u224A", "\\approxeq"); + defineSymbol(math, ams, bin, "\u22D6", "\\lessdot"); + defineSymbol(math, ams, rel, "\u22D8", "\\lll"); + defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); + defineSymbol(math, ams, rel, "\u22DA", "\\lesseqgtr"); + defineSymbol(math, ams, rel, "\u2A8B", "\\lesseqqgtr"); + defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); + defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq"); + defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq"); + defineSymbol(math, ams, rel, "\u223D", "\\backsim"); + defineSymbol(math, ams, rel, "\u22CD", "\\backsimeq"); + defineSymbol(math, ams, rel, "\u2AC5", "\\subseteqq"); + defineSymbol(math, ams, rel, "\u22D0", "\\Subset"); + defineSymbol(math, ams, rel, "\u228F", "\\sqsubset"); + defineSymbol(math, ams, rel, "\u227C", "\\preccurlyeq"); + defineSymbol(math, ams, rel, "\u22DE", "\\curlyeqprec"); + defineSymbol(math, ams, rel, "\u227E", "\\precsim"); + defineSymbol(math, ams, rel, "\u2AB7", "\\precapprox"); + defineSymbol(math, ams, rel, "\u22B2", "\\vartriangleleft"); + defineSymbol(math, ams, rel, "\u22B4", "\\trianglelefteq"); + defineSymbol(math, ams, rel, "\u22A8", "\\vDash"); + defineSymbol(math, ams, rel, "\u22AA", "\\Vvdash"); + defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); + defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); + defineSymbol(math, ams, rel, "\u224F", "\\bumpeq"); + defineSymbol(math, ams, rel, "\u224E", "\\Bumpeq"); + defineSymbol(math, ams, rel, "\u2267", "\\geqq"); + defineSymbol(math, ams, rel, "\u2A7E", "\\geqslant"); + defineSymbol(math, ams, rel, "\u2A96", "\\eqslantgtr"); + defineSymbol(math, ams, rel, "\u2273", "\\gtrsim"); + defineSymbol(math, ams, rel, "\u2A86", "\\gtrapprox"); + defineSymbol(math, ams, bin, "\u22D7", "\\gtrdot"); + defineSymbol(math, ams, rel, "\u22D9", "\\ggg"); + defineSymbol(math, ams, rel, "\u2277", "\\gtrless"); + defineSymbol(math, ams, rel, "\u22DB", "\\gtreqless"); + defineSymbol(math, ams, rel, "\u2A8C", "\\gtreqqless"); + defineSymbol(math, ams, rel, "\u2256", "\\eqcirc"); + defineSymbol(math, ams, rel, "\u2257", "\\circeq"); + defineSymbol(math, ams, rel, "\u225C", "\\triangleq"); + defineSymbol(math, ams, rel, "\u223C", "\\thicksim"); + defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); + defineSymbol(math, ams, rel, "\u2AC6", "\\supseteqq"); + defineSymbol(math, ams, rel, "\u22D1", "\\Supset"); + defineSymbol(math, ams, rel, "\u2290", "\\sqsupset"); + defineSymbol(math, ams, rel, "\u227D", "\\succcurlyeq"); + defineSymbol(math, ams, rel, "\u22DF", "\\curlyeqsucc"); + defineSymbol(math, ams, rel, "\u227F", "\\succsim"); + defineSymbol(math, ams, rel, "\u2AB8", "\\succapprox"); + defineSymbol(math, ams, rel, "\u22B3", "\\vartriangleright"); + defineSymbol(math, ams, rel, "\u22B5", "\\trianglerighteq"); + defineSymbol(math, ams, rel, "\u22A9", "\\Vdash"); + defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); + defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); + defineSymbol(math, ams, rel, "\u226C", "\\between"); + defineSymbol(math, ams, rel, "\u22D4", "\\pitchfork"); + defineSymbol(math, ams, rel, "\u221D", "\\varpropto"); + defineSymbol(math, ams, rel, "\u25C0", "\\blacktriangleleft"); + defineSymbol(math, ams, rel, "\u2234", "\\therefore"); + defineSymbol(math, ams, rel, "\u220D", "\\backepsilon"); + defineSymbol(math, ams, rel, "\u25B6", "\\blacktriangleright"); + defineSymbol(math, ams, rel, "\u2235", "\\because"); + defineSymbol(math, ams, rel, "\u22D8", "\\llless"); + defineSymbol(math, ams, rel, "\u22D9", "\\gggtr"); + defineSymbol(math, ams, bin, "\u22B2", "\\lhd"); + defineSymbol(math, ams, bin, "\u22B3", "\\rhd"); + defineSymbol(math, ams, rel, "\u2242", "\\eqsim"); + defineSymbol(math, main, rel, "\u22C8", "\\Join"); + defineSymbol(math, ams, rel, "\u2251", "\\Doteq"); + + // AMS Binary Operators + defineSymbol(math, ams, bin, "\u2214", "\\dotplus"); + defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); + defineSymbol(math, ams, bin, "\u22D2", "\\Cap"); + defineSymbol(math, ams, bin, "\u22D3", "\\Cup"); + defineSymbol(math, ams, bin, "\u2A5E", "\\doublebarwedge"); + defineSymbol(math, ams, bin, "\u229F", "\\boxminus"); + defineSymbol(math, ams, bin, "\u229E", "\\boxplus"); + defineSymbol(math, ams, bin, "\u22C7", "\\divideontimes"); + defineSymbol(math, ams, bin, "\u22C9", "\\ltimes"); + defineSymbol(math, ams, bin, "\u22CA", "\\rtimes"); + defineSymbol(math, ams, bin, "\u22CB", "\\leftthreetimes"); + defineSymbol(math, ams, bin, "\u22CC", "\\rightthreetimes"); + defineSymbol(math, ams, bin, "\u22CF", "\\curlywedge"); + defineSymbol(math, ams, bin, "\u22CE", "\\curlyvee"); + defineSymbol(math, ams, bin, "\u229D", "\\circleddash"); + defineSymbol(math, ams, bin, "\u229B", "\\circledast"); + defineSymbol(math, ams, bin, "\u22C5", "\\centerdot"); + defineSymbol(math, ams, bin, "\u22BA", "\\intercal"); + defineSymbol(math, ams, bin, "\u22D2", "\\doublecap"); + defineSymbol(math, ams, bin, "\u22D3", "\\doublecup"); + defineSymbol(math, ams, bin, "\u22A0", "\\boxtimes"); + + // AMS Arrows + defineSymbol(math, ams, rel, "\u21E2", "\\dashrightarrow"); + defineSymbol(math, ams, rel, "\u21E0", "\\dashleftarrow"); + defineSymbol(math, ams, rel, "\u21C7", "\\leftleftarrows"); + defineSymbol(math, ams, rel, "\u21C6", "\\leftrightarrows"); + defineSymbol(math, ams, rel, "\u21DA", "\\Lleftarrow"); + defineSymbol(math, ams, rel, "\u219E", "\\twoheadleftarrow"); + defineSymbol(math, ams, rel, "\u21A2", "\\leftarrowtail"); + defineSymbol(math, ams, rel, "\u21AB", "\\looparrowleft"); + defineSymbol(math, ams, rel, "\u21CB", "\\leftrightharpoons"); + defineSymbol(math, ams, rel, "\u21B6", "\\curvearrowleft"); + defineSymbol(math, ams, rel, "\u21BA", "\\circlearrowleft"); + defineSymbol(math, ams, rel, "\u21B0", "\\Lsh"); + defineSymbol(math, ams, rel, "\u21C8", "\\upuparrows"); + defineSymbol(math, ams, rel, "\u21BF", "\\upharpoonleft"); + defineSymbol(math, ams, rel, "\u21C3", "\\downharpoonleft"); + defineSymbol(math, ams, rel, "\u22B8", "\\multimap"); + defineSymbol(math, ams, rel, "\u21AD", "\\leftrightsquigarrow"); + defineSymbol(math, ams, rel, "\u21C9", "\\rightrightarrows"); + defineSymbol(math, ams, rel, "\u21C4", "\\rightleftarrows"); + defineSymbol(math, ams, rel, "\u21A0", "\\twoheadrightarrow"); + defineSymbol(math, ams, rel, "\u21A3", "\\rightarrowtail"); + defineSymbol(math, ams, rel, "\u21AC", "\\looparrowright"); + defineSymbol(math, ams, rel, "\u21B7", "\\curvearrowright"); + defineSymbol(math, ams, rel, "\u21BB", "\\circlearrowright"); + defineSymbol(math, ams, rel, "\u21B1", "\\Rsh"); + defineSymbol(math, ams, rel, "\u21CA", "\\downdownarrows"); + defineSymbol(math, ams, rel, "\u21BE", "\\upharpoonright"); + defineSymbol(math, ams, rel, "\u21C2", "\\downharpoonright"); + defineSymbol(math, ams, rel, "\u21DD", "\\rightsquigarrow"); + defineSymbol(math, ams, rel, "\u21DD", "\\leadsto"); + defineSymbol(math, ams, rel, "\u21DB", "\\Rrightarrow"); + defineSymbol(math, ams, rel, "\u21BE", "\\restriction"); + + defineSymbol(math, main, textord, "\u2018", "`"); + defineSymbol(math, main, textord, "$", "\\$"); + defineSymbol(text, main, textord, "$", "\\$"); + defineSymbol(text, main, textord, "$", "\\textdollar"); + defineSymbol(math, main, textord, "%", "\\%"); + defineSymbol(text, main, textord, "%", "\\%"); + defineSymbol(math, main, textord, "_", "\\_"); + defineSymbol(text, main, textord, "_", "\\_"); + defineSymbol(text, main, textord, "_", "\\textunderscore"); + defineSymbol(math, main, textord, "\u2220", "\\angle"); + defineSymbol(math, main, textord, "\u221E", "\\infty"); + defineSymbol(math, main, textord, "\u2032", "\\prime"); + defineSymbol(math, main, textord, "\u25B3", "\\triangle"); + defineSymbol(math, main, textord, "\u0393", "\\Gamma", true); + defineSymbol(math, main, textord, "\u0394", "\\Delta", true); + defineSymbol(math, main, textord, "\u0398", "\\Theta", true); + defineSymbol(math, main, textord, "\u039B", "\\Lambda", true); + defineSymbol(math, main, textord, "\u039E", "\\Xi", true); + defineSymbol(math, main, textord, "\u03A0", "\\Pi", true); + defineSymbol(math, main, textord, "\u03A3", "\\Sigma", true); + defineSymbol(math, main, textord, "\u03A5", "\\Upsilon", true); + defineSymbol(math, main, textord, "\u03A6", "\\Phi", true); + defineSymbol(math, main, textord, "\u03A8", "\\Psi", true); + defineSymbol(math, main, textord, "\u03A9", "\\Omega", true); + defineSymbol(math, main, textord, "\xAC", "\\neg"); + defineSymbol(math, main, textord, "\xAC", "\\lnot"); + defineSymbol(math, main, textord, "\u22A4", "\\top"); + defineSymbol(math, main, textord, "\u22A5", "\\bot"); + defineSymbol(math, main, textord, "\u2205", "\\emptyset"); + defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); + defineSymbol(math, main, mathord, "\u03B1", "\\alpha", true); + defineSymbol(math, main, mathord, "\u03B2", "\\beta", true); + defineSymbol(math, main, mathord, "\u03B3", "\\gamma", true); + defineSymbol(math, main, mathord, "\u03B4", "\\delta", true); + defineSymbol(math, main, mathord, "\u03F5", "\\epsilon", true); + defineSymbol(math, main, mathord, "\u03B6", "\\zeta", true); + defineSymbol(math, main, mathord, "\u03B7", "\\eta", true); + defineSymbol(math, main, mathord, "\u03B8", "\\theta", true); + defineSymbol(math, main, mathord, "\u03B9", "\\iota", true); + defineSymbol(math, main, mathord, "\u03BA", "\\kappa", true); + defineSymbol(math, main, mathord, "\u03BB", "\\lambda", true); + defineSymbol(math, main, mathord, "\u03BC", "\\mu", true); + defineSymbol(math, main, mathord, "\u03BD", "\\nu", true); + defineSymbol(math, main, mathord, "\u03BE", "\\xi", true); + defineSymbol(math, main, mathord, "\u03BF", "\\omicron", true); + defineSymbol(math, main, mathord, "\u03C0", "\\pi", true); + defineSymbol(math, main, mathord, "\u03C1", "\\rho", true); + defineSymbol(math, main, mathord, "\u03C3", "\\sigma", true); + defineSymbol(math, main, mathord, "\u03C4", "\\tau", true); + defineSymbol(math, main, mathord, "\u03C5", "\\upsilon", true); + defineSymbol(math, main, mathord, "\u03D5", "\\phi", true); + defineSymbol(math, main, mathord, "\u03C7", "\\chi", true); + defineSymbol(math, main, mathord, "\u03C8", "\\psi", true); + defineSymbol(math, main, mathord, "\u03C9", "\\omega", true); + defineSymbol(math, main, mathord, "\u03B5", "\\varepsilon", true); + defineSymbol(math, main, mathord, "\u03D1", "\\vartheta", true); + defineSymbol(math, main, mathord, "\u03D6", "\\varpi", true); + defineSymbol(math, main, mathord, "\u03F1", "\\varrho", true); + defineSymbol(math, main, mathord, "\u03C2", "\\varsigma", true); + defineSymbol(math, main, mathord, "\u03C6", "\\varphi", true); + defineSymbol(math, main, bin, "\u2217", "*"); + defineSymbol(math, main, bin, "+", "+"); + defineSymbol(math, main, bin, "\u2212", "-"); + defineSymbol(math, main, bin, "\u22C5", "\\cdot"); + defineSymbol(math, main, bin, "\u2218", "\\circ"); + defineSymbol(math, main, bin, "\xF7", "\\div"); + defineSymbol(math, main, bin, "\xB1", "\\pm"); + defineSymbol(math, main, bin, "\xD7", "\\times"); + defineSymbol(math, main, bin, "\u2229", "\\cap"); + defineSymbol(math, main, bin, "\u222A", "\\cup"); + defineSymbol(math, main, bin, "\u2216", "\\setminus"); + defineSymbol(math, main, bin, "\u2227", "\\land"); + defineSymbol(math, main, bin, "\u2228", "\\lor"); + defineSymbol(math, main, bin, "\u2227", "\\wedge"); + defineSymbol(math, main, bin, "\u2228", "\\vee"); + defineSymbol(math, main, textord, "\u221A", "\\surd"); + defineSymbol(math, main, open, "(", "("); + defineSymbol(math, main, open, "[", "["); + defineSymbol(math, main, open, "\u27E8", "\\langle"); + defineSymbol(math, main, open, "\u2223", "\\lvert"); + defineSymbol(math, main, open, "\u2225", "\\lVert"); + defineSymbol(math, main, close, ")", ")"); + defineSymbol(math, main, close, "]", "]"); + defineSymbol(math, main, close, "?", "?"); + defineSymbol(math, main, close, "!", "!"); + defineSymbol(math, main, close, "\u27E9", "\\rangle"); + defineSymbol(math, main, close, "\u2223", "\\rvert"); + defineSymbol(math, main, close, "\u2225", "\\rVert"); + defineSymbol(math, main, rel, "=", "="); + defineSymbol(math, main, rel, "<", "<"); + defineSymbol(math, main, rel, ">", ">"); + defineSymbol(math, main, rel, ":", ":"); + defineSymbol(math, main, rel, "\u2248", "\\approx"); + defineSymbol(math, main, rel, "\u2245", "\\cong"); + defineSymbol(math, main, rel, "\u2265", "\\ge"); + defineSymbol(math, main, rel, "\u2265", "\\geq"); + defineSymbol(math, main, rel, "\u2190", "\\gets"); + defineSymbol(math, main, rel, ">", "\\gt"); + defineSymbol(math, main, rel, "\u2208", "\\in"); + defineSymbol(math, main, rel, "\u2209", "\\notin"); + defineSymbol(math, main, rel, "\u0338", "\\not"); + defineSymbol(math, main, rel, "\u2282", "\\subset"); + defineSymbol(math, main, rel, "\u2283", "\\supset"); + defineSymbol(math, main, rel, "\u2286", "\\subseteq"); + defineSymbol(math, main, rel, "\u2287", "\\supseteq"); + defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq"); + defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq"); + defineSymbol(math, main, rel, "\u22A8", "\\models"); + defineSymbol(math, main, rel, "\u2190", "\\leftarrow"); + defineSymbol(math, main, rel, "\u2264", "\\le"); + defineSymbol(math, main, rel, "\u2264", "\\leq"); + defineSymbol(math, main, rel, "<", "\\lt"); + defineSymbol(math, main, rel, "\u2260", "\\ne"); + defineSymbol(math, main, rel, "\u2260", "\\neq"); + defineSymbol(math, main, rel, "\u2192", "\\rightarrow"); + defineSymbol(math, main, rel, "\u2192", "\\to"); + defineSymbol(math, ams, rel, "\u2271", "\\ngeq"); + defineSymbol(math, ams, rel, "\u2270", "\\nleq"); + defineSymbol(math, main, spacing, null, "\\!"); + defineSymbol(math, main, spacing, "\xA0", "\\ "); + defineSymbol(math, main, spacing, "\xA0", "~"); + defineSymbol(math, main, spacing, null, "\\,"); + defineSymbol(math, main, spacing, null, "\\:"); + defineSymbol(math, main, spacing, null, "\\;"); + defineSymbol(math, main, spacing, null, "\\enspace"); + defineSymbol(math, main, spacing, null, "\\qquad"); + defineSymbol(math, main, spacing, null, "\\quad"); + defineSymbol(math, main, spacing, "\xA0", "\\space"); + defineSymbol(math, main, punct, ",", ","); + defineSymbol(math, main, punct, ";", ";"); + defineSymbol(math, main, punct, ":", "\\colon"); + defineSymbol(math, ams, bin, "\u22BC", "\\barwedge"); + defineSymbol(math, ams, bin, "\u22BB", "\\veebar"); + defineSymbol(math, main, bin, "\u2299", "\\odot"); + defineSymbol(math, main, bin, "\u2295", "\\oplus"); + defineSymbol(math, main, bin, "\u2297", "\\otimes"); + defineSymbol(math, main, textord, "\u2202", "\\partial"); + defineSymbol(math, main, bin, "\u2298", "\\oslash"); + defineSymbol(math, ams, bin, "\u229A", "\\circledcirc"); + defineSymbol(math, ams, bin, "\u22A1", "\\boxdot"); + defineSymbol(math, main, bin, "\u25B3", "\\bigtriangleup"); + defineSymbol(math, main, bin, "\u25BD", "\\bigtriangledown"); + defineSymbol(math, main, bin, "\u2020", "\\dagger"); + defineSymbol(math, main, bin, "\u22C4", "\\diamond"); + defineSymbol(math, main, bin, "\u22C6", "\\star"); + defineSymbol(math, main, bin, "\u25C3", "\\triangleleft"); + defineSymbol(math, main, bin, "\u25B9", "\\triangleright"); + defineSymbol(math, main, open, "{", "\\{"); + defineSymbol(text, main, textord, "{", "\\{"); + defineSymbol(text, main, textord, "{", "\\textbraceleft"); + defineSymbol(math, main, close, "}", "\\}"); + defineSymbol(text, main, textord, "}", "\\}"); + defineSymbol(text, main, textord, "}", "\\textbraceright"); + defineSymbol(math, main, open, "{", "\\lbrace"); + defineSymbol(math, main, close, "}", "\\rbrace"); + defineSymbol(math, main, open, "[", "\\lbrack"); + defineSymbol(math, main, close, "]", "\\rbrack"); + defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc + defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc + defineSymbol(math, main, open, "\u230A", "\\lfloor"); + defineSymbol(math, main, close, "\u230B", "\\rfloor"); + defineSymbol(math, main, open, "\u2308", "\\lceil"); + defineSymbol(math, main, close, "\u2309", "\\rceil"); + defineSymbol(math, main, textord, "\\", "\\backslash"); + defineSymbol(math, main, textord, "\u2223", "|"); + defineSymbol(math, main, textord, "\u2223", "\\vert"); + defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc + defineSymbol(math, main, textord, "\u2225", "\\|"); + defineSymbol(math, main, textord, "\u2225", "\\Vert"); + defineSymbol(text, main, textord, "\u2225", "\\textbardbl"); + defineSymbol(math, main, rel, "\u2191", "\\uparrow"); + defineSymbol(math, main, rel, "\u21D1", "\\Uparrow"); + defineSymbol(math, main, rel, "\u2193", "\\downarrow"); + defineSymbol(math, main, rel, "\u21D3", "\\Downarrow"); + defineSymbol(math, main, rel, "\u2195", "\\updownarrow"); + defineSymbol(math, main, rel, "\u21D5", "\\Updownarrow"); + defineSymbol(math, main, op, "\u2210", "\\coprod"); + defineSymbol(math, main, op, "\u22C1", "\\bigvee"); + defineSymbol(math, main, op, "\u22C0", "\\bigwedge"); + defineSymbol(math, main, op, "\u2A04", "\\biguplus"); + defineSymbol(math, main, op, "\u22C2", "\\bigcap"); + defineSymbol(math, main, op, "\u22C3", "\\bigcup"); + defineSymbol(math, main, op, "\u222B", "\\int"); + defineSymbol(math, main, op, "\u222B", "\\intop"); + defineSymbol(math, main, op, "\u222C", "\\iint"); + defineSymbol(math, main, op, "\u222D", "\\iiint"); + defineSymbol(math, main, op, "\u220F", "\\prod"); + defineSymbol(math, main, op, "\u2211", "\\sum"); + defineSymbol(math, main, op, "\u2A02", "\\bigotimes"); + defineSymbol(math, main, op, "\u2A01", "\\bigoplus"); + defineSymbol(math, main, op, "\u2A00", "\\bigodot"); + defineSymbol(math, main, op, "\u222E", "\\oint"); + defineSymbol(math, main, op, "\u2A06", "\\bigsqcup"); + defineSymbol(math, main, op, "\u222B", "\\smallint"); + defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); + defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); + defineSymbol(text, main, inner, "\u2026", "\\ldots", true); + defineSymbol(math, main, inner, "\u2026", "\\ldots", true); + defineSymbol(math, main, inner, "\u22EF", "\\cdots", true); + defineSymbol(math, main, inner, "\u22F1", "\\ddots", true); + defineSymbol(math, main, textord, "\u22EE", "\\vdots", true); + defineSymbol(math, main, accent, "\xB4", "\\acute"); + defineSymbol(math, main, accent, "`", "\\grave"); + defineSymbol(math, main, accent, "\xA8", "\\ddot"); + defineSymbol(math, main, accent, "~", "\\tilde"); + defineSymbol(math, main, accent, "\xAF", "\\bar"); + defineSymbol(math, main, accent, "\u02D8", "\\breve"); + defineSymbol(math, main, accent, "\u02C7", "\\check"); + defineSymbol(math, main, accent, "^", "\\hat"); + defineSymbol(math, main, accent, "\u20D7", "\\vec"); + defineSymbol(math, main, accent, "\u02D9", "\\dot"); + defineSymbol(math, main, mathord, "\u0131", "\\imath"); + defineSymbol(math, main, mathord, "\u0237", "\\jmath"); + defineSymbol(text, main, accent, "\u02CA", "\\'"); // acute + defineSymbol(text, main, accent, "\u02CB", "\\`"); // grave + defineSymbol(text, main, accent, "\u02C6", "\\^"); // circumflex + defineSymbol(text, main, accent, "\u02DC", "\\~"); // tilde + defineSymbol(text, main, accent, "\u02C9", "\\="); // macron + defineSymbol(text, main, accent, "\u02D8", "\\u"); // breve + defineSymbol(text, main, accent, "\u02D9", "\\."); // dot above + defineSymbol(text, main, accent, "\u02DA", "\\r"); // ring above + defineSymbol(text, main, accent, "\u02C7", "\\v"); // caron + defineSymbol(text, main, accent, "\xA8", '\\"'); // diaresis + defineSymbol(text, main, accent, "\u030B", "\\H"); // double acute + + defineSymbol(text, main, textord, "\u2013", "--"); + defineSymbol(text, main, textord, "\u2013", "\\textendash"); + defineSymbol(text, main, textord, "\u2014", "---"); + defineSymbol(text, main, textord, "\u2014", "\\textemdash"); + defineSymbol(text, main, textord, "\u2018", "`"); + defineSymbol(text, main, textord, "\u2018", "\\textquoteleft"); + defineSymbol(text, main, textord, "\u2019", "'"); + defineSymbol(text, main, textord, "\u2019", "\\textquoteright"); + defineSymbol(text, main, textord, "\u201C", "``"); + defineSymbol(text, main, textord, "\u201C", "\\textquotedblleft"); + defineSymbol(text, main, textord, "\u201D", "''"); + defineSymbol(text, main, textord, "\u201D", "\\textquotedblright"); + defineSymbol(math, main, textord, "\xB0", "\\degree"); + defineSymbol(text, main, textord, "\xB0", "\\degree"); + // TODO: In LaTeX, \pounds can generate a different character in text and math + // mode, but among our fonts, only Main-Italic defines this character "163". + defineSymbol(math, main, mathord, "\xA3", "\\pounds"); + defineSymbol(math, main, mathord, "\xA3", "\\mathsterling"); + defineSymbol(text, main, mathord, "\xA3", "\\pounds"); + defineSymbol(text, main, mathord, "\xA3", "\\textsterling"); + defineSymbol(math, ams, textord, "\u2720", "\\maltese"); + defineSymbol(text, ams, textord, "\u2720", "\\maltese"); + + defineSymbol(text, main, spacing, "\xA0", "\\ "); + defineSymbol(text, main, spacing, "\xA0", " "); + defineSymbol(text, main, spacing, "\xA0", "~"); + + // There are lots of symbols which are the same, so we add them in afterwards. + + // All of these are textords in math mode + var mathTextSymbols = "0123456789/@.\""; + for (var i = 0; i < mathTextSymbols.length; i++) { + var ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); + } + + // All of these are textords in text mode + var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,"; + for (var _i = 0; _i < textSymbols.length; _i++) { + var _ch = textSymbols.charAt(_i); + defineSymbol(text, main, textord, _ch, _ch); + } + + // All of these are textords in text mode, and mathords in math mode + var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (var _i2 = 0; _i2 < letters.length; _i2++) { + var _ch2 = letters.charAt(_i2); + defineSymbol(math, main, mathord, _ch2, _ch2); + defineSymbol(text, main, textord, _ch2, _ch2); + } + + // Latin-1 letters + for (var _i3 = 0x00C0; _i3 <= 0x00D6; _i3++) { + var _ch3 = String.fromCharCode(_i3); + defineSymbol(math, main, mathord, _ch3, _ch3); + defineSymbol(text, main, textord, _ch3, _ch3); + } + + for (var _i4 = 0x00D8; _i4 <= 0x00F6; _i4++) { + var _ch4 = String.fromCharCode(_i4); + defineSymbol(math, main, mathord, _ch4, _ch4); + defineSymbol(text, main, textord, _ch4, _ch4); + } + + for (var _i5 = 0x00F8; _i5 <= 0x00FF; _i5++) { + var _ch5 = String.fromCharCode(_i5); + defineSymbol(math, main, mathord, _ch5, _ch5); + defineSymbol(text, main, textord, _ch5, _ch5); + } + + // Cyrillic + for (var _i6 = 0x0410; _i6 <= 0x044F; _i6++) { + var _ch6 = String.fromCharCode(_i6); + defineSymbol(text, main, textord, _ch6, _ch6); + } + + // Unicode versions of existing characters + defineSymbol(text, main, textord, "\u2013", "–"); + defineSymbol(text, main, textord, "\u2014", "—"); + defineSymbol(text, main, textord, "\u2018", "‘"); + defineSymbol(text, main, textord, "\u2019", "’"); + defineSymbol(text, main, textord, "\u201C", "“"); + defineSymbol(text, main, textord, "\u201D", "”"); + + },{}],49:[function(require,module,exports){ + + var hangulRegex = /[\uAC00-\uD7AF]/; + + // This regex combines + // - CJK symbols and punctuation: [\u3000-\u303F] + // - Hiragana: [\u3040-\u309F] + // - Katakana: [\u30A0-\u30FF] + // - CJK ideograms: [\u4E00-\u9FAF] + // - Hangul syllables: [\uAC00-\uD7AF] + // - Fullwidth punctuation: [\uFF00-\uFF60] + // Notably missing are halfwidth Katakana and Romanji glyphs. + var cjkRegex = /[\u3000-\u30FF\u4E00-\u9FAF\uAC00-\uD7AF\uFF00-\uFF60]/; + + module.exports = { + cjkRegex: cjkRegex, + hangulRegex: hangulRegex + }; + + },{}],50:[function(require,module,exports){ + + var _ParseError = require("./ParseError"); + + var _ParseError2 = _interopRequireDefault(_ParseError); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // This table gives the number of TeX pts in one of each *absolute* TeX unit. + // Thus, multiplying a length by this number converts the length from units + // into pts. Dividing the result by ptPerEm gives the number of ems + // *assuming* a font size of ptPerEm (normal size, normal style). + var ptPerUnit = { + // https://en.wikibooks.org/wiki/LaTeX/Lengths and + // https://tex.stackexchange.com/a/8263 + "pt": 1, // TeX point + "mm": 7227 / 2540, // millimeter + "cm": 7227 / 254, // centimeter + "in": 72.27, // inch + "bp": 803 / 800, // big (PostScript) points + "pc": 12, // pica + "dd": 1238 / 1157, // didot + "cc": 14856 / 1157, // cicero (12 didot) + "nd": 685 / 642, // new didot + "nc": 1370 / 107, // new cicero (12 new didot) + "sp": 1 / 65536, // scaled point (TeX's internal smallest unit) + // https://tex.stackexchange.com/a/41371 + "px": 803 / 800 }; + + // Dictionary of relative units, for fast validity testing. + /* eslint no-console:0 */ + + /** + * This file does conversion between units. In particular, it provides + * calculateSize to convert other units into ems. + */ + + var relativeUnit = { + "ex": true, + "em": true, + "mu": true + }; + + /** + * Determine whether the specified unit (either a string defining the unit + * or a "size" parse node containing a unit field) is valid. + */ + var validUnit = function validUnit(unit) { + if (unit.unit) { + unit = unit.unit; + } + return unit in ptPerUnit || unit in relativeUnit || unit === "ex"; + }; + + /* + * Convert a "size" parse node (with numeric "number" and string "unit" fields, + * as parsed by functions.js argType "size") into a CSS em value for the + * current style/scale. `options` gives the current options. + */ + var calculateSize = function calculateSize(sizeValue, options) { + var scale = void 0; + if (sizeValue.unit in ptPerUnit) { + // Absolute units + scale = ptPerUnit[sizeValue.unit] // Convert unit to pt + / options.fontMetrics().ptPerEm // Convert pt to CSS em + / options.sizeMultiplier; // Unscale to make absolute units + } else if (sizeValue.unit === "mu") { + // `mu` units scale with scriptstyle/scriptscriptstyle. + scale = options.fontMetrics().cssEmPerMu; + } else { + // Other relative units always refer to the *textstyle* font + // in the current size. + var unitOptions = void 0; + if (options.style.isTight()) { + // isTight() means current style is script/scriptscript. + unitOptions = options.havingStyle(options.style.text()); + } else { + unitOptions = options; + } + // TODO: In TeX these units are relative to the quad of the current + // *text* font, e.g. cmr10. KaTeX instead uses values from the + // comparably-sized *Computer Modern symbol* font. At 10pt, these + // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641; + // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$. + // TeX \showlists shows a kern of 1.13889 * fontsize; + // KaTeX shows a kern of 1.171 * fontsize. + if (sizeValue.unit === "ex") { + scale = unitOptions.fontMetrics().xHeight; + } else if (sizeValue.unit === "em") { + scale = unitOptions.fontMetrics().quad; + } else { + throw new _ParseError2.default("Invalid unit: '" + sizeValue.unit + "'"); + } + if (unitOptions !== options) { + scale *= unitOptions.sizeMultiplier / options.sizeMultiplier; + } + } + return sizeValue.number * scale; + }; + + module.exports = { + validUnit: validUnit, + calculateSize: calculateSize + }; + + },{"./ParseError":29}],51:[function(require,module,exports){ + + /** + * This file contains a list of utility functions which are useful in other + * files. + */ + + /** + * Provide an `indexOf` function which works in IE8, but defers to native if + * possible. + */ + var nativeIndexOf = Array.prototype.indexOf; + var indexOf = function indexOf(list, elem) { + if (list == null) { + return -1; + } + if (nativeIndexOf && list.indexOf === nativeIndexOf) { + return list.indexOf(elem); + } + var l = list.length; + for (var i = 0; i < l; i++) { + if (list[i] === elem) { + return i; + } + } + return -1; + }; + + /** + * Return whether an element is contained in a list + */ + var contains = function contains(list, elem) { + return indexOf(list, elem) !== -1; + }; + + /** + * Provide a default value if a setting is undefined + */ + var deflt = function deflt(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; + }; + + // hyphenate and escape adapted from Facebook's React under Apache 2 license + + var uppercase = /([A-Z])/g; + var hyphenate = function hyphenate(str) { + return str.replace(uppercase, "-$1").toLowerCase(); + }; + + var ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" + }; + + var ESCAPE_REGEX = /[&><"']/g; + + function escaper(match) { + return ESCAPE_LOOKUP[match]; + } + + /** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ + function escape(text) { + return ("" + text).replace(ESCAPE_REGEX, escaper); + } + + /** + * A function to set the text content of a DOM element in all supported + * browsers. Note that we don't define this if there is no document. + */ + var setTextContent = void 0; + if (typeof document !== "undefined") { + var testNode = document.createElement("span"); + if ("textContent" in testNode) { + setTextContent = function setTextContent(node, text) { + node.textContent = text; + }; + } else { + setTextContent = function setTextContent(node, text) { + node.innerText = text; + }; + } + } + + /** + * A function to clear a node. + */ + function clearNode(node) { + setTextContent(node, ""); + } + + module.exports = { + contains: contains, + deflt: deflt, + escape: escape, + hyphenate: hyphenate, + indexOf: indexOf, + setTextContent: setTextContent, + clearNode: clearNode + }; + + },{}]},{},[1])(1) + }); + }); + + var katex$2 = unwrapExports(katex$1); + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + // This is a straight concatenation of code from KaTeX's contrib folder, + // but we aren't using some of their helpers that don't work well outside a browser environment. + + /*global katex */ + + const findEndOfMath = function(delimiter, text, startIndex) { + // Adapted from + // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx + let index = startIndex; + let braceLevel = 0; + + const delimLength = delimiter.length; + + while (index < text.length) { + const character = text[index]; + + if ( + braceLevel <= 0 && + text.slice(index, index + delimLength) === delimiter + ) { + return index; + } else if (character === "\\") { + index++; + } else if (character === "{") { + braceLevel++; + } else if (character === "}") { + braceLevel--; + } + + index++; + } + + return -1; + }; + + const splitAtDelimiters = function(startData, leftDelim, rightDelim, display) { + const finalData = []; + + for (let i = 0; i < startData.length; i++) { + if (startData[i].type === "text") { + const text = startData[i].data; + + let lookingForLeft = true; + let currIndex = 0; + let nextIndex; + + nextIndex = text.indexOf(leftDelim); + if (nextIndex !== -1) { + currIndex = nextIndex; + finalData.push({ + type: "text", + data: text.slice(0, currIndex) + }); + lookingForLeft = false; + } + + while (true) { + // eslint-disable-line no-constant-condition + if (lookingForLeft) { + nextIndex = text.indexOf(leftDelim, currIndex); + if (nextIndex === -1) { + break; + } + + finalData.push({ + type: "text", + data: text.slice(currIndex, nextIndex) + }); + + currIndex = nextIndex; + } else { + nextIndex = findEndOfMath( + rightDelim, + text, + currIndex + leftDelim.length + ); + if (nextIndex === -1) { + break; + } + + finalData.push({ + type: "math", + data: text.slice(currIndex + leftDelim.length, nextIndex), + rawData: text.slice(currIndex, nextIndex + rightDelim.length), + display: display + }); + + currIndex = nextIndex + rightDelim.length; + } + + lookingForLeft = !lookingForLeft; + } + + finalData.push({ + type: "text", + data: text.slice(currIndex) + }); + } else { + finalData.push(startData[i]); + } + } + + return finalData; + }; + + const splitWithDelimiters = function(text, delimiters) { + let data = [{ type: "text", data: text }]; + for (let i = 0; i < delimiters.length; i++) { + const delimiter = delimiters[i]; + data = splitAtDelimiters( + data, + delimiter.left, + delimiter.right, + delimiter.display || false + ); + } + return data; + }; + + /* Note: optionsCopy is mutated by this method. If it is ever exposed in the + * API, we should copy it before mutating. + */ + const renderMathInText = function(text, optionsCopy) { + const data = splitWithDelimiters(text, optionsCopy.delimiters); + const fragment = document.createDocumentFragment(); + + for (let i = 0; i < data.length; i++) { + if (data[i].type === "text") { + fragment.appendChild(document.createTextNode(data[i].data)); + } else { + const tag = document.createElement("d-math"); + const math = data[i].data; + // Override any display mode defined in the settings with that + // defined by the text itself + optionsCopy.displayMode = data[i].display; + try { + tag.textContent = math; + if (optionsCopy.displayMode) { + tag.setAttribute("block", ""); + } + } catch (e) { + if (!(e instanceof katex.ParseError)) { + throw e; + } + optionsCopy.errorCallback( + "KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", + e + ); + fragment.appendChild(document.createTextNode(data[i].rawData)); + continue; + } + fragment.appendChild(tag); + } + } + + return fragment; + }; + + const renderElem = function(elem, optionsCopy) { + for (let i = 0; i < elem.childNodes.length; i++) { + const childNode = elem.childNodes[i]; + if (childNode.nodeType === 3) { + // Text node + const text = childNode.textContent; + if (optionsCopy.mightHaveMath(text)) { + const frag = renderMathInText(text, optionsCopy); + i += frag.childNodes.length - 1; + elem.replaceChild(frag, childNode); + } + } else if (childNode.nodeType === 1) { + // Element node + const shouldRender = + optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === + -1; + + if (shouldRender) { + renderElem(childNode, optionsCopy); + } + } + // Otherwise, it's something else, and ignore it. + } + }; + + const defaultAutoRenderOptions = { + delimiters: [ + { left: "$$", right: "$$", display: true }, + { left: "\\[", right: "\\]", display: true }, + { left: "\\(", right: "\\)", display: false } + // LaTeX uses this, but it ruins the display of normal `$` in text: + // {left: '$', right: '$', display: false}, + ], + + ignoredTags: [ + "script", + "noscript", + "style", + "textarea", + "pre", + "code", + "svg" + ], + + errorCallback: function(msg, err) { + console.error(msg, err); + } + }; + + const renderMathInElement = function(elem, options) { + if (!elem) { + throw new Error("No element provided to render"); + } + + const optionsCopy = Object.assign({}, defaultAutoRenderOptions, options); + const delimiterStrings = optionsCopy.delimiters.flatMap(d => [ + d.left, + d.right + ]); + const mightHaveMath = text => + delimiterStrings.some(d => text.indexOf(d) !== -1); + optionsCopy.mightHaveMath = mightHaveMath; + renderElem(elem, optionsCopy); + }; + + // Copyright 2018 The Distill Template Authors + + function Mathematics(dom, data) { + let needsCSS = false; + const body = dom.querySelector('body'); + + if (!body) { + console.warn("No body tag found!"); + return; + } + + if (data.katex && data.katex.delimiters) { + global.document = dom; + renderMathInElement(body, data.katex); + } + + // render d-math tags + const mathTags = body.querySelectorAll('d-math'); + if (mathTags.length > 0) { + needsCSS = true; + console.warn(`Prerendering ${mathTags.length} math tags...`); + for (const mathTag of mathTags) { + const localOptions = { displayMode: mathTag.hasAttribute('block') }; + const options = Object.assign(localOptions, data.katex); + const html = katex$2.renderToString(mathTag.textContent, options); + const container = dom.createElement('span'); + container.innerHTML = html; + mathTag.parentElement.insertBefore(container, mathTag); + mathTag.parentElement.removeChild(mathTag); + } + } + + if (needsCSS) { + const katexCSSTag = ''; + dom.head.insertAdjacentHTML('beforeend', katexCSSTag); + } + + } + + var favicon = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA99JREFUeNrsG4t1ozDMzQSM4A2ODUonKBucN2hugtIJ6E1AboLcBiQTkJsANiAb9OCd/OpzMWBJBl5TvaeXPiiyJetry0J8wW3D3QpjRh3GjneXDq+fSQA9s2mH9x3KDhN4foJfCb8N/Jrv+2fnDn8vLRQOplWHVYdvHZYdZsBcZP1vBmh/n8DzEmhUQDPaOuP9pFuY+JwJHwHnCLQE2tnWBGEyXozY9xCUgHMhhjE2I4heVWtgIkZ83wL6Qgxj1obfWBxymPwe+b00BCCRNPbwfb60yleAkkBHGT5AEehIYz7eJrFDMF9CvH4wwhcGHiHMneFvLDQwlwvMLQq58trRcYBWfYn0A0OgHWQUSu25mE+BnoYKnnEJoeIWAifzOv7vLWd2ZKRfWAIme3tOiUaQ3UnLkb0xj1FxRIeEGKaGIHOs9nEgLaaA9i0JRYo1Ic67wJW86KSKE/ZAM8KuVMk8ITVhmxUxJ3Cl2xlm9Vtkeju1+mpCQNxaEGNCY8bs9X2YqwNoQeGjBWut/ma0QAWy/TqAsHx9wSya3I5IRxOfTC+leG+kA/4vSeEcGBtNUN6byhu3+keEZCQJUNh8MAO7HL6H8pQLnsW/Hd4T4lv93TPjfM7A46iEEqbB5EDOvwYNW6tGNZzT/o+CZ6sqZ6wUtR/wf7mi/VL8iNciT6rHih48Y55b4nKCHJCCzb4y0nwFmin3ZEMIoLfZF8F7nncFmvnWBaBj7CGAYA/WGJsUwHdYqVDwAmNsUgAx4CGgAA7GOOxADYOFWOaIKifuVYzmOpREqA21Mo7aPsgiY1PhOMAmxtR+AUbYH3Id2wc0SAFIQTsn9IUGWR8k9jx3vtXSiAacFxTAGakBk9UudkNECd6jLe+6HrshshvIuC6IlLMRy7er+JpcKma24SlE4cFZSZJDGVVrsNvitQhQrDhW0jfiOLfFd47C42eHT56D/BK0To+58Ahj+cAT8HT1UWlfLZCCd/uKawzU0Rh2EyIX/Icqth3niG8ybNroezwe6khdCNxRN+l4XGdOLVLlOOt2hTRJlr1ETIuMAltVTMz70mJrkdGAaZLSmnBEqmAE32JCMmuTlCnRgsBENtOUpHhvvsYIL0ibnBkaC6QvKcR7738GKp0AKnim7xgUSNv1bpS8QwhBt8r+EP47v/oyRK/S34yJ9nT+AN0Tkm4OdB9E4BsmXM3SnMlRFUrtp6IDpV2eKzdYvF3etm3KhQksbOLChGkSmcBdmcEwvqkrMy5BzL00NZeu3qPYJOOuCc+5NjcWKXQxFvTa3NoXJ4d8in7fiAUuTt781dkvuHX4K8AA2Usy7yNKLy0AAAAASUVORK5CYII=\n"; + + /*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + + /** + * Module variables. + * @private + */ + + var matchHtmlRegExp = /["'&<>]/; + + /** + * Module exports. + * @public + */ + + var escapeHtml_1 = escapeHtml; + + /** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + + function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; + } + + // Copyright 2018 The Distill Template Authors + + function Meta(dom, data) { + let head = dom.querySelector('head'); + let appendHead = html => appendHtml(head, html); + + function meta(name, content, force) { + if (content || force) + appendHead(` \n`); + } + + appendHead(` + + + + `); + + if (data.title) { + appendHead(` + ${escapeHtml_1(data.title)} + `); + } + + if (data.url) { + appendHead(` + + `); + } + + + if (data.publishedDate){ + appendHead(` + + + + + `); + } + + if (data.updatedDate) { + appendHead(` + + `); + } + + (data.authors || []).forEach((a) => { + appendHtml(head, ` + `); + }); + + appendHead(` + + + + + + + + + `); + + appendHead(` + + + + + + + + + `); + + // if this is a proprer article, generate Google Scholar meta data + if (data.doiSuffix){ + appendHead(` + \n`); + + meta('citation_title', data.title); + meta('citation_fulltext_html_url', data.url); + meta('citation_volume', data.volume); + meta('citation_issue', data.issue); + meta('citation_firstpage', data.doiSuffix ? `e${data.doiSuffix}` : undefined); + meta('citation_doi', data.doi); + + let journal = data.journal || {}; + meta('citation_journal_title', journal.full_title || journal.title); + meta('citation_journal_abbrev', journal.abbrev_title); + meta('citation_issn', journal.issn); + meta('citation_publisher', journal.publisher); + meta('citation_fulltext_world_readable', '', true); + + if (data.publishedDate){ + meta('citation_online_date', `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); + meta('citation_publication_date', `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); + } + + (data.authors || []).forEach((a) => { + meta('citation_author', `${a.lastName}, ${a.firstName}`); + meta('citation_author_institution', a.affiliation); + }); + } else { + console.warn('No DOI suffix in data; not adding citation meta tags!'); + } + + if (data.citations) { + data.citations.forEach(key => { + if (data.bibliography && data.bibliography.has(key)) { + const entry = data.bibliography.get(key); + meta('citation_reference', citation_meta_content(entry) ); + } else { + console.warn('No bibliography data found for ' + key); + } + }); + } else { + console.warn('No citations found; not adding any references meta tags!'); + } + } + + function appendHtml(el, html) { + el.innerHTML += html; + } + + function citation_meta_content(ref){ + var content = `citation_title=${ref.title};`; + + if (ref.author && ref.author !== '') { + ref.author.split(' and ').forEach(name => { + name = name.trim(); + let last, firsts; + if (name.indexOf(',') != -1){ + last = name.split(',')[0].trim(); + firsts = name.split(',')[1].trim(); + } else { + last = name.split(' ').slice(-1)[0].trim(); + firsts = name.split(' ').slice(0,-1).join(' '); + } + content += `citation_author=${firsts} ${last};`; + }); + } + + if ('year' in ref) { + content += `citation_publication_date=${ref.year};`; + } + + // Special test for arxiv + let arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); + if (arxiv_id_search && arxiv_id_search[1]){ + content += `citation_arxiv_id=${arxiv_id_search[1]};`; + return content; // arXiv is not considered a journal, so we don't need journal/volume/issue + } + if ('journal' in ref){ + content += `citation_journal_title=${escapeHtml_1(ref.journal)};`; + } + if ('volume' in ref) { + content += `citation_volume=${escapeHtml_1(ref.volume)};`; + } + if ('issue' in ref || 'number' in ref){ + content += `citation_number=${escapeHtml_1(ref.issue || ref.number)};`; + } + return content; + } + + var base = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nhtml {\n font-size: 14px;\n\tline-height: 1.6em;\n /* font-family: \"Libre Franklin\", \"Helvetica Neue\", sans-serif; */\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Arial, sans-serif;\n /*, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";*/\n text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\n@media(min-width: 768px) {\n html {\n font-size: 16px;\n }\n}\n\nbody {\n margin: 0;\n}\n\na {\n color: #004276;\n}\n\nfigure {\n margin: 0;\n}\n\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th {\n\ttext-align: left;\n}\n\ntable thead {\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\ntable thead th {\n padding-bottom: 0.5em;\n}\n\ntable tbody :first-child td {\n padding-top: 0.5em;\n}\n\npre {\n overflow: auto;\n max-width: 100%;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1em;\n}\n\nsup, sub {\n vertical-align: baseline;\n position: relative;\n top: -0.4em;\n line-height: 1em;\n}\n\nsub {\n top: 0.4em;\n}\n\n.kicker,\n.marker {\n font-size: 15px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.5);\n}\n\n\n/* Headline */\n\n@media(min-width: 1024px) {\n d-title h1 span {\n display: block;\n }\n}\n\n/* Figure */\n\nfigure {\n position: relative;\n margin-bottom: 2.5em;\n margin-top: 1.5em;\n}\n\nfigcaption+figure {\n\n}\n\nfigure img {\n width: 100%;\n}\n\nfigure svg text,\nfigure svg tspan {\n}\n\nfigcaption,\n.figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n\n@media(min-width: 1024px) {\nfigcaption,\n.figcaption {\n font-size: 13px;\n }\n}\n\nfigure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\nfigcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\nfigcaption b,\nfigcaption strong, {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n"; + + var layout = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@supports not (display: grid) {\n .base-grid,\n distill-header,\n d-title,\n d-abstract,\n d-article,\n d-appendix,\n distill-appendix,\n d-byline,\n d-footnote-list,\n d-citation-list,\n distill-footer {\n display: block;\n padding: 8px;\n }\n}\n\n.base-grid,\ndistill-header,\nd-title,\nd-abstract,\nd-article,\nd-appendix,\ndistill-appendix,\nd-byline,\nd-footnote-list,\nd-citation-list,\ndistill-footer {\n display: grid;\n justify-items: stretch;\n grid-template-columns: [screen-start] 8px [page-start kicker-start text-start gutter-start middle-start] 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr [text-end page-end gutter-end kicker-end middle-end] 8px [screen-end];\n grid-column-gap: 8px;\n}\n\n.grid {\n display: grid;\n grid-column-gap: 8px;\n}\n\n@media(min-width: 768px) {\n .base-grid,\n distill-header,\n d-title,\n d-abstract,\n d-article,\n d-appendix,\n distill-appendix,\n d-byline,\n d-footnote-list,\n d-citation-list,\n distill-footer {\n grid-template-columns: [screen-start] 1fr [page-start kicker-start middle-start text-start] 45px 45px 45px 45px 45px 45px 45px 45px [ kicker-end text-end gutter-start] 45px [middle-end] 45px [page-end gutter-end] 1fr [screen-end];\n grid-column-gap: 16px;\n }\n\n .grid {\n grid-column-gap: 16px;\n }\n}\n\n@media(min-width: 1000px) {\n .base-grid,\n distill-header,\n d-title,\n d-abstract,\n d-article,\n d-appendix,\n distill-appendix,\n d-byline,\n d-footnote-list,\n d-citation-list,\n distill-footer {\n grid-template-columns: [screen-start] 1fr [page-start kicker-start] 50px [middle-start] 50px [text-start kicker-end] 50px 50px 50px 50px 50px 50px 50px 50px [text-end gutter-start] 50px [middle-end] 50px [page-end gutter-end] 1fr [screen-end];\n grid-column-gap: 16px;\n }\n\n .grid {\n grid-column-gap: 16px;\n }\n}\n\n@media(min-width: 1180px) {\n .base-grid,\n distill-header,\n d-title,\n d-abstract,\n d-article,\n d-appendix,\n distill-appendix,\n d-byline,\n d-footnote-list,\n d-citation-list,\n distill-footer {\n grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end];\n grid-column-gap: 32px;\n }\n\n .grid {\n grid-column-gap: 32px;\n }\n}\n\n\n\n\n.base-grid {\n grid-column: screen;\n}\n\n/* .l-body,\nd-article > * {\n grid-column: text;\n}\n\n.l-page,\nd-title > *,\nd-figure {\n grid-column: page;\n} */\n\n.l-gutter {\n grid-column: gutter;\n}\n\n.l-text,\n.l-body {\n grid-column: text;\n}\n\n.l-page {\n grid-column: page;\n}\n\n.l-body-outset {\n grid-column: middle;\n}\n\n.l-page-outset {\n grid-column: page;\n}\n\n.l-screen {\n grid-column: screen;\n}\n\n.l-screen-inset {\n grid-column: screen;\n padding-left: 16px;\n padding-left: 16px;\n}\n\n\n/* Aside */\n\nd-article aside {\n grid-column: gutter;\n font-size: 12px;\n line-height: 1.6em;\n color: rgba(0, 0, 0, 0.6)\n}\n\n@media(min-width: 768px) {\n aside {\n grid-column: gutter;\n }\n\n .side {\n grid-column: gutter;\n }\n}\n"; + + var print = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@media print {\n\n @page {\n size: 8in 11in;\n @bottom-right {\n content: counter(page) \" of \" counter(pages);\n }\n }\n\n html {\n /* no general margins -- CSS Grid takes care of those */\n }\n\n p, code {\n page-break-inside: avoid;\n }\n\n h2, h3 {\n page-break-after: avoid;\n }\n\n d-header {\n visibility: hidden;\n }\n\n d-footer {\n display: none!important;\n }\n\n}\n"; + + var byline = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-byline {\n contain: style;\n overflow: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n font-size: 0.8rem;\n line-height: 1.8em;\n padding: 1.5rem 0;\n min-height: 1.8em;\n}\n\n\nd-byline .byline {\n grid-template-columns: 1fr 1fr;\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-byline .byline {\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n}\n\nd-byline .authors-affiliations {\n grid-column-end: span 2;\n grid-template-columns: 1fr 1fr;\n margin-bottom: 1em;\n}\n\n@media(min-width: 768px) {\n d-byline .authors-affiliations {\n margin-bottom: 0;\n }\n}\n\nd-byline h3 {\n font-size: 0.6rem;\n font-weight: 400;\n color: rgba(0, 0, 0, 0.5);\n margin: 0;\n text-transform: uppercase;\n}\n\nd-byline p {\n margin: 0;\n}\n\nd-byline a,\nd-article d-byline a {\n color: rgba(0, 0, 0, 0.8);\n text-decoration: none;\n border-bottom: none;\n}\n\nd-article d-byline a:hover {\n text-decoration: underline;\n border-bottom: none;\n}\n\nd-byline p.author {\n font-weight: 500;\n}\n\nd-byline .affiliations {\n\n}\n"; + + var article = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-article {\n contain: layout style;\n overflow-x: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n padding-top: 2rem;\n color: rgba(0, 0, 0, 0.8);\n}\n\nd-article > * {\n grid-column: text;\n}\n\n@media(min-width: 768px) {\n d-article {\n font-size: 16px;\n }\n}\n\n@media(min-width: 1024px) {\n d-article {\n font-size: 1.06rem;\n line-height: 1.7em;\n }\n}\n\n\n/* H2 */\n\n\nd-article .marker {\n text-decoration: none;\n border: none;\n counter-reset: section;\n grid-column: kicker;\n line-height: 1.7em;\n}\n\nd-article .marker:hover {\n border: none;\n}\n\nd-article .marker span {\n padding: 0 3px 4px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n position: relative;\n top: 4px;\n}\n\nd-article .marker:hover span {\n color: rgba(0, 0, 0, 0.7);\n border-bottom: 1px solid rgba(0, 0, 0, 0.7);\n}\n\nd-article h2 {\n font-weight: 600;\n font-size: 24px;\n line-height: 1.25em;\n margin: 2rem 0 1.5rem 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding-bottom: 1rem;\n}\n\n@media(min-width: 1024px) {\n d-article h2 {\n font-size: 36px;\n }\n}\n\n/* H3 */\n\nd-article h3 {\n font-weight: 700;\n font-size: 18px;\n line-height: 1.4em;\n margin-bottom: 1em;\n margin-top: 2em;\n}\n\n@media(min-width: 1024px) {\n d-article h3 {\n font-size: 20px;\n }\n}\n\n/* H4 */\n\nd-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\nd-article a {\n color: inherit;\n}\n\nd-article p,\nd-article ul,\nd-article ol,\nd-article blockquote {\n margin-top: 0;\n margin-bottom: 1em;\n margin-left: 0;\n margin-right: 0;\n}\n\nd-article blockquote {\n border-left: 2px solid rgba(0, 0, 0, 0.2);\n padding-left: 2em;\n font-style: italic;\n color: rgba(0, 0, 0, 0.6);\n}\n\nd-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\nd-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\nd-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\nd-article ul,\nd-article ol {\n padding-left: 24px;\n}\n\nd-article li {\n margin-bottom: 1em;\n margin-left: 0;\n padding-left: 0;\n}\n\nd-article li:last-child {\n margin-bottom: 0;\n}\n\nd-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\nd-article hr {\n grid-column: screen;\n width: 100%;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\nd-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\nd-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\nd-article > d-code,\nd-article section > d-code {\n display: block;\n}\n\nd-article > d-math[block],\nd-article section > d-math[block] {\n display: block;\n}\n\n@media (max-width: 768px) {\n d-article > d-code,\n d-article section > d-code,\n d-article > d-math[block],\n d-article section > d-math[block] {\n overflow-x: scroll;\n -ms-overflow-style: none; // IE 10+\n overflow: -moz-scrollbars-none; // Firefox\n }\n\n d-article > d-code::-webkit-scrollbar,\n d-article section > d-code::-webkit-scrollbar,\n d-article > d-math[block]::-webkit-scrollbar,\n d-article section > d-math[block]::-webkit-scrollbar {\n display: none; // Safari and Chrome\n }\n}\n\nd-article .citation {\n color: #668;\n cursor: pointer;\n}\n\nd-include {\n width: auto;\n display: block;\n}\n\nd-figure {\n contain: layout style;\n}\n\n/* KaTeX */\n\n.katex, .katex-prerendered {\n contain: style;\n display: inline-block;\n}\n\n/* Tables */\n\nd-article table {\n border-collapse: collapse;\n margin-bottom: 1.5rem;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n\nd-article table th {\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n}\n\nd-article table td {\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\nd-article table tr:last-of-type td {\n border-bottom: none;\n}\n\nd-article table th,\nd-article table td {\n font-size: 15px;\n padding: 2px 8px;\n}\n\nd-article table tbody :first-child td {\n padding-top: 2px;\n}\n"; + + var title = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nd-title {\n padding: 2rem 0 1.5rem;\n contain: layout style;\n overflow-x: hidden;\n}\n\n@media(min-width: 768px) {\n d-title {\n padding: 4rem 0 1.5rem;\n }\n}\n\nd-title h1 {\n grid-column: text;\n font-size: 40px;\n font-weight: 700;\n line-height: 1.1em;\n margin: 0 0 0.5rem;\n}\n\n@media(min-width: 768px) {\n d-title h1 {\n font-size: 50px;\n }\n}\n\nd-title p {\n font-weight: 300;\n font-size: 1.2rem;\n line-height: 1.55em;\n grid-column: text;\n}\n\nd-title .status {\n margin-top: 0px;\n font-size: 12px;\n color: #009688;\n opacity: 0.8;\n grid-column: kicker;\n}\n\nd-title .status span {\n line-height: 1;\n display: inline-block;\n padding: 6px 0;\n border-bottom: 1px solid #80cbc4;\n font-size: 11px;\n text-transform: uppercase;\n}\n"; + + var math = "/*\n * Copyright 2018 The Distill Template Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nspan.katex-display {\n text-align: left;\n padding: 8px 0 8px 0;\n margin: 0.5em 0 0.5em 1em;\n}\n\nspan.katex {\n -webkit-font-smoothing: antialiased;\n color: rgba(0, 0, 0, 0.8);\n font-size: 1.18em;\n}\n"; + + // Copyright 2018 The Distill Template Authors + + const styles = base + layout + title + byline + article + math + print; + + function makeStyleTag(dom) { + + const styleTagId = 'distill-prerendered-styles'; + const prerenderedTag = dom.getElementById(styleTagId); + if (!prerenderedTag) { + const styleTag = dom.createElement('style'); + styleTag.id = styleTagId; + styleTag.type = 'text/css'; + const cssTextTag = dom.createTextNode(styles); + styleTag.appendChild(cssTextTag); + const firstScriptTag = dom.head.querySelector('script'); + dom.head.insertBefore(styleTag, firstScriptTag); + } + + } + + // Copyright 2018 The Distill Template Authors + + function renderTOC(element, headings) { + + let ToC =` + + +

      Table of contents

      +
        `; + + for (const el of headings) { + // should element be included in TOC? + const isInTitle = el.parentElement.tagName == 'D-TITLE'; + const isException = el.getAttribute('no-toc'); + if (isInTitle || isException) continue; + // create TOC entry + const title = el.textContent; + const link = '#' + el.getAttribute('id'); + + let newLine = '
      • ' + '' + title + '' + '
      • '; + if (el.tagName == 'H3') { + newLine = '
          ' + newLine + '
        '; + } else { + newLine += '
        '; + } + ToC += newLine; + + } + + ToC += '
      '; + element.innerHTML = ToC; + } + + // Copyright 2018 The Distill Template Authors + + function TOC(dom) { + const article = dom.querySelector('d-article'); + const toc = dom.querySelector('d-toc'); + if (toc) { + const headings = article.querySelectorAll('h2, h3'); + renderTOC(toc, headings); + toc.setAttribute('prerendered', 'true'); + } + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + function Typeset(dom) { + + var textNodes = dom.createTreeWalker( + dom.body, + dom.defaultView.NodeFilter.SHOW_TEXT + ); + while (textNodes.nextNode()) { + var n = textNodes.currentNode, + text = n.nodeValue; + if (text && acceptNode(n)) { + text = quotes(text); + text = punctuation(text); + // TODO: Add back support for ligatures once their uppercased versions don't hang Chrome search anymore + // see: https://bugs.chromium.org/p/chromium/issues/detail?id=862648 + // text = ligatures(text); + n.nodeValue = text; + } + } + } + + // 2018-07-11 shancarter@ and ludwigschubert@ no longer know what this was meant to accomplish + // if it was trying to not replace text in any child nodes of those listed here, + // then it does not accomplish that. + function acceptNode(node) { + var parent = node.parentElement; + var isMath = (parent && parent.getAttribute && parent.getAttribute('class')) ? parent.getAttribute('class').includes('katex') || parent.getAttribute('class').includes('MathJax') : false; + return parent && + parent.nodeName !== 'SCRIPT' && + parent.nodeName !== 'STYLE' && + parent.nodeName !== 'CODE' && + parent.nodeName !== 'PRE' && + parent.nodeName !== 'SPAN' && + parent.nodeName !== 'D-HEADER' && + parent.nodeName !== 'D-BYLINE' && + parent.nodeName !== 'D-MATH' && + parent.nodeName !== 'D-CODE' && + parent.nodeName !== 'D-BIBLIOGRAPHY' && + parent.nodeName !== 'D-FOOTER' && + parent.nodeName !== 'D-APPENDIX' && + parent.nodeName !== 'D-FRONTMATTER' && + parent.nodeName !== 'D-TOC' && + parent.nodeType !== 8 && //comment nodes + !isMath; + } + + + /*! + * typeset - Typesetting for the web + * @version v0.1.6 + * @link https://github.com/davidmerfield/Typeset.js + * @author David Merfield + */ + // which has a CC0 license + // http://creativecommons.org/publicdomain/zero/1.0/ + + + function punctuation(text){ + + // Dashes + text = text.replace(/--/g, '\u2014'); + text = text.replace(/\s*\u2014\s*/g,'\u2009\u2014\u2009'); //this has thin spaces + + // Elipses + text = text.replace(/\.\.\./g,'…'); + + // Nbsp for punc with spaces + var NBSP = '\u00a0'; + var NBSP_PUNCTUATION_START = /([«¿¡]) /g; + var NBSP_PUNCTUATION_END = / ([!?:;.,‽»])/g; + + text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP); + text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1'); + + return text; + } + + function quotes(text) { + + text = text + .replace(/(\W|^)"([^\s!?:;.,‽»])/g, '$1\u201c$2') // beginning " + .replace(/(\u201c[^"]*)"([^"]*$|[^\u201c"]*\u201c)/g, '$1\u201d$2') // ending " + .replace(/([^0-9])"/g,'$1\u201d') // remaining " at end of word + .replace(/(\W|^)'(\S)/g, '$1\u2018$2') // beginning ' + .replace(/([a-z])'([a-z])/ig, '$1\u2019$2') // conjunction's possession + .replace(/((\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\u2019$3') // ending ' + .replace(/(\u2018)([0-9]{2}[^\u2019]*)(\u2018([^0-9]|$)|$|\u2019[a-z])/ig, '\u2019$2$3') // abbrev. years like '93 + .replace(/(\B|^)\u2018(?=([^\u2019]*\u2019\b)*([^\u2019\u2018]*\W[\u2019\u2018]\b|[^\u2019\u2018]*$))/ig, '$1\u2019') // backwards apostrophe + .replace(/'''/g, '\u2034') // triple prime + .replace(/("|'')/g, '\u2033') // double prime + .replace(/'/g, '\u2032'); + + // Allow escaped quotes + text = text.replace(/\\“/, '"'); + text = text.replace(/\\”/, '"'); + text = text.replace(/\\’/, '\''); + text = text.replace(/\\‘/, '\''); + + return text; + } + + // Copyright 2018 The Distill Template Authors + + // const template = ` + // if ('IntersectionObserver' in window && + // 'IntersectionObserverEntry' in window && + // 'intersectionRatio' in IntersectionObserverEntry.prototype) { + // // Platform supports IntersectionObserver natively! :-) + // if (!('isIntersecting' in IntersectionObserverEntry.prototype)) { + // Object.defineProperty(IntersectionObserverEntry.prototype, + // 'isIntersecting', { + // get: function () { + // return this.intersectionRatio > 0; + // } + // }); + // } + // } else { + // // Platform does not support webcomponents--loading polyfills synchronously. + // const scriptTag = document.createElement('script'); + // scriptTag.src = '${intersectionObserverPath}'; + // scriptTag.async = false; + // document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling); + // } + // + // if ('registerElement' in document && + // 'import' in document.createElement('link') && + // 'content' in document.createElement('template')) { + // // Platform supports webcomponents natively! :-) + // } else { + // // Platform does not support webcomponents--loading polyfills synchronously. + // const scriptTag = document.createElement('script'); + // scriptTag.src = '${webcomponentPath}'; + // scriptTag.async = false; + // document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling); + // } + // + // + // `; + + + const addBackIn = ` +window.addEventListener('WebComponentsReady', function() { + console.warn('WebComponentsReady'); + const loaderTag = document.createElement('script'); + loaderTag.src = 'https://distill.pub/template.v2.js'; + document.head.insertBefore(loaderTag, document.head.firstChild); +}); +`; + + function render(dom) { + // pull out template script tag + const templateTag = dom.querySelector('script[src*="template.v2.js"]'); + if (templateTag) { + templateTag.parentNode.removeChild(templateTag); + } else { + console.debug('FYI: Did not find template tag when trying to remove it. You may not have added it. Be aware that our polyfills will add it.'); + } + + // add loader + const loaderTag = dom.createElement('script'); + loaderTag.src = 'https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.0.17/webcomponents-loader.js'; + dom.head.insertBefore(loaderTag, dom.head.firstChild); + + // add loader event listener to add tempalrte back in + const addTag = dom.createElement('script'); + addTag.innerHTML = addBackIn; + dom.head.insertBefore(addTag, dom.head.firstChild); + + + // create polyfill script tag + // const polyfillScriptTag = dom.createElement('script'); + // polyfillScriptTag.innerHTML = template; + // polyfillScriptTag.id = 'polyfills'; + + // insert at appropriate position--before any other script tag + // const firstScriptTag = dom.head.querySelector('script'); + // dom.head.insertBefore(polyfillScriptTag, firstScriptTag); + } + + // Copyright 2018 The Distill Template Authors + + const styles$1 = ` +d-citation-list { + contain: style; +} + +d-citation-list .references { + grid-column: text; +} + +d-citation-list .references .title { + font-weight: 500; +} +`; + + function renderCitationList(element, entries, dom=document) { + if (entries.size > 0) { + element.style.display = ''; + let list = element.querySelector('.references'); + if (list) { + list.innerHTML = ''; + } else { + const stylesTag = dom.createElement('style'); + stylesTag.innerHTML = styles$1; + element.appendChild(stylesTag); + + const heading = dom.createElement('h3'); + heading.id = 'references'; + heading.textContent = 'References'; + element.appendChild(heading); + + list = dom.createElement('ol'); + list.id = 'references-list'; + list.className = 'references'; + element.appendChild(list); + } + + for (const [key, entry] of entries) { + const listItem = dom.createElement('li'); + listItem.id = key; + listItem.innerHTML = bibliography_cite(entry); + list.appendChild(listItem); + } + } else { + element.style.display = 'none'; + } + } + + // Copyright 2018 The Distill Template Authors + + function CitationList(dom, data) { + const citationListTag = dom.querySelector('d-citation-list'); + if (citationListTag) { + const entries = new Map(data.citations.map( citationKey => { + return [citationKey, data.bibliography.get(citationKey)]; + })); + renderCitationList(citationListTag, entries, dom); + citationListTag.setAttribute('distill-prerendered', 'true'); + } + } + + // Copyright 2018 The Distill Template Authors + // + // Licensed under the Apache License, Version 2.0 (the "License"); + // you may not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, software + // distributed under the License is distributed on an "AS IS" BASIS, + // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + // See the License for the specific language governing permissions and + // limitations under the License. + + /* + Try to only reorder things that MAY be user defined. + Try to use templates etc to define the order of our own tags. + */ + + function render$1(dom) { + const head = dom.head; + + const metaIE = head.querySelector('meta[http-equiv]'); + head.insertBefore(metaIE, head.firstChild); + + const metaViewport = head.querySelector('meta[name=viewport]'); + head.insertBefore(metaViewport, head.firstChild); + + const metaCharset = head.querySelector('meta[charset]'); + head.insertBefore(metaCharset, head.firstChild); + } + + var logo = "\n \n\n"; + + const headerTemplate = ` + + +`; + + // Copyright 2018 The Distill Template Authors + + function DistillHeader(dom, data) { + const headerTag = dom.querySelector('distill-header'); + if (!headerTag) { + const header = dom.createElement('distill-header'); + header.innerHTML = headerTemplate; + header.setAttribute('distill-prerendered', ""); + const body = dom.querySelector('body'); + body.insertBefore(header, body.firstChild); + } + } + + // Copyright 2018 The Distill Template Authors + + const styles$2 = ` + +`; + + function appendixTemplate(frontMatter) { + let html = styles$2; + + if (typeof frontMatter.githubUrl !== 'undefined') { + html += ` +

      Updates and Corrections

      +

      `; + if (frontMatter.githubCompareUpdatesUrl) { + html += `View all changes to this article since it was first published.`; + } + html += ` + If you see mistakes or want to suggest changes, please create an issue on GitHub.

      + `; + } + + const journal = frontMatter.journal; + if (typeof journal !== 'undefined' && journal.title === 'Distill') { + html += ` +

      Reuse

      +

      Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.

      + `; + } + + if (typeof frontMatter.publishedDate !== 'undefined') { + html += ` +

      Citation

      +

      For attribution in academic contexts, please cite this work as

      +
      ${frontMatter.concatenatedAuthors}, "${frontMatter.title}", Distill, ${frontMatter.publishedYear}.
      +

      BibTeX citation

      +
      ${serializeFrontmatterToBibtex(frontMatter)}
      + `; + } + + return html; + } + + // Copyright 2018 The Distill Template Authors + + function DistillAppendix(dom, data) { + + const appendixTag = dom.querySelector('d-appendix'); + if (!appendixTag) { + console.warn('No appendix tag found!'); + return; + } + const distillAppendixTag = appendixTag.querySelector('distill-appendix'); + if (!distillAppendixTag) { + const distillAppendix = dom.createElement('distill-appendix'); + appendixTag.appendChild(distillAppendix); + distillAppendix.innerHTML = appendixTemplate(data); + } + + } + + const footerTemplate = ` + + + + +`; + + // Copyright 2018 The Distill Template Authors + + function DistillFooter(dom) { + const footerTag = dom.querySelector('distill-footer'); + if(!footerTag) { + const footer = dom.createElement('distill-footer'); + footer.innerHTML = footerTemplate; + const body = dom.querySelector('body'); + body.appendChild(footer); + } + } + + // Copyright 2018 The Distill Template Authors + + const extractors = new Map([ + ['ExtractFrontmatter', ExtractFrontmatter], + ['ExtractBibliography', ExtractBibliography], + ['ExtractCitations', ExtractCitations], + ]); + + const transforms = new Map([ + ['HTML', HTML], + ['makeStyleTag', makeStyleTag], + ['OptionalComponents', OptionalComponents], + ['TOC', TOC], + ['Byline', Byline], + ['Mathematics', Mathematics], + ['Meta', Meta], + ['Typeset', Typeset], + ['Polyfills', render], + ['CitationList', CitationList], + ['Reorder', render$1] // keep last + ]); + + const distillTransforms = new Map([ + ['DistillHeader', DistillHeader], + ['DistillAppendix', DistillAppendix], + ['DistillFooter', DistillFooter], + ]); + + /* Exported functions */ + + function render$2(dom, data, verbose=true) { + let frontMatter; + if (data instanceof FrontMatter) { + frontMatter = data; + } else { + frontMatter = FrontMatter.fromObject(data); + } + // first, we collect static data from the dom + for (const [name, extract] of extractors.entries()) { + if (verbose) console.warn('Running extractor: ' + name); + extract(dom, frontMatter, verbose); + } + // secondly we use it to transform parts of the dom + for (const [name, transform] of transforms.entries()) { + if (verbose) console.warn('Running transform: ' + name); + // console.warn('Running transform: ', transform); + transform(dom, frontMatter, verbose); + } + dom.body.setAttribute('distill-prerendered', ''); + // the function calling us can now use the transformed dom and filled data object + if (data instanceof FrontMatter) ; else { + frontMatter.assignToObject(data); + } + } + + function distillify(dom, data, verbose=true) { + // thirdly, we can use these additional transforms when publishing on the Distill website + for (const [name, transform] of distillTransforms.entries()) { + if (verbose) console.warn('Running distillify: ', name); + transform(dom, data, verbose); + } + } + + function usesTemplateV2(dom) { + const tags = dom.querySelectorAll('script'); + let usesV2 = undefined; + for (const tag of tags) { + const src = tag.src; + if (src.includes('template.v1.js')) { + usesV2 = false; + } else if (src.includes('template.v2.js')) { + usesV2 = true; + } else if (src.includes('template.')) { + throw new Error('Uses distill template, but unknown version?!'); + } + } + + if (usesV2 === undefined) { + throw new Error('Does not seem to use Distill template at all.'); + } else { + return usesV2; + } + } + + const testing = { + extractors: extractors, + transforms: transforms, + distillTransforms: distillTransforms + }; + + exports.FrontMatter = FrontMatter; + exports.distillify = distillify; + exports.render = render$2; + exports.testing = testing; + exports.usesTemplateV2 = usesTemplateV2; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=transforms.v2.js.map diff --git a/assets/js/distillpub/transforms.v2.js.map b/assets/js/distillpub/transforms.v2.js.map new file mode 100644 index 0000000..10b8b49 --- /dev/null +++ b/assets/js/distillpub/transforms.v2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transforms.v2.js","sources":["../src/front-matter.js","../src/components/d-front-matter.js","../src/extractors/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../src/helpers/bibtex.js","../src/components/d-bibliography.js","../src/extractors/bibliography.js","../src/helpers/citation.js","../src/extractors/citations.js","../src/transforms/html.js","../src/components/d-byline.js","../src/transforms/byline.js","../src/transforms/optional-components.js","../node_modules/katex/dist/katex.js","../src/helpers/katex-auto-render.js","../src/transforms/mathematics.js","../node_modules/escape-html/index.js","../src/transforms/meta.js","../src/styles/styles.js","../src/components/d-toc.js","../src/transforms/toc.js","../src/transforms/typeset.js","../src/transforms/polyfills.js","../src/components/d-citation-list.js","../src/transforms/citation-list.js","../src/transforms/reorder.js","../src/distill-components/distill-header-template.js","../src/distill-transforms/distill-header.js","../src/distill-components/distill-appendix.js","../src/distill-transforms/distill-appendix.js","../src/distill-components/distill-footer-template.js","../src/distill-transforms/distill-footer.js","../src/transforms.js"],"sourcesContent":["// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nconst days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\nconst months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];\nconst zeroPad = n => n < 10 ? '0' + n : n;\n\nconst RFC = function(date) {\n const day = days[date.getDay()].substring(0, 3);\n const paddedDate = zeroPad(date.getDate());\n const month = months[date.getMonth()].substring(0,3);\n const year = date.getFullYear().toString();\n const hours = date.getUTCHours().toString();\n const minutes = date.getUTCMinutes().toString();\n const seconds = date.getUTCSeconds().toString();\n return `${day}, ${paddedDate} ${month} ${year} ${hours}:${minutes}:${seconds} Z`;\n};\n\nconst objectFromMap = function(map) {\n const object = Array.from(map).reduce((object, [key, value]) => (\n Object.assign(object, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't.\n ), {});\n return object;\n};\n\nconst mapFromObject = function(object) {\n const map = new Map();\n for (var property in object) {\n if (object.hasOwnProperty(property)) {\n map.set(property, object[property]);\n }\n }\n return map;\n};\n\nclass Author {\n\n // constructor(name='', personalURL='', affiliation='', affiliationURL='') {\n // this.name = name; // 'Chris Olah'\n // this.personalURL = personalURL; // 'https://colah.github.io'\n // this.affiliation = affiliation; // 'Google Brain'\n // this.affiliationURL = affiliationURL; // 'https://g.co/brain'\n // }\n\n constructor(object) {\n this.name = object.author; // 'Chris Olah'\n this.personalURL = object.authorURL; // 'https://colah.github.io'\n this.affiliation = object.affiliation; // 'Google Brain'\n this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'\n this.affiliations = object.affiliations || []; // new-style affiliations\n }\n\n // 'Chris'\n get firstName() {\n const names = this.name.split(' ');\n return names.slice(0, names.length - 1).join(' ');\n }\n\n // 'Olah'\n get lastName() {\n const names = this.name.split(' ');\n return names[names.length -1];\n }\n}\n\nexport function mergeFromYMLFrontmatter(target, source) {\n target.title = source.title;\n if (source.published) {\n if (source.published instanceof Date) {\n target.publishedDate = source.published;\n } else if (source.published.constructor === String) {\n target.publishedDate = new Date(source.published);\n }\n }\n if (source.publishedDate) {\n if (source.publishedDate instanceof Date) {\n target.publishedDate = source.publishedDate;\n } else if (source.publishedDate.constructor === String) {\n target.publishedDate = new Date(source.publishedDate);\n } else {\n console.error('Don\\'t know what to do with published date: ' + source.publishedDate);\n }\n }\n target.description = source.description;\n target.authors = source.authors.map( (authorObject) => new Author(authorObject));\n target.katex = source.katex;\n target.password = source.password;\n if (source.doi) {\n target.doi = source.doi;\n }\n}\n\nexport class FrontMatter {\n constructor() {\n this.title = 'unnamed article'; // 'Attention and Augmented Recurrent Neural Networks'\n this.description = ''; // 'A visual overview of neural attention...'\n this.authors = []; // Array of Author(s)\n\n this.bibliography = new Map();\n this.bibliographyParsed = false;\n // {\n // 'gregor2015draw': {\n // 'title': 'DRAW: A recurrent neural network for image generation',\n // 'author': 'Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan',\n // 'journal': 'arXiv preprint arXiv:1502.04623',\n // 'year': '2015',\n // 'url': 'https://arxiv.org/pdf/1502.04623.pdf',\n // 'type': 'article'\n // },\n // }\n\n // Citation keys should be listed in the order that they are appear in the document.\n // Each key refers to a key in the bibliography dictionary.\n this.citations = []; // [ 'gregor2015draw', 'mercier2011humans' ]\n this.citationsCollected = false;\n\n //\n // Assigned from posts.csv\n //\n\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // tags: [ 'rnn' ],\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // doiSuffix: 1,\n\n //\n // Assigned from journal\n //\n this.journal = {};\n // journal: {\n // 'title': 'Distill',\n // 'full_title': 'Distill',\n // 'abbrev_title': 'Distill',\n // 'url': 'http://distill.pub',\n // 'doi': '10.23915/distill',\n // 'publisherName': 'Distill Working Group',\n // 'publisherEmail': 'admin@distill.pub',\n // 'issn': '2476-0757',\n // 'editors': [...],\n // 'committee': [...]\n // }\n // volume: 1,\n // issue: 9,\n\n this.katex = {};\n\n //\n // Assigned from publishing process\n //\n\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // doi: '10.23915/distill.00001',\n this.doi = undefined;\n this.publishedDate = undefined;\n }\n\n // Example:\n // title: Demo Title Attention and Augmented Recurrent Neural Networks\n // published: Jan 10, 2017\n // authors:\n // - Chris Olah:\n // - Shan Carter: http://shancarter.com\n // affiliations:\n // - Google Brain:\n // - Google Brain: http://g.co/brain\n\n //\n // Computed Properties\n //\n\n // 'http://distill.pub/2016/augmented-rnns',\n set url(value) {\n this._url = value;\n }\n get url() {\n if (this._url) {\n return this._url;\n } else if (this.distillPath && this.journal.url) {\n return this.journal.url + '/' + this.distillPath;\n } else if (this.journal.url) {\n return this.journal.url;\n }\n }\n\n // 'https://github.com/distillpub/post--augmented-rnns',\n get githubUrl() {\n if (this.githubPath) {\n return 'https://github.com/' + this.githubPath;\n } else {\n return undefined;\n }\n }\n\n // TODO resolve differences in naming of URL/Url/url.\n // 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n set previewURL(value) {\n this._previewURL = value;\n }\n get previewURL() {\n return this._previewURL ? this._previewURL : this.url + '/thumbnail.jpg';\n }\n\n // 'Thu, 08 Sep 2016 00:00:00 -0700',\n get publishedDateRFC() {\n return RFC(this.publishedDate);\n }\n\n // 'Thu, 08 Sep 2016 00:00:00 -0700',\n get updatedDateRFC() {\n return RFC(this.updatedDate);\n }\n\n // 2016,\n get publishedYear() {\n return this.publishedDate.getFullYear();\n }\n\n // 'Sept',\n get publishedMonth() {\n return months[this.publishedDate.getMonth()];\n }\n\n // 8,\n get publishedDay() {\n return this.publishedDate.getDate();\n }\n\n // '09',\n get publishedMonthPadded() {\n return zeroPad(this.publishedDate.getMonth() + 1);\n }\n\n // '08',\n get publishedDayPadded() {\n return zeroPad(this.publishedDate.getDate());\n }\n\n get publishedISODateOnly() {\n return this.publishedDate.toISOString().split('T')[0];\n }\n\n get volume() {\n const volume = this.publishedYear - 2015;\n if (volume < 1) {\n throw new Error('Invalid publish date detected during computing volume');\n }\n return volume;\n }\n\n get issue() {\n return this.publishedDate.getMonth() + 1;\n }\n\n // 'Olah & Carter',\n get concatenatedAuthors() {\n if (this.authors.length > 2) {\n return this.authors[0].lastName + ', et al.';\n } else if (this.authors.length === 2) {\n return this.authors[0].lastName + ' & ' + this.authors[1].lastName;\n } else if (this.authors.length === 1) {\n return this.authors[0].lastName;\n }\n }\n\n // 'Olah, Chris and Carter, Shan',\n get bibtexAuthors() {\n return this.authors.map(author => {\n return author.lastName + ', ' + author.firstName;\n }).join(' and ');\n }\n\n // 'olah2016attention'\n get slug() {\n let slug = '';\n if (this.authors.length) {\n slug += this.authors[0].lastName.toLowerCase();\n slug += this.publishedYear;\n slug += this.title.split(' ')[0].toLowerCase();\n }\n return slug || 'Untitled';\n }\n\n get bibliographyEntries() {\n return new Map(this.citations.map( citationKey => {\n const entry = this.bibliography.get(citationKey);\n return [citationKey, entry];\n }));\n }\n\n set bibliography(bibliography) {\n if (bibliography instanceof Map) {\n this._bibliography = bibliography;\n } else if (typeof bibliography === 'object') {\n this._bibliography = mapFromObject(bibliography);\n }\n }\n\n get bibliography() {\n return this._bibliography;\n }\n\n static fromObject(source) {\n const frontMatter = new FrontMatter();\n Object.assign(frontMatter, source);\n return frontMatter;\n }\n\n assignToObject(target) {\n Object.assign(target, this);\n target.bibliography = objectFromMap(this.bibliographyEntries);\n target.url = this.url;\n target.doi = this.doi;\n target.githubUrl = this.githubUrl;\n target.previewURL = this.previewURL;\n if (this.publishedDate) {\n target.volume = this.volume;\n target.issue = this.issue;\n target.publishedDateRFC = this.publishedDateRFC;\n target.publishedYear = this.publishedYear;\n target.publishedMonth = this.publishedMonth;\n target.publishedDay = this.publishedDay;\n target.publishedMonthPadded = this.publishedMonthPadded;\n target.publishedDayPadded = this.publishedDayPadded;\n }\n if (this.updatedDate) {\n target.updatedDateRFC = this.updatedDateRFC;\n }\n target.concatenatedAuthors = this.concatenatedAuthors;\n target.bibtexAuthors = this.bibtexAuthors;\n target.slug = this.slug;\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport function _moveLegacyAffiliationFormatIntoArray(frontMatter) {\n // authors used to have propoerties \"affiliation\" and \"affiliationURL\".\n // We now encourage using an array for affiliations containing objects with\n // properties \"name\" and \"url\".\n for (let author of frontMatter.authors) {\n const hasOldStyle = Boolean(author.affiliation)\n const hasNewStyle = Boolean(author.affiliations)\n if (!hasOldStyle) continue;\n if (hasNewStyle) {\n console.warn(`Author ${author.author} has both old-style (\"affiliation\" & \"affiliationURL\") and new style (\"affiliations\") affiliation information!`)\n } else {\n let newAffiliation = {\n \"name\": author.affiliation\n }\n if (author.affiliationURL) newAffiliation.url = author.affiliationURL;\n author.affiliations = [newAffiliation];\n }\n }\n return frontMatter\n}\n\nexport function parseFrontmatter(element) {\n const scriptTag = element.firstElementChild;\n if (scriptTag) {\n const type = scriptTag.getAttribute('type');\n if (type.split('/')[1] == 'json') {\n const content = scriptTag.textContent;\n const parsed = JSON.parse(content);\n return _moveLegacyAffiliationFormatIntoArray(parsed);\n } else {\n console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');\n }\n } else {\n console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.');\n }\n return {};\n}\n\nexport class FrontMatter extends HTMLElement {\n\n static get is() { return 'd-front-matter'; }\n\n constructor() {\n super();\n\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver( (entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n const data = parseFrontmatter(this);\n this.notify(data);\n }\n }\n });\n observer.observe(this, options);\n }\n\n notify(data) {\n const options = { detail: data, bubbles: true };\n const event = new CustomEvent('onFrontMatterChanged', options);\n document.dispatchEvent(event);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { parseFrontmatter } from '../components/d-front-matter';\nimport { mergeFromYMLFrontmatter } from '../front-matter.js';\n\nexport default function(dom, data) {\n const frontMatterTag = dom.querySelector('d-front-matter');\n if (!frontMatterTag) {\n console.warn('No front matter tag found!');\n return;\n }\n const extractedData = parseFrontmatter(frontMatterTag);\n mergeFromYMLFrontmatter(data, extractedData);\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport bibtexParse from 'bibtex-parse-js';\n\nfunction normalizeTag(string) {\n return string\n .replace(/[\\t\\n ]+/g, ' ')\n .replace(/{\\\\[\"^`.'acu~Hvs]( )?([a-zA-Z])}/g, (full, x, char) => char)\n .replace(/{\\\\([a-zA-Z])}/g, (full, char) => char);\n}\n\nexport function parseBibtex(bibtex) {\n const bibliography = new Map();\n const parsedEntries = bibtexParse.toJSON(bibtex);\n for (const entry of parsedEntries) {\n // normalize tags; note entryTags is an object, not Map\n for (const [key, value] of Object.entries(entry.entryTags)) {\n entry.entryTags[key.toLowerCase()] = normalizeTag(value);\n }\n entry.entryTags.type = entry.entryType;\n // add to bibliography\n bibliography.set(entry.citationKey, entry.entryTags);\n }\n return bibliography;\n}\n\nexport function serializeFrontmatterToBibtex(frontMatter) {\n return `@article{${frontMatter.slug},\n author = {${frontMatter.bibtexAuthors}},\n title = {${frontMatter.title}},\n journal = {${frontMatter.journal.title}},\n year = {${frontMatter.publishedYear}},\n note = {${frontMatter.url}},\n doi = {${frontMatter.doi}}\n}`;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { parseBibtex } from '../helpers/bibtex';\n\nexport function parseBibliography(element) {\n const scriptTag = element.firstElementChild;\n if (scriptTag && scriptTag.tagName === 'SCRIPT') {\n if (scriptTag.type == 'text/bibtex') {\n const bibtex = element.firstElementChild.textContent;\n return parseBibtex(bibtex);\n } else if (scriptTag.type == 'text/json') {\n return new Map(JSON.parse(scriptTag.textContent));\n } else {\n console.warn('Unsupported bibliography script tag type: ' + scriptTag.type);\n }\n } else {\n console.warn('Bibliography did not have any script tag.');\n }\n}\n\nexport class Bibliography extends HTMLElement {\n\n static get is() { return 'd-bibliography'; }\n\n constructor() {\n super();\n\n // set up mutation observer\n const options = {childList: true, characterData: true, subtree: true};\n const observer = new MutationObserver( (entries) => {\n for (const entry of entries) {\n if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n this.parseIfPossible();\n }\n }\n });\n observer.observe(this, options);\n }\n\n connectedCallback() {\n requestAnimationFrame(() => {\n this.parseIfPossible();\n });\n }\n\n parseIfPossible() {\n const scriptTag = this.querySelector('script');\n if (!scriptTag) return;\n if (scriptTag.type == 'text/bibtex') {\n const newBibtex = scriptTag.textContent;\n if (this.bibtex !== newBibtex) {\n this.bibtex = newBibtex;\n const bibliography = parseBibtex(this.bibtex);\n this.notify(bibliography);\n }\n } else if (scriptTag.type == 'text/json') {\n const bibliography = new Map(JSON.parse(scriptTag.textContent));\n this.notify(bibliography);\n } else {\n console.warn('Unsupported bibliography script tag type: ' + scriptTag.type);\n }\n }\n\n notify(bibliography) {\n const options = { detail: bibliography, bubbles: true };\n const event = new CustomEvent('onBibliographyChanged', options);\n this.dispatchEvent(event);\n }\n\n /* observe 'src' attribute */\n\n static get observedAttributes() {\n return ['src'];\n }\n\n receivedBibtex(event) {\n const bibliography = parseBibtex(event.target.response);\n this.notify(bibliography);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n var oReq = new XMLHttpRequest();\n oReq.onload = (e) => this.receivedBibtex(e);\n oReq.onerror = () => console.warn(`Could not load Bibtex! (tried ${newValue})`);\n oReq.responseType = 'text';\n oReq.open('GET', newValue, true);\n oReq.send();\n }\n\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { parseBibtex } from '../helpers/bibtex';\nimport fs from 'fs';\nimport { parseBibliography } from '../components/d-bibliography';\n\nexport default function(dom, data) {\n const bibliographyTag = dom.querySelector('d-bibliography');\n if (!bibliographyTag) {\n console.warn('No bibliography tag found!');\n return;\n }\n\n const src = bibliographyTag.getAttribute('src');\n if (src) {\n const path = data.inputDirectory + '/' + src;\n const text = fs.readFileSync(path, 'utf-8');\n const bibliography = parseBibtex(text);\n const scriptTag = dom.createElement('script');\n scriptTag.type = 'text/json';\n scriptTag.textContent = JSON.stringify([...bibliography]);\n bibliographyTag.appendChild(scriptTag);\n bibliographyTag.removeAttribute('src');\n }\n\n data.bibliography = parseBibliography(bibliographyTag);\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport function collect_citations(dom = document) {\n const citations = new Set();\n const citeTags = dom.querySelectorAll(\"d-cite\");\n for (const tag of citeTags) {\n const keyString = tag.getAttribute(\"key\") || tag.getAttribute(\"bibtex-key\");\n const keys = keyString.split(\",\").map(k => k.trim());\n for (const key of keys) {\n citations.add(key);\n }\n }\n return [...citations];\n}\n\nexport function inline_cite_short(keys) {\n function cite_string(key) {\n if (key in data.bibliography) {\n var n = data.citations.indexOf(key) + 1;\n return \"\" + n;\n } else {\n return \"?\";\n }\n }\n return \"[\" + keys.map(cite_string).join(\", \") + \"]\";\n}\n\nexport function inline_cite_long(keys) {\n function cite_string(key) {\n if (key in data.bibliography) {\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim());\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n}\n\nfunction author_string(ent, template, sep, finalSep) {\n if (ent.author == null) {\n return \"\";\n }\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1) {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else if (name.indexOf(\" \") != -1) {\n var last = name\n .split(\" \")\n .slice(-1)[0]\n .trim();\n var firsts = name\n .split(\" \")\n .slice(0, -1)\n .join(\" \");\n } else {\n var last = name.trim();\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts\n .trim()\n .split(\" \")\n .map(s => s.trim()[0]);\n initials = initials.join(\".\") + \".\";\n }\n return template\n .replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials)\n .trim(); // in case one of first or last was empty\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length - 1).join(sep);\n str += (finalSep || sep) + name_strings[names.length - 1];\n return str;\n } else {\n return name_strings[0];\n }\n}\n\nfunction venue_string(ent) {\n var cite = ent.journal || ent.booktitle || \"\";\n if (\"volume\" in ent) {\n var issue = ent.issue || ent.number;\n issue = issue != undefined ? \"(\" + issue + \")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent) {\n cite += \", pp. \" + ent.pages;\n }\n if (cite != \"\") cite += \". \";\n if (\"publisher\" in ent) {\n cite += ent.publisher;\n if (cite[cite.length - 1] != \".\") cite += \".\";\n }\n return cite;\n}\n\nfunction link_string(ent) {\n if (\"url\" in ent) {\n var url = ent.url;\n var arxiv_match = /arxiv\\.org\\/abs\\/([0-9\\.]*)/.exec(url);\n if (arxiv_match != null) {\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\") {\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label || \"link\"}]`;\n } /* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n}\nfunction doi_string(ent, new_line) {\n if (\"doi\" in ent) {\n return `${new_line ? \"
      \" : \"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n}\n\nfunction title_string(ent) {\n return '' + ent.title + \" \";\n}\n\nexport function bibliography_cite(ent, fancy) {\n if (ent) {\n var cite = title_string(ent);\n cite += link_string(ent) + \"
      \";\n if (ent.author) {\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date) {\n cite += \", \";\n }\n }\n if (ent.year || ent.date) {\n cite += (ent.year || ent.date) + \". \";\n } else {\n cite += \". \";\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite;\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n}\n\nexport function hover_cite(ent) {\n if (ent) {\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
      \";\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str =\n venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str + v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
      \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n}\n\n//https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\nfunction get_GS_URL(ent) {\n if (ent) {\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim());\n var title = ent.title.split(\" \"); //.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"; //\"\"https://scholar.google.com/scholar?\"\n url += uris({ q: names.join(\" \") + \" \" + title.join(\" \") });\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { collect_citations } from '../helpers/citation.js';\n\nexport default function(dom, data) {\n const citations = new Set(data.citations);\n const newCitations = collect_citations(dom);\n for (const citation of newCitations) {\n citations.add(citation);\n }\n data.citations = Array.from(citations);\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport default function(dom) {\n\n const head = dom.querySelector('head');\n\n // set language to 'en'\n if (!dom.querySelector('html').getAttribute('lang')) {\n dom.querySelector('html').setAttribute('lang', 'en');\n }\n\n // set charset to 'utf-8'\n if (!dom.querySelector('meta[charset]')) {\n const meta = dom.createElement('meta');\n meta.setAttribute('charset', 'utf-8');\n head.appendChild(meta);\n }\n\n // set viewport\n if (!dom.querySelector('meta[name=viewport]')) {\n const meta = dom.createElement('meta');\n meta.setAttribute('name', 'viewport');\n meta.setAttribute('content', 'width=device-width, initial-scale=1');\n head.appendChild(meta);\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// import style from '../styles/d-byline.css';\n\nexport function bylineTemplate(frontMatter) {\n return `\n
      \n
      \n

      Authors

      \n

      Affiliations

      \n ${frontMatter.authors.map(author => `\n

      \n ${author.personalURL ? `\n ${author.name}` : `\n ${author.name}`}\n

      \n

      \n ${author.affiliations.map(affiliation =>\n affiliation.url ? `${affiliation.name}` : `${affiliation.name}`\n ).join(', ')}\n

      \n `).join('')}\n
      \n
      \n

      Published

      \n ${frontMatter.publishedDate ? `\n

      ${frontMatter.publishedMonth} ${frontMatter.publishedDay}, ${frontMatter.publishedYear}

      ` : `\n

      Not published yet.

      `}\n
      \n
      \n`;\n}\n\nexport class Byline extends HTMLElement {\n\n static get is() { return 'd-byline'; }\n\n set frontMatter(frontMatter) {\n this.innerHTML = bylineTemplate(frontMatter);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { bylineTemplate } from '../components/d-byline.js';\n\nexport default function(dom, data) {\n const byline = dom.querySelector('d-byline');\n if (byline) {\n byline.innerHTML = bylineTemplate(data);\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// no appendix -> add appendix\n// title in front, no h1 -> add it\n// no title in front, h1 -> read and put into frontMatter\n// footnote -> footnote list\n// break up bib\n// if citation, no bib-list -> add citation-list\n\n// if authors, no byline -> add byline\n\nexport default function(dom, data) {\n const body = dom.body;\n const article = body.querySelector('d-article');\n\n // If we don't have an article tag, something weird is going on—giving up.\n if (!article) {\n console.warn('No d-article tag found; skipping adding optional components!');\n return;\n }\n\n let byline = dom.querySelector('d-byline');\n if (!byline) {\n if (data.authors) {\n byline = dom.createElement('d-byline');\n body.insertBefore(byline, article);\n } else {\n console.warn('No authors found in front matter; please add them before submission!');\n }\n }\n\n let title = dom.querySelector('d-title');\n if (!title) {\n title = dom.createElement('d-title');\n body.insertBefore(title, byline);\n }\n\n let h1 = title.querySelector('h1');\n if (!h1) {\n h1 = dom.createElement('h1');\n h1.textContent = data.title;\n title.insertBefore(h1, title.firstChild);\n }\n\n const hasPassword = typeof data.password !== 'undefined';\n let interstitial = body.querySelector('d-interstitial');\n if (hasPassword && !interstitial) {\n const inBrowser = typeof window !== 'undefined';\n const onLocalhost = inBrowser && window.location.hostname.includes('localhost');\n if (!inBrowser || !onLocalhost) {\n interstitial = dom.createElement('d-interstitial');\n interstitial.password = data.password;\n body.insertBefore(interstitial, body.firstChild);\n }\n } else if (!hasPassword && interstitial) {\n interstitial.parentElement.removeChild(this);\n }\n\n let appendix = dom.querySelector('d-appendix');\n if (!appendix) {\n appendix = dom.createElement('d-appendix');\n dom.body.appendChild(appendix);\n }\n\n let footnoteList = dom.querySelector('d-footnote-list');\n if (!footnoteList) {\n footnoteList = dom.createElement('d-footnote-list');\n appendix.appendChild(footnoteList);\n }\n\n let citationList = dom.querySelector('d-citation-list');\n if (!citationList) {\n citationList = dom.createElement('d-citation-list');\n appendix.appendChild(citationList);\n }\n\n}\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 0; --i) {\n tok = expansion[i];\n if (tok.text === \"#\") {\n if (i === 0) {\n throw new _ParseError2.default(\"Incomplete placeholder at end of macro body\", tok);\n }\n tok = expansion[--i]; // next token on stack\n if (tok.text === \"#\") {\n // ## → #\n expansion.splice(i + 1, 1); // drop first #\n } else if (/^[1-9]$/.test(tok.text)) {\n // expansion.splice(i, 2, arg[0], arg[1], …)\n // to replace placeholder with the indicated argument.\n // TODO: use spread once we move to ES2015\n expansion.splice.apply(expansion, [i, 2].concat(args[tok.text - 1]));\n } else {\n throw new _ParseError2.default(\"Not a valid argument number\", tok);\n }\n }\n }\n }\n this.stack = this.stack.concat(expansion);\n }\n }\n }, {\n key: \"get\",\n value: function get(ignoreSpace) {\n this.discardedWhiteSpace = [];\n var token = this.nextToken();\n if (ignoreSpace) {\n while (token.text === \" \") {\n this.discardedWhiteSpace.push(token);\n token = this.nextToken();\n }\n }\n return token;\n }\n\n /**\n * Undo the effect of the preceding call to the get method.\n * A call to this method MUST be immediately preceded and immediately followed\n * by a call to get. Only used during mode switching, i.e. after one token\n * was got in the old mode but should get got again in a new mode\n * with possibly different whitespace handling.\n */\n\n }, {\n key: \"unget\",\n value: function unget(token) {\n this.stack.push(token);\n while (this.discardedWhiteSpace.length !== 0) {\n this.stack.push(this.discardedWhiteSpace.pop());\n }\n }\n }]);\n return MacroExpander;\n}();\n\nmodule.exports = MacroExpander;\n\n},{\"./Lexer\":26,\"./ParseError\":29,\"./macros\":44,\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5,\"object-assign\":25}],28:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _fontMetrics2 = require(\"./fontMetrics\");\n\nvar _fontMetrics3 = _interopRequireDefault(_fontMetrics2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BASESIZE = 6; /**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\n\nvar sizeStyleMap = [\n// Each element contains [textsize, scriptsize, scriptscriptsize].\n// The size mappings are taken from TeX with \\normalsize=10pt.\n[1, 1, 1], // size1: [5, 5, 5] \\tiny\n[2, 1, 1], // size2: [6, 5, 5]\n[3, 1, 1], // size3: [7, 5, 5] \\scriptsize\n[4, 2, 1], // size4: [8, 6, 5] \\footnotesize\n[5, 2, 1], // size5: [9, 6, 5] \\small\n[6, 3, 1], // size6: [10, 7, 5] \\normalsize\n[7, 4, 2], // size7: [12, 8, 6] \\large\n[8, 6, 3], // size8: [14.4, 10, 7] \\Large\n[9, 7, 6], // size9: [17.28, 12, 10] \\LARGE\n[10, 8, 7], // size10: [20.74, 14.4, 12] \\huge\n[11, 10, 9]];\n\nvar sizeMultipliers = [\n// fontMetrics.js:getFontMetrics also uses size indexes, so if\n// you change size indexes, change that function.\n0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488];\n\nvar sizeAtStyle = function sizeAtStyle(size, style) {\n return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];\n};\n\n/**\n * This is the main options class. It contains the current style, size, color,\n * and font.\n *\n * Options objects should not be modified. To create a new Options with\n * different properties, call a `.having*` method.\n */\n\nvar Options = function () {\n function Options(data) {\n (0, _classCallCheck3.default)(this, Options);\n\n this.style = data.style;\n this.color = data.color;\n this.size = data.size || BASESIZE;\n this.textSize = data.textSize || this.size;\n this.phantom = data.phantom;\n this.font = data.font;\n this.sizeMultiplier = sizeMultipliers[this.size - 1];\n this._fontMetrics = null;\n }\n\n /**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\n\n\n (0, _createClass3.default)(Options, [{\n key: \"extend\",\n value: function extend(extension) {\n var data = {\n style: this.style,\n size: this.size,\n textSize: this.textSize,\n color: this.color,\n phantom: this.phantom,\n font: this.font\n };\n\n for (var key in extension) {\n if (extension.hasOwnProperty(key)) {\n data[key] = extension[key];\n }\n }\n\n return new Options(data);\n }\n\n /**\n * Return an options object with the given style. If `this.style === style`,\n * returns `this`.\n */\n\n }, {\n key: \"havingStyle\",\n value: function havingStyle(style) {\n if (this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: sizeAtStyle(this.textSize, style)\n });\n }\n }\n\n /**\n * Return an options object with a cramped version of the current style. If\n * the current style is cramped, returns `this`.\n */\n\n }, {\n key: \"havingCrampedStyle\",\n value: function havingCrampedStyle() {\n return this.havingStyle(this.style.cramp());\n }\n\n /**\n * Return an options object with the given size and in at least `\\textstyle`.\n * Returns `this` if appropriate.\n */\n\n }, {\n key: \"havingSize\",\n value: function havingSize(size) {\n if (this.size === size && this.textSize === size) {\n return this;\n } else {\n return this.extend({\n style: this.style.text(),\n size: size,\n textSize: size\n });\n }\n }\n\n /**\n * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,\n * changes to at least `\\textstyle`.\n */\n\n }, {\n key: \"havingBaseStyle\",\n value: function havingBaseStyle(style) {\n style = style || this.style.text();\n var wantSize = sizeAtStyle(BASESIZE, style);\n if (this.size === wantSize && this.textSize === BASESIZE && this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: wantSize,\n baseSize: BASESIZE\n });\n }\n }\n\n /**\n * Create a new options object with the given color.\n */\n\n }, {\n key: \"withColor\",\n value: function withColor(color) {\n return this.extend({\n color: color\n });\n }\n\n /**\n * Create a new options object with \"phantom\" set to true.\n */\n\n }, {\n key: \"withPhantom\",\n value: function withPhantom() {\n return this.extend({\n phantom: true\n });\n }\n\n /**\n * Create a new options objects with the give font.\n */\n\n }, {\n key: \"withFont\",\n value: function withFont(font) {\n return this.extend({\n font: font || this.font\n });\n }\n\n /**\n * Return the CSS sizing classes required to switch from enclosing options\n * `oldOptions` to `this`. Returns an array of classes.\n */\n\n }, {\n key: \"sizingClasses\",\n value: function sizingClasses(oldOptions) {\n if (oldOptions.size !== this.size) {\n return [\"sizing\", \"reset-size\" + oldOptions.size, \"size\" + this.size];\n } else {\n return [];\n }\n }\n\n /**\n * Return the CSS sizing classes required to switch to the base size. Like\n * `this.havingSize(BASESIZE).sizingClasses(this)`.\n */\n\n }, {\n key: \"baseSizingClasses\",\n value: function baseSizingClasses() {\n if (this.size !== BASESIZE) {\n return [\"sizing\", \"reset-size\" + this.size, \"size\" + BASESIZE];\n } else {\n return [];\n }\n }\n\n /**\n * Return the font metrics for this size.\n */\n\n }, {\n key: \"fontMetrics\",\n value: function fontMetrics() {\n if (!this._fontMetrics) {\n this._fontMetrics = _fontMetrics3.default.getFontMetrics(this.size);\n }\n return this._fontMetrics;\n }\n\n /**\n * A map of color names to CSS colors.\n * TODO(emily): Remove this when we have real macros\n */\n\n }, {\n key: \"getColor\",\n\n\n /**\n * Gets the CSS color of the current options object, accounting for the\n * `colorMap`.\n */\n value: function getColor() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return Options.colorMap[this.color] || this.color;\n }\n }\n }]);\n return Options;\n}();\n\n/**\n * The base size index.\n */\n\n\nOptions.colorMap = {\n \"katex-blue\": \"#6495ed\",\n \"katex-orange\": \"#ffa500\",\n \"katex-pink\": \"#ff00af\",\n \"katex-red\": \"#df0030\",\n \"katex-green\": \"#28ae7b\",\n \"katex-gray\": \"gray\",\n \"katex-purple\": \"#9d38bd\",\n \"katex-blueA\": \"#ccfaff\",\n \"katex-blueB\": \"#80f6ff\",\n \"katex-blueC\": \"#63d9ea\",\n \"katex-blueD\": \"#11accd\",\n \"katex-blueE\": \"#0c7f99\",\n \"katex-tealA\": \"#94fff5\",\n \"katex-tealB\": \"#26edd5\",\n \"katex-tealC\": \"#01d1c1\",\n \"katex-tealD\": \"#01a995\",\n \"katex-tealE\": \"#208170\",\n \"katex-greenA\": \"#b6ffb0\",\n \"katex-greenB\": \"#8af281\",\n \"katex-greenC\": \"#74cf70\",\n \"katex-greenD\": \"#1fab54\",\n \"katex-greenE\": \"#0d923f\",\n \"katex-goldA\": \"#ffd0a9\",\n \"katex-goldB\": \"#ffbb71\",\n \"katex-goldC\": \"#ff9c39\",\n \"katex-goldD\": \"#e07d10\",\n \"katex-goldE\": \"#a75a05\",\n \"katex-redA\": \"#fca9a9\",\n \"katex-redB\": \"#ff8482\",\n \"katex-redC\": \"#f9685d\",\n \"katex-redD\": \"#e84d39\",\n \"katex-redE\": \"#bc2612\",\n \"katex-maroonA\": \"#ffbde0\",\n \"katex-maroonB\": \"#ff92c6\",\n \"katex-maroonC\": \"#ed5fa6\",\n \"katex-maroonD\": \"#ca337c\",\n \"katex-maroonE\": \"#9e034e\",\n \"katex-purpleA\": \"#ddd7ff\",\n \"katex-purpleB\": \"#c6b9fc\",\n \"katex-purpleC\": \"#aa87ff\",\n \"katex-purpleD\": \"#7854ab\",\n \"katex-purpleE\": \"#543b78\",\n \"katex-mintA\": \"#f5f9e8\",\n \"katex-mintB\": \"#edf2df\",\n \"katex-mintC\": \"#e0e5cc\",\n \"katex-grayA\": \"#f6f7f7\",\n \"katex-grayB\": \"#f0f1f2\",\n \"katex-grayC\": \"#e3e5e6\",\n \"katex-grayD\": \"#d6d8da\",\n \"katex-grayE\": \"#babec2\",\n \"katex-grayF\": \"#888d93\",\n \"katex-grayG\": \"#626569\",\n \"katex-grayH\": \"#3b3e40\",\n \"katex-grayI\": \"#21242c\",\n \"katex-kaBlue\": \"#314453\",\n \"katex-kaGreen\": \"#71B307\"\n};\nOptions.BASESIZE = BASESIZE;\n\nmodule.exports = Options;\n\n},{\"./fontMetrics\":41,\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5}],29:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n *\n * @param {string} message The error message\n * @param {(Token|ParseNode)=} token An object providing position information\n */\nvar ParseError = function ParseError(message, token) {\n (0, _classCallCheck3.default)(this, ParseError);\n\n var error = \"KaTeX parse error: \" + message;\n var start = void 0;\n var end = void 0;\n\n if (token && token.lexer && token.start <= token.end) {\n // If we have the input and a position, make the error a bit fancier\n\n // Get the input\n var input = token.lexer.input;\n\n // Prepend some information\n start = token.start;\n end = token.end;\n if (start === input.length) {\n error += \" at end of input: \";\n } else {\n error += \" at position \" + (start + 1) + \": \";\n }\n\n // Underline token in question using combining underscores\n var underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\");\n\n // Extract some context from the input and add it to the error\n var left = void 0;\n if (start > 15) {\n left = \"…\" + input.slice(start - 15, start);\n } else {\n left = input.slice(0, start);\n }\n var right = void 0;\n if (end + 15 < input.length) {\n right = input.slice(end, end + 15) + \"…\";\n } else {\n right = input.slice(end);\n }\n error += left + underlined + right;\n }\n\n // Some hackery to make ParseError a prototype of Error\n // See http://stackoverflow.com/a/8460753\n var self = new Error(error);\n self.name = \"ParseError\";\n self.__proto__ = ParseError.prototype;\n\n self.position = start;\n return self;\n};\n\n// More hackery\n\n\nParseError.prototype.__proto__ = Error.prototype;\n\nmodule.exports = ParseError;\n\n},{\"babel-runtime/helpers/classCallCheck\":4}],30:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The resulting parse tree nodes of the parse tree.\n *\n * It is possible to provide position information, so that a ParseNode can\n * fulfil a role similar to a Token in error reporting.\n * For details on the corresponding properties see Token constructor.\n * Providing such information can lead to better error reporting.\n *\n * @param {string} type type of node, like e.g. \"ordgroup\"\n * @param {?object} value type-specific representation of the node\n * @param {string} mode parse mode in action for this node,\n * \"math\" or \"text\"\n * @param {Token=} firstToken first token of the input for this node,\n * will omit position information if unset\n * @param {Token=} lastToken last token of the input for this node,\n * will default to firstToken if unset\n */\nvar ParseNode = function ParseNode(type, value, mode, firstToken, lastToken) {\n (0, _classCallCheck3.default)(this, ParseNode);\n\n this.type = type;\n this.value = value;\n this.mode = mode;\n if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) {\n this.lexer = firstToken.lexer;\n this.start = firstToken.start;\n this.end = (lastToken || firstToken).end;\n }\n};\n\nexports.default = ParseNode;\n\n},{\"babel-runtime/helpers/classCallCheck\":4}],31:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _functions = require(\"./functions\");\n\nvar _functions2 = _interopRequireDefault(_functions);\n\nvar _environments = require(\"./environments\");\n\nvar _environments2 = _interopRequireDefault(_environments);\n\nvar _MacroExpander = require(\"./MacroExpander\");\n\nvar _MacroExpander2 = _interopRequireDefault(_MacroExpander);\n\nvar _symbols = require(\"./symbols\");\n\nvar _symbols2 = _interopRequireDefault(_symbols);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _units = require(\"./units\");\n\nvar _units2 = _interopRequireDefault(_units);\n\nvar _unicodeRegexes = require(\"./unicodeRegexes\");\n\nvar _ParseNode = require(\"./ParseNode\");\n\nvar _ParseNode2 = _interopRequireDefault(_ParseNode);\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The earlier functions return ParseNodes.\n * The later functions (which are called deeper in the parse) sometimes return\n * ParseFuncOrArgument, which contain a ParseNode as well as some data about\n * whether the parsed object is a function which is missing some arguments, or a\n * standalone object which can be used as an argument to another function.\n */\n\n/**\n * An initial function (without its arguments), or an argument to a function.\n * The `result` argument should be a ParseNode.\n */\nfunction ParseFuncOrArgument(result, isFunction, token) {\n this.result = result;\n // Is this a function (i.e. is it something defined in functions.js)?\n this.isFunction = isFunction;\n this.token = token;\n} /* eslint no-constant-condition:0 */\n\nvar Parser = function () {\n function Parser(input, settings) {\n (0, _classCallCheck3.default)(this, Parser);\n\n // Create a new macro expander (gullet) and (indirectly via that) also a\n // new lexer (mouth) for this parser (stomach, in the language of TeX)\n this.gullet = new _MacroExpander2.default(input, settings.macros);\n // Use old \\color behavior (same as LaTeX's \\textcolor) if requested.\n // We do this after the macros object has been copied by MacroExpander.\n if (settings.colorIsTextColor) {\n this.gullet.macros[\"\\\\color\"] = \"\\\\textcolor\";\n }\n // Store the settings for use in parsing\n this.settings = settings;\n // Count leftright depth (for \\middle errors)\n this.leftrightDepth = 0;\n }\n\n /**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n *\n * @param {boolean=} consume whether to consume the expected token,\n * defaults to true\n */\n\n\n (0, _createClass3.default)(Parser, [{\n key: \"expect\",\n value: function expect(text, consume) {\n if (this.nextToken.text !== text) {\n throw new _ParseError2.default(\"Expected '\" + text + \"', got '\" + this.nextToken.text + \"'\", this.nextToken);\n }\n if (consume !== false) {\n this.consume();\n }\n }\n\n /**\n * Considers the current look ahead token as consumed,\n * and fetches the one after that as the new look ahead.\n */\n\n }, {\n key: \"consume\",\n value: function consume() {\n this.nextToken = this.gullet.get(this.mode === \"math\");\n }\n }, {\n key: \"switchMode\",\n value: function switchMode(newMode) {\n this.gullet.unget(this.nextToken);\n this.mode = newMode;\n this.consume();\n }\n\n /**\n * Main parsing function, which parses an entire input.\n *\n * @return {?Array.}\n */\n\n }, {\n key: \"parse\",\n value: function parse() {\n // Try to parse the input\n this.mode = \"math\";\n this.consume();\n var parse = this.parseInput();\n return parse;\n }\n\n /**\n * Parses an entire input tree.\n */\n\n }, {\n key: \"parseInput\",\n value: function parseInput() {\n // Parse an expression\n var expression = this.parseExpression(false);\n // If we succeeded, make sure there's an EOF at the end\n this.expect(\"EOF\", false);\n return expression;\n }\n }, {\n key: \"parseExpression\",\n\n\n /**\n * Parses an \"expression\", which is a list of atoms.\n *\n * @param {boolean} breakOnInfix Should the parsing stop when we hit infix\n * nodes? This happens when functions have higher precendence\n * than infix nodes in implicit parses.\n *\n * @param {?string} breakOnTokenText The text of the token that the expression\n * should end with, or `null` if something else should end the\n * expression.\n *\n * @return {ParseNode}\n */\n value: function parseExpression(breakOnInfix, breakOnTokenText) {\n var body = [];\n // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n while (true) {\n var lex = this.nextToken;\n if (Parser.endOfExpression.indexOf(lex.text) !== -1) {\n break;\n }\n if (breakOnTokenText && lex.text === breakOnTokenText) {\n break;\n }\n if (breakOnInfix && _functions2.default[lex.text] && _functions2.default[lex.text].infix) {\n break;\n }\n var atom = this.parseAtom();\n if (!atom) {\n if (!this.settings.throwOnError && lex.text[0] === \"\\\\\") {\n var errorNode = this.handleUnsupportedCmd();\n body.push(errorNode);\n continue;\n }\n\n break;\n }\n body.push(atom);\n }\n return this.handleInfixNodes(body);\n }\n\n /**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n *\n * @returns {Array}\n */\n\n }, {\n key: \"handleInfixNodes\",\n value: function handleInfixNodes(body) {\n var overIndex = -1;\n var funcName = void 0;\n\n for (var i = 0; i < body.length; i++) {\n var node = body[i];\n if (node.type === \"infix\") {\n if (overIndex !== -1) {\n throw new _ParseError2.default(\"only one infix operator per group\", node.value.token);\n }\n overIndex = i;\n funcName = node.value.replaceWith;\n }\n }\n\n if (overIndex !== -1) {\n var numerNode = void 0;\n var denomNode = void 0;\n\n var numerBody = body.slice(0, overIndex);\n var denomBody = body.slice(overIndex + 1);\n\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = new _ParseNode2.default(\"ordgroup\", numerBody, this.mode);\n }\n\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = new _ParseNode2.default(\"ordgroup\", denomBody, this.mode);\n }\n\n var value = this.callFunction(funcName, [numerNode, denomNode], null);\n return [new _ParseNode2.default(value.type, value, this.mode)];\n } else {\n return body;\n }\n }\n\n // The greediness of a superscript or subscript\n\n }, {\n key: \"handleSupSubscript\",\n\n\n /**\n * Handle a subscript or superscript with nice errors.\n */\n value: function handleSupSubscript(name) {\n var symbolToken = this.nextToken;\n var symbol = symbolToken.text;\n this.consume();\n var group = this.parseGroup();\n\n if (!group) {\n if (!this.settings.throwOnError && this.nextToken.text[0] === \"\\\\\") {\n return this.handleUnsupportedCmd();\n } else {\n throw new _ParseError2.default(\"Expected group after '\" + symbol + \"'\", symbolToken);\n }\n } else if (group.isFunction) {\n // ^ and _ have a greediness, so handle interactions with functions'\n // greediness\n var funcGreediness = _functions2.default[group.result].greediness;\n if (funcGreediness > Parser.SUPSUB_GREEDINESS) {\n return this.parseFunction(group);\n } else {\n throw new _ParseError2.default(\"Got function '\" + group.result + \"' with no arguments \" + \"as \" + name, symbolToken);\n }\n } else {\n return group.result;\n }\n }\n\n /**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\n\n }, {\n key: \"handleUnsupportedCmd\",\n value: function handleUnsupportedCmd() {\n var text = this.nextToken.text;\n var textordArray = [];\n\n for (var i = 0; i < text.length; i++) {\n textordArray.push(new _ParseNode2.default(\"textord\", text[i], \"text\"));\n }\n\n var textNode = new _ParseNode2.default(\"text\", {\n body: textordArray,\n type: \"text\"\n }, this.mode);\n\n var colorNode = new _ParseNode2.default(\"color\", {\n color: this.settings.errorColor,\n value: [textNode],\n type: \"color\"\n }, this.mode);\n\n this.consume();\n return colorNode;\n }\n\n /**\n * Parses a group with optional super/subscripts.\n *\n * @return {?ParseNode}\n */\n\n }, {\n key: \"parseAtom\",\n value: function parseAtom() {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n var base = this.parseImplicitGroup();\n\n // In text mode, we don't have superscripts or subscripts\n if (this.mode === \"text\") {\n return base;\n }\n\n // Note that base may be empty (i.e. null) at this point.\n\n var superscript = void 0;\n var subscript = void 0;\n while (true) {\n // Lex the first token\n var lex = this.nextToken;\n\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (!base || base.type !== \"op\") {\n throw new _ParseError2.default(\"Limit controls must follow a math operator\", lex);\n } else {\n var limits = lex.text === \"\\\\limits\";\n base.value.limits = limits;\n base.value.alwaysHandleSupSub = true;\n }\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new _ParseError2.default(\"Double superscript\", lex);\n }\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new _ParseError2.default(\"Double subscript\", lex);\n }\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n if (superscript) {\n throw new _ParseError2.default(\"Double superscript\", lex);\n }\n var prime = new _ParseNode2.default(\"textord\", \"\\\\prime\", this.mode);\n\n // Many primes can be grouped together, so we handle this here\n var primes = [prime];\n this.consume();\n // Keep lexing tokens until we get something that's not a prime\n while (this.nextToken.text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n }\n // If there's a superscript following the primes, combine that\n // superscript in with the primes.\n if (this.nextToken.text === \"^\") {\n primes.push(this.handleSupSubscript(\"superscript\"));\n }\n // Put everything into an ordgroup as the superscript\n superscript = new _ParseNode2.default(\"ordgroup\", primes, this.mode);\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n }\n\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return new _ParseNode2.default(\"supsub\", {\n base: base,\n sup: superscript,\n sub: subscript\n }, this.mode);\n } else {\n // Otherwise return the original body\n return base;\n }\n }\n\n // A list of the size-changing functions, for use in parseImplicitGroup\n\n\n // A list of the style-changing functions, for use in parseImplicitGroup\n\n\n // Old font functions\n\n }, {\n key: \"parseImplicitGroup\",\n\n\n /**\n * Parses an implicit group, which is a group that starts at the end of a\n * specified, and ends right before a higher explicit group ends, or at EOL. It\n * is used for functions that appear to affect the current style, like \\Large or\n * \\textrm, where instead of keeping a style we just pretend that there is an\n * implicit grouping after it until the end of the group. E.g.\n * small text {\\Large large text} small text again\n * It is also used for \\left and \\right to get the correct grouping.\n *\n * @return {?ParseNode}\n */\n value: function parseImplicitGroup() {\n var start = this.parseSymbol();\n\n if (start == null) {\n // If we didn't get anything we handle, fall back to parseFunction\n return this.parseFunction();\n }\n\n var func = start.result;\n\n if (func === \"\\\\left\") {\n // If we see a left:\n // Parse the entire left function (including the delimiter)\n var left = this.parseFunction(start);\n // Parse out the implicit body\n ++this.leftrightDepth;\n var body = this.parseExpression(false);\n --this.leftrightDepth;\n // Check the next token\n this.expect(\"\\\\right\", false);\n var right = this.parseFunction();\n return new _ParseNode2.default(\"leftright\", {\n body: body,\n left: left.value.value,\n right: right.value.value\n }, this.mode);\n } else if (func === \"\\\\begin\") {\n // begin...end is similar to left...right\n var begin = this.parseFunction(start);\n var envName = begin.value.name;\n if (!_environments2.default.hasOwnProperty(envName)) {\n throw new _ParseError2.default(\"No such environment: \" + envName, begin.value.nameGroup);\n }\n // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n var env = _environments2.default[envName];\n var args = this.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n var context = {\n mode: this.mode,\n envName: envName,\n parser: this,\n positions: args.pop()\n };\n var result = env.handler(context, args);\n this.expect(\"\\\\end\", false);\n var endNameToken = this.nextToken;\n var end = this.parseFunction();\n if (end.value.name !== envName) {\n throw new _ParseError2.default(\"Mismatch: \\\\begin{\" + envName + \"} matched \" + \"by \\\\end{\" + end.value.name + \"}\", endNameToken);\n }\n result.position = end.position;\n return result;\n } else if (_utils2.default.contains(Parser.sizeFuncs, func)) {\n // If we see a sizing function, parse out the implicit body\n this.consumeSpaces();\n var _body = this.parseExpression(false);\n return new _ParseNode2.default(\"sizing\", {\n // Figure out what size to use based on the list of functions above\n size: _utils2.default.indexOf(Parser.sizeFuncs, func) + 1,\n value: _body\n }, this.mode);\n } else if (_utils2.default.contains(Parser.styleFuncs, func)) {\n // If we see a styling function, parse out the implicit body\n this.consumeSpaces();\n var _body2 = this.parseExpression(true);\n return new _ParseNode2.default(\"styling\", {\n // Figure out what style to use by pulling out the style from\n // the function name\n style: func.slice(1, func.length - 5),\n value: _body2\n }, this.mode);\n } else if (func in Parser.oldFontFuncs) {\n var style = Parser.oldFontFuncs[func];\n // If we see an old font function, parse out the implicit body\n this.consumeSpaces();\n var _body3 = this.parseExpression(true);\n if (style.slice(0, 4) === 'text') {\n return new _ParseNode2.default(\"text\", {\n style: style,\n body: new _ParseNode2.default(\"ordgroup\", _body3, this.mode)\n }, this.mode);\n } else {\n return new _ParseNode2.default(\"font\", {\n font: style,\n body: new _ParseNode2.default(\"ordgroup\", _body3, this.mode)\n }, this.mode);\n }\n } else if (func === \"\\\\color\") {\n // If we see a styling function, parse out the implicit body\n var color = this.parseColorGroup(false);\n if (!color) {\n throw new _ParseError2.default(\"\\\\color not followed by color\");\n }\n var _body4 = this.parseExpression(true);\n return new _ParseNode2.default(\"color\", {\n type: \"color\",\n color: color.result.value,\n value: _body4\n }, this.mode);\n } else if (func === \"$\") {\n if (this.mode === \"math\") {\n throw new _ParseError2.default(\"$ within math mode\");\n }\n this.consume();\n var outerMode = this.mode;\n this.switchMode(\"math\");\n var _body5 = this.parseExpression(false, \"$\");\n this.expect(\"$\", true);\n this.switchMode(outerMode);\n return new _ParseNode2.default(\"styling\", {\n style: \"text\",\n value: _body5\n }, \"math\");\n } else {\n // Defer to parseFunction if it's not a function we handle\n return this.parseFunction(start);\n }\n }\n\n /**\n * Parses an entire function, including its base and all of its arguments.\n * The base might either have been parsed already, in which case\n * it is provided as an argument, or it's the next group in the input.\n *\n * @param {ParseFuncOrArgument=} baseGroup optional as described above\n * @return {?ParseNode}\n */\n\n }, {\n key: \"parseFunction\",\n value: function parseFunction(baseGroup) {\n if (!baseGroup) {\n baseGroup = this.parseGroup();\n }\n\n if (baseGroup) {\n if (baseGroup.isFunction) {\n var func = baseGroup.result;\n var funcData = _functions2.default[func];\n if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new _ParseError2.default(\"Can't use function '\" + func + \"' in text mode\", baseGroup.token);\n } else if (this.mode === \"math\" && funcData.allowedInMath === false) {\n throw new _ParseError2.default(\"Can't use function '\" + func + \"' in math mode\", baseGroup.token);\n }\n\n var args = this.parseArguments(func, funcData);\n var token = baseGroup.token;\n var result = this.callFunction(func, args, args.pop(), token);\n return new _ParseNode2.default(result.type, result, this.mode);\n } else {\n return baseGroup.result;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Call a function handler with a suitable context and arguments.\n */\n\n }, {\n key: \"callFunction\",\n value: function callFunction(name, args, positions, token) {\n var context = {\n funcName: name,\n parser: this,\n positions: positions,\n token: token\n };\n return _functions2.default[name].handler(context, args);\n }\n\n /**\n * Parses the arguments of a function or environment\n *\n * @param {string} func \"\\name\" or \"\\begin{name}\"\n * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData\n * @return the array of arguments, with the list of positions as last element\n */\n\n }, {\n key: \"parseArguments\",\n value: function parseArguments(func, funcData) {\n var totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n if (totalArgs === 0) {\n return [[this.pos]];\n }\n\n var baseGreediness = funcData.greediness;\n var positions = [this.pos];\n var args = [];\n\n for (var i = 0; i < totalArgs; i++) {\n var nextToken = this.nextToken;\n var argType = funcData.argTypes && funcData.argTypes[i];\n var arg = void 0;\n if (i < funcData.numOptionalArgs) {\n if (argType) {\n arg = this.parseGroupOfType(argType, true);\n } else {\n arg = this.parseGroup(true);\n }\n if (!arg) {\n args.push(null);\n positions.push(this.pos);\n continue;\n }\n } else {\n if (argType) {\n arg = this.parseGroupOfType(argType);\n } else {\n arg = this.parseGroup();\n }\n if (!arg) {\n if (!this.settings.throwOnError && this.nextToken.text[0] === \"\\\\\") {\n arg = new ParseFuncOrArgument(this.handleUnsupportedCmd(this.nextToken.text), false);\n } else {\n throw new _ParseError2.default(\"Expected group after '\" + func + \"'\", nextToken);\n }\n }\n }\n var argNode = void 0;\n if (arg.isFunction) {\n var argGreediness = _functions2.default[arg.result].greediness;\n if (argGreediness > baseGreediness) {\n argNode = this.parseFunction(arg);\n } else {\n throw new _ParseError2.default(\"Got function '\" + arg.result + \"' as \" + \"argument to '\" + func + \"'\", nextToken);\n }\n } else {\n argNode = arg.result;\n }\n args.push(argNode);\n positions.push(this.pos);\n }\n\n args.push(positions);\n\n return args;\n }\n\n /**\n * Parses a group when the mode is changing.\n *\n * @return {?ParseFuncOrArgument}\n */\n\n }, {\n key: \"parseGroupOfType\",\n value: function parseGroupOfType(innerMode, optional) {\n var outerMode = this.mode;\n // Handle `original` argTypes\n if (innerMode === \"original\") {\n innerMode = outerMode;\n }\n\n if (innerMode === \"color\") {\n return this.parseColorGroup(optional);\n }\n if (innerMode === \"size\") {\n return this.parseSizeGroup(optional);\n }\n\n this.switchMode(innerMode);\n if (innerMode === \"text\") {\n // text mode is special because it should ignore the whitespace before\n // it\n this.consumeSpaces();\n }\n // By the time we get here, innerMode is one of \"text\" or \"math\".\n // We switch the mode of the parser, recurse, then restore the old mode.\n var res = this.parseGroup(optional);\n this.switchMode(outerMode);\n return res;\n }\n }, {\n key: \"consumeSpaces\",\n value: function consumeSpaces() {\n while (this.nextToken.text === \" \") {\n this.consume();\n }\n }\n\n /**\n * Parses a group, essentially returning the string formed by the\n * brace-enclosed tokens plus some position information.\n *\n * @param {string} modeName Used to describe the mode in error messages\n * @param {boolean=} optional Whether the group is optional or required\n */\n\n }, {\n key: \"parseStringGroup\",\n value: function parseStringGroup(modeName, optional) {\n if (optional && this.nextToken.text !== \"[\") {\n return null;\n }\n var outerMode = this.mode;\n this.mode = \"text\";\n this.expect(optional ? \"[\" : \"{\");\n var str = \"\";\n var firstToken = this.nextToken;\n var lastToken = firstToken;\n while (this.nextToken.text !== (optional ? \"]\" : \"}\")) {\n if (this.nextToken.text === \"EOF\") {\n throw new _ParseError2.default(\"Unexpected end of input in \" + modeName, firstToken.range(this.nextToken, str));\n }\n lastToken = this.nextToken;\n str += lastToken.text;\n this.consume();\n }\n this.mode = outerMode;\n this.expect(optional ? \"]\" : \"}\");\n return firstToken.range(lastToken, str);\n }\n\n /**\n * Parses a regex-delimited group: the largest sequence of tokens\n * whose concatenated strings match `regex`. Returns the string\n * formed by the tokens plus some position information.\n *\n * @param {RegExp} regex\n * @param {string} modeName Used to describe the mode in error messages\n */\n\n }, {\n key: \"parseRegexGroup\",\n value: function parseRegexGroup(regex, modeName) {\n var outerMode = this.mode;\n this.mode = \"text\";\n var firstToken = this.nextToken;\n var lastToken = firstToken;\n var str = \"\";\n while (this.nextToken.text !== \"EOF\" && regex.test(str + this.nextToken.text)) {\n lastToken = this.nextToken;\n str += lastToken.text;\n this.consume();\n }\n if (str === \"\") {\n throw new _ParseError2.default(\"Invalid \" + modeName + \": '\" + firstToken.text + \"'\", firstToken);\n }\n this.mode = outerMode;\n return firstToken.range(lastToken, str);\n }\n\n /**\n * Parses a color description.\n */\n\n }, {\n key: \"parseColorGroup\",\n value: function parseColorGroup(optional) {\n var res = this.parseStringGroup(\"color\", optional);\n if (!res) {\n return null;\n }\n var match = /^(#[a-z0-9]+|[a-z]+)$/i.exec(res.text);\n if (!match) {\n throw new _ParseError2.default(\"Invalid color: '\" + res.text + \"'\", res);\n }\n return new ParseFuncOrArgument(new _ParseNode2.default(\"color\", match[0], this.mode), false);\n }\n\n /**\n * Parses a size specification, consisting of magnitude and unit.\n */\n\n }, {\n key: \"parseSizeGroup\",\n value: function parseSizeGroup(optional) {\n var res = void 0;\n if (!optional && this.nextToken.text !== \"{\") {\n res = this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/, \"size\");\n } else {\n res = this.parseStringGroup(\"size\", optional);\n }\n if (!res) {\n return null;\n }\n var match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(res.text);\n if (!match) {\n throw new _ParseError2.default(\"Invalid size: '\" + res.text + \"'\", res);\n }\n var data = {\n number: +(match[1] + match[2]), // sign + magnitude, cast to number\n unit: match[3]\n };\n if (!_units2.default.validUnit(data)) {\n throw new _ParseError2.default(\"Invalid unit: '\" + data.unit + \"'\", res);\n }\n return new ParseFuncOrArgument(new _ParseNode2.default(\"size\", data, this.mode), false);\n }\n\n /**\n * If the argument is false or absent, this parses an ordinary group,\n * which is either a single nucleus (like \"x\") or an expression\n * in braces (like \"{x+y}\").\n * If the argument is true, it parses either a bracket-delimited expression\n * (like \"[x+y]\") or returns null to indicate the absence of a\n * bracket-enclosed group.\n *\n * @param {boolean=} optional Whether the group is optional or required\n * @return {?ParseFuncOrArgument}\n */\n\n }, {\n key: \"parseGroup\",\n value: function parseGroup(optional) {\n var firstToken = this.nextToken;\n // Try to parse an open brace\n if (this.nextToken.text === (optional ? \"[\" : \"{\")) {\n // If we get a brace, parse an expression\n this.consume();\n var expression = this.parseExpression(false, optional ? \"]\" : null);\n var lastToken = this.nextToken;\n // Make sure we get a close brace\n this.expect(optional ? \"]\" : \"}\");\n if (this.mode === \"text\") {\n this.formLigatures(expression);\n }\n return new ParseFuncOrArgument(new _ParseNode2.default(\"ordgroup\", expression, this.mode, firstToken, lastToken), false);\n } else {\n // Otherwise, just return a nucleus, or nothing for an optional group\n return optional ? null : this.parseSymbol();\n }\n }\n\n /**\n * Form ligature-like combinations of characters for text mode.\n * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n * The result will simply replace multiple textord nodes with a single\n * character in each value by a single textord node having multiple\n * characters in its value. The representation is still ASCII source.\n *\n * @param {Array.} group the nodes of this group,\n * list will be moified in place\n */\n\n }, {\n key: \"formLigatures\",\n value: function formLigatures(group) {\n var n = group.length - 1;\n for (var i = 0; i < n; ++i) {\n var a = group[i];\n var v = a.value;\n if (v === \"-\" && group[i + 1].value === \"-\") {\n if (i + 1 < n && group[i + 2].value === \"-\") {\n group.splice(i, 3, new _ParseNode2.default(\"textord\", \"---\", \"text\", a, group[i + 2]));\n n -= 2;\n } else {\n group.splice(i, 2, new _ParseNode2.default(\"textord\", \"--\", \"text\", a, group[i + 1]));\n n -= 1;\n }\n }\n if ((v === \"'\" || v === \"`\") && group[i + 1].value === v) {\n group.splice(i, 2, new _ParseNode2.default(\"textord\", v + v, \"text\", a, group[i + 1]));\n n -= 1;\n }\n }\n }\n\n /**\n * Parse a single symbol out of the string. Here, we handle both the functions\n * we have defined, as well as the single character symbols\n *\n * @return {?ParseFuncOrArgument}\n */\n\n }, {\n key: \"parseSymbol\",\n value: function parseSymbol() {\n var nucleus = this.nextToken;\n\n if (_functions2.default[nucleus.text]) {\n this.consume();\n // If there exists a function with this name, we return the function and\n // say that it is a function.\n return new ParseFuncOrArgument(nucleus.text, true, nucleus);\n } else if (_symbols2.default[this.mode][nucleus.text]) {\n this.consume();\n // Otherwise if this is a no-argument function, find the type it\n // corresponds to in the symbols map\n return new ParseFuncOrArgument(new _ParseNode2.default(_symbols2.default[this.mode][nucleus.text].group, nucleus.text, this.mode, nucleus), false, nucleus);\n } else if (this.mode === \"text\" && _unicodeRegexes.cjkRegex.test(nucleus.text)) {\n this.consume();\n return new ParseFuncOrArgument(new _ParseNode2.default(\"textord\", nucleus.text, this.mode, nucleus), false, nucleus);\n } else if (nucleus.text === \"$\") {\n return new ParseFuncOrArgument(nucleus.text, false, nucleus);\n } else {\n return null;\n }\n }\n }]);\n return Parser;\n}();\n\nParser.endOfExpression = [\"}\", \"\\\\end\", \"\\\\right\", \"&\", \"\\\\\\\\\", \"\\\\cr\"];\nParser.SUPSUB_GREEDINESS = 1;\nParser.sizeFuncs = [\"\\\\tiny\", \"\\\\sixptsize\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"];\nParser.styleFuncs = [\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"];\nParser.oldFontFuncs = {\n \"\\\\rm\": \"mathrm\",\n \"\\\\sf\": \"mathsf\",\n \"\\\\tt\": \"mathtt\",\n \"\\\\bf\": \"mathbf\",\n \"\\\\it\": \"mathit\"\n};\n\n\nParser.prototype.ParseNode = _ParseNode2.default;\n\nmodule.exports = Parser;\n\n},{\"./MacroExpander\":27,\"./ParseError\":29,\"./ParseNode\":30,\"./environments\":40,\"./functions\":43,\"./symbols\":48,\"./unicodeRegexes\":49,\"./units\":50,\"./utils\":51,\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5}],32:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset as inline math\n * (false, the default), meaning that the math starts in\n * \\textstyle and is placed in an inline-block); or as display\n * math (true), meaning that the math starts in \\displaystyle\n * and is placed in a block with vertical margin.\n */\nvar Settings = function Settings(options) {\n (0, _classCallCheck3.default)(this, Settings);\n\n // allow null options\n options = options || {};\n this.displayMode = _utils2.default.deflt(options.displayMode, false);\n this.throwOnError = _utils2.default.deflt(options.throwOnError, true);\n this.errorColor = _utils2.default.deflt(options.errorColor, \"#cc0000\");\n this.macros = options.macros || {};\n this.colorIsTextColor = _utils2.default.deflt(options.colorIsTextColor, false);\n}; /**\n * This is a module for storing settings passed into KaTeX. It correctly handles\n * default settings.\n */\n\nmodule.exports = Settings;\n\n},{\"./utils\":51,\"babel-runtime/helpers/classCallCheck\":4}],33:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), and a cramped flag.\n */\nvar Style = function () {\n function Style(id, size, cramped) {\n (0, _classCallCheck3.default)(this, Style);\n\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n }\n\n /**\n * Get the style of a superscript given a base in the current style.\n */\n\n\n (0, _createClass3.default)(Style, [{\n key: \"sup\",\n value: function sup() {\n return styles[_sup[this.id]];\n }\n\n /**\n * Get the style of a subscript given a base in the current style.\n */\n\n }, {\n key: \"sub\",\n value: function sub() {\n return styles[_sub[this.id]];\n }\n\n /**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\n\n }, {\n key: \"fracNum\",\n value: function fracNum() {\n return styles[_fracNum[this.id]];\n }\n\n /**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\n\n }, {\n key: \"fracDen\",\n value: function fracDen() {\n return styles[_fracDen[this.id]];\n }\n\n /**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\n\n }, {\n key: \"cramp\",\n value: function cramp() {\n return styles[_cramp[this.id]];\n }\n\n /**\n * Get a text or display version of this style.\n */\n\n }, {\n key: \"text\",\n value: function text() {\n return styles[_text[this.id]];\n }\n\n /**\n * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle)\n */\n\n }, {\n key: \"isTight\",\n value: function isTight() {\n return this.size >= 2;\n }\n }]);\n return Style;\n}();\n\n// IDs of the different styles\n\n\nvar D = 0;\nvar Dc = 1;\nvar T = 2;\nvar Tc = 3;\nvar S = 4;\nvar Sc = 5;\nvar SS = 6;\nvar SSc = 7;\n\n// Instances of the different styles\nvar styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)];\n\n// Lookup tables for switching from one style to another\nvar _sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nvar _sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar _fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nvar _fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar _cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\nvar _text = [D, Dc, T, Tc, T, Tc, T, Tc];\n\n// We only export some of the styles. Also, we don't export the `Style` class so\n// no more styles can be generated.\nmodule.exports = {\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS]\n};\n\n},{\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5}],34:[function(require,module,exports){\n\"use strict\";\n\nvar _domTree = require(\"./domTree\");\n\nvar _domTree2 = _interopRequireDefault(_domTree);\n\nvar _fontMetrics = require(\"./fontMetrics\");\n\nvar _fontMetrics2 = _interopRequireDefault(_fontMetrics);\n\nvar _symbols = require(\"./symbols\");\n\nvar _symbols2 = _interopRequireDefault(_symbols);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The following have to be loaded from Main-Italic font, using class mainit\n/* eslint no-console:0 */\n/**\n * This module contains general functions that can be used for building\n * different kinds of domTree nodes in a consistent manner.\n */\n\nvar mainitLetters = [\"\\\\imath\", // dotless i\n\"\\\\jmath\", // dotless j\n\"\\\\pounds\"];\n\n/**\n * Looks up the given symbol in fontMetrics, after applying any symbol\n * replacements defined in symbol.js\n */\nvar lookupSymbol = function lookupSymbol(value, fontFamily, mode) {\n // Replace the value with its replaced value from symbol.js\n if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) {\n value = _symbols2.default[mode][value].replace;\n }\n return {\n value: value,\n metrics: _fontMetrics2.default.getCharacterMetrics(value, fontFamily)\n };\n};\n\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n *\n * TODO: make argument order closer to makeSpan\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSymbol = function makeSymbol(value, fontFamily, mode, options, classes) {\n var lookup = lookupSymbol(value, fontFamily, mode);\n var metrics = lookup.metrics;\n value = lookup.value;\n\n var symbolNode = void 0;\n if (metrics) {\n var italic = metrics.italic;\n if (mode === \"text\") {\n italic = 0;\n }\n symbolNode = new _domTree2.default.symbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\"No character metrics for '\" + value + \"' in style '\" + fontFamily + \"'\");\n symbolNode = new _domTree2.default.symbolNode(value, 0, 0, 0, 0, classes);\n }\n\n if (options) {\n symbolNode.maxFontSize = options.sizeMultiplier;\n if (options.style.isTight()) {\n symbolNode.classes.push(\"mtight\");\n }\n if (options.getColor()) {\n symbolNode.style.color = options.getColor();\n }\n }\n\n return symbolNode;\n};\n\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function mathsym(value, mode, options, classes) {\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text\n if (value === \"\\\\\" || _symbols2.default[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes);\n } else {\n return makeSymbol(value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n }\n};\n\n/**\n * Makes a symbol in the default font for mathords and textords.\n */\nvar mathDefault = function mathDefault(value, mode, options, classes, type) {\n if (type === \"mathord\") {\n var fontLookup = mathit(value, mode, options, classes);\n return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass]));\n } else if (type === \"textord\") {\n var font = _symbols2.default[mode][value] && _symbols2.default[mode][value].font;\n if (font === \"ams\") {\n return makeSymbol(value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n } else {\n // if (font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes.concat([\"mathrm\"]));\n }\n } else {\n throw new Error(\"unexpected type: \" + type + \" in mathDefault\");\n }\n};\n\n/**\n * Determines which of the two font names (Main-Italic and Math-Italic) and\n * corresponding style tags (mainit or mathit) to use for font \"mathit\",\n * depending on the symbol. Use this function instead of fontMap for font\n * \"mathit\".\n */\nvar mathit = function mathit(value, mode, options, classes) {\n if (/[0-9]/.test(value.charAt(0)) ||\n // glyphs for \\imath and \\jmath do not exist in Math-Italic so we\n // need to use Main-Italic instead\n _utils2.default.contains(mainitLetters, value)) {\n return {\n fontName: \"Main-Italic\",\n fontClass: \"mainit\"\n };\n } else {\n return {\n fontName: \"Math-Italic\",\n fontClass: \"mathit\"\n };\n }\n};\n\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function makeOrd(group, options, type) {\n var mode = group.mode;\n var value = group.value;\n\n var classes = [\"mord\"];\n\n var font = options.font;\n if (font) {\n var fontLookup = void 0;\n if (font === \"mathit\" || _utils2.default.contains(mainitLetters, value)) {\n fontLookup = mathit(value, mode, options, classes);\n } else {\n fontLookup = fontMap[font];\n }\n if (lookupSymbol(value, fontLookup.fontName, mode).metrics) {\n return makeSymbol(value, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass || font]));\n } else {\n return mathDefault(value, mode, options, classes, type);\n }\n } else {\n return mathDefault(value, mode, options, classes, type);\n }\n};\n\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function sizeElementFromChildren(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n\n if (elem.children) {\n for (var i = 0; i < elem.children.length; i++) {\n if (elem.children[i].height > height) {\n height = elem.children[i].height;\n }\n if (elem.children[i].depth > depth) {\n depth = elem.children[i].depth;\n }\n if (elem.children[i].maxFontSize > maxFontSize) {\n maxFontSize = elem.children[i].maxFontSize;\n }\n }\n }\n\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n\n/**\n * Makes a span with the given list of classes, list of children, and options.\n *\n * TODO: Ensure that `options` is always provided (currently some call sites\n * don't pass it).\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSpan = function makeSpan(classes, children, options) {\n var span = new _domTree2.default.span(classes, children, options);\n\n sizeElementFromChildren(span);\n\n return span;\n};\n\n/**\n * Prepends the given children to the given span, updating height, depth, and\n * maxFontSize.\n */\nvar prependChildren = function prependChildren(span, children) {\n span.children = children.concat(span.children);\n\n sizeElementFromChildren(span);\n};\n\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function makeFragment(children) {\n var fragment = new _domTree2.default.documentFragment(children);\n\n sizeElementFromChildren(fragment);\n\n return fragment;\n};\n\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * Arguments:\n * - children: A list of child or kern nodes to be stacked on top of each other\n * (i.e. the first element will be at the bottom, and the last at\n * the top). Element nodes are specified as\n * {type: \"elem\", elem: node}\n * while kern nodes are specified as\n * {type: \"kern\", size: size}\n * - positionType: The method by which the vlist should be positioned. Valid\n * values are:\n * - \"individualShift\": The children list only contains elem\n * nodes, and each node contains an extra\n * \"shift\" value of how much it should be\n * shifted (note that shifting is always\n * moving downwards). positionData is\n * ignored.\n * - \"top\": The positionData specifies the topmost point of\n * the vlist (note this is expected to be a height,\n * so positive values move up)\n * - \"bottom\": The positionData specifies the bottommost point\n * of the vlist (note this is expected to be a\n * depth, so positive values move down\n * - \"shift\": The vlist will be positioned such that its\n * baseline is positionData away from the baseline\n * of the first child. Positive values move\n * downwards.\n * - \"firstBaseline\": The vlist will be positioned such that\n * its baseline is aligned with the\n * baseline of the first child.\n * positionData is ignored. (this is\n * equivalent to \"shift\" with\n * positionData=0)\n * - positionData: Data used in different ways depending on positionType\n * - options: An Options object\n *\n */\nvar makeVList = function makeVList(children, positionType, positionData, options) {\n var depth = void 0;\n var currPos = void 0;\n var i = void 0;\n if (positionType === \"individualShift\") {\n var oldChildren = children;\n children = [oldChildren[0]];\n\n // Add in kerns to the list of children to get each element to be\n // shifted to the correct specified shift\n depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n currPos = depth;\n for (i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth;\n var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth);\n\n currPos = currPos + diff;\n\n children.push({ type: \"kern\", size: size });\n children.push(oldChildren[i]);\n }\n } else if (positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = positionData;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n bottom -= children[i].size;\n } else {\n bottom -= children[i].elem.height + children[i].elem.depth;\n }\n }\n depth = bottom;\n } else if (positionType === \"bottom\") {\n depth = -positionData;\n } else if (positionType === \"shift\") {\n depth = -children[0].elem.depth - positionData;\n } else if (positionType === \"firstBaseline\") {\n depth = -children[0].elem.depth;\n } else {\n depth = 0;\n }\n\n // Create a strut that is taller than any list item. The strut is added to\n // each item, where it will determine the item's baseline. Since it has\n // `overflow:hidden`, the strut's top edge will sit on the item's line box's\n // top edge and the strut's bottom edge will sit on the item's baseline,\n // with no additional line-height spacing. This allows the item baseline to\n // be positioned precisely without worrying about font ascent and\n // line-height.\n var pstrutSize = 0;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"elem\") {\n var child = children[i].elem;\n pstrutSize = Math.max(pstrutSize, child.maxFontSize, child.height);\n }\n }\n pstrutSize += 2;\n var pstrut = makeSpan([\"pstrut\"], []);\n pstrut.style.height = pstrutSize + \"em\";\n\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n var minPos = depth;\n var maxPos = depth;\n currPos = depth;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n currPos += children[i].size;\n } else {\n var _child = children[i].elem;\n\n var childWrap = makeSpan([], [pstrut, _child]);\n childWrap.style.top = -pstrutSize - currPos - _child.depth + \"em\";\n if (children[i].marginLeft) {\n childWrap.style.marginLeft = children[i].marginLeft;\n }\n if (children[i].marginRight) {\n childWrap.style.marginRight = children[i].marginRight;\n }\n\n realChildren.push(childWrap);\n currPos += _child.height + _child.depth;\n }\n minPos = Math.min(minPos, currPos);\n maxPos = Math.max(maxPos, currPos);\n }\n\n // The vlist contents go in a table-cell with `vertical-align:bottom`.\n // This cell's bottom edge will determine the containing table's baseline\n // without overly expanding the containing line-box.\n var vlist = makeSpan([\"vlist\"], realChildren);\n vlist.style.height = maxPos + \"em\";\n\n // A second row is used if necessary to represent the vlist's depth.\n var rows = void 0;\n if (minPos < 0) {\n var depthStrut = makeSpan([\"vlist\"], []);\n depthStrut.style.height = -minPos + \"em\";\n\n // Safari wants the first row to have inline content; otherwise it\n // puts the bottom of the *second* row on the baseline.\n var topStrut = makeSpan([\"vlist-s\"], [new _domTree2.default.symbolNode(\"\\u200B\")]);\n\n rows = [makeSpan([\"vlist-r\"], [vlist, topStrut]), makeSpan([\"vlist-r\"], [depthStrut])];\n } else {\n rows = [makeSpan([\"vlist-r\"], [vlist])];\n }\n\n var vtable = makeSpan([\"vlist-t\"], rows);\n if (rows.length === 2) {\n vtable.classes.push(\"vlist-t2\");\n }\n vtable.height = maxPos;\n vtable.depth = -minPos;\n return vtable;\n};\n\n// A map of spacing functions to their attributes, like size and corresponding\n// CSS class\nvar spacingFunctions = {\n \"\\\\qquad\": {\n size: \"2em\",\n className: \"qquad\"\n },\n \"\\\\quad\": {\n size: \"1em\",\n className: \"quad\"\n },\n \"\\\\enspace\": {\n size: \"0.5em\",\n className: \"enspace\"\n },\n \"\\\\;\": {\n size: \"0.277778em\",\n className: \"thickspace\"\n },\n \"\\\\:\": {\n size: \"0.22222em\",\n className: \"mediumspace\"\n },\n \"\\\\,\": {\n size: \"0.16667em\",\n className: \"thinspace\"\n },\n \"\\\\!\": {\n size: \"-0.16667em\",\n className: \"negativethinspace\"\n }\n};\n\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\"\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\"\n },\n \"textit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n\n // \"mathit\" is missing because it requires the use of two fonts: Main-Italic\n // and Math-Italic. This is handled by a special case in makeOrd which ends\n // up calling mathit.\n\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\"\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\"\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\"\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\"\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\"\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\"\n }\n};\n\nmodule.exports = {\n fontMap: fontMap,\n makeSymbol: makeSymbol,\n mathsym: mathsym,\n makeSpan: makeSpan,\n makeFragment: makeFragment,\n makeVList: makeVList,\n makeOrd: makeOrd,\n prependChildren: prependChildren,\n spacingFunctions: spacingFunctions\n};\n\n},{\"./domTree\":39,\"./fontMetrics\":41,\"./symbols\":48,\"./utils\":51}],35:[function(require,module,exports){\n\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nvar _Style = require(\"./Style\");\n\nvar _Style2 = _interopRequireDefault(_Style);\n\nvar _buildCommon = require(\"./buildCommon\");\n\nvar _buildCommon2 = _interopRequireDefault(_buildCommon);\n\nvar _delimiter = require(\"./delimiter\");\n\nvar _delimiter2 = _interopRequireDefault(_delimiter);\n\nvar _domTree = require(\"./domTree\");\n\nvar _domTree2 = _interopRequireDefault(_domTree);\n\nvar _units = require(\"./units\");\n\nvar _units2 = _interopRequireDefault(_units);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _stretchy = require(\"./stretchy\");\n\nvar _stretchy2 = _interopRequireDefault(_stretchy);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint no-console:0 */\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupTypes functions are\n * called, to produce a final HTML tree.\n */\n\nvar isSpace = function isSpace(node) {\n return node instanceof _domTree2.default.span && node.classes[0] === \"mspace\";\n};\n\n// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)\n// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,\n// and the text before Rule 19.\nvar isBin = function isBin(node) {\n return node && node.classes[0] === \"mbin\";\n};\n\nvar isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) {\n // TODO: This code assumes that a node's math class is the first element\n // of its `classes` array. A later cleanup should ensure this, for\n // instance by changing the signature of `makeSpan`.\n if (node) {\n return _utils2.default.contains([\"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"], node.classes[0]);\n } else {\n return isRealGroup;\n }\n};\n\nvar isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) {\n if (node) {\n return _utils2.default.contains([\"mrel\", \"mclose\", \"mpunct\"], node.classes[0]);\n } else {\n return isRealGroup;\n }\n};\n\n/**\n * Splice out any spaces from `children` starting at position `i`, and return\n * the spliced-out array. Returns null if `children[i]` does not exist or is not\n * a space.\n */\nvar spliceSpaces = function spliceSpaces(children, i) {\n var j = i;\n while (j < children.length && isSpace(children[j])) {\n j++;\n }\n if (j === i) {\n return null;\n } else {\n return children.splice(i, j - i);\n }\n};\n\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. documentFragments are flattened into their contents, so the\n * returned list contains no fragments. `isRealGroup` is true if `expression`\n * is a real group (no atoms will be added on either side), as opposed to\n * a partial group (e.g. one created by \\color).\n */\nvar buildExpression = function buildExpression(expression, options, isRealGroup) {\n // Parse expressions into `groups`.\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n var output = buildGroup(group, options);\n if (output instanceof _domTree2.default.documentFragment) {\n Array.prototype.push.apply(groups, output.children);\n } else {\n groups.push(output);\n }\n }\n // At this point `groups` consists entirely of `symbolNode`s and `span`s.\n\n // Explicit spaces (e.g., \\;, \\,) should be ignored with respect to atom\n // spacing (e.g., \"add thick space between mord and mrel\"). Since CSS\n // adjacency rules implement atom spacing, spaces should be invisible to\n // CSS. So we splice them out of `groups` and into the atoms themselves.\n for (var _i = 0; _i < groups.length; _i++) {\n var spaces = spliceSpaces(groups, _i);\n if (spaces) {\n // Splicing of spaces may have removed all remaining groups.\n if (_i < groups.length) {\n // If there is a following group, move space within it.\n if (groups[_i] instanceof _domTree2.default.symbolNode) {\n groups[_i] = (0, _buildCommon.makeSpan)([].concat(groups[_i].classes), [groups[_i]]);\n }\n _buildCommon2.default.prependChildren(groups[_i], spaces);\n } else {\n // Otherwise, put any spaces back at the end of the groups.\n Array.prototype.push.apply(groups, spaces);\n break;\n }\n }\n }\n\n // Binary operators change to ordinary symbols in some contexts.\n for (var _i2 = 0; _i2 < groups.length; _i2++) {\n if (isBin(groups[_i2]) && (isBinLeftCanceller(groups[_i2 - 1], isRealGroup) || isBinRightCanceller(groups[_i2 + 1], isRealGroup))) {\n groups[_i2].classes[0] = \"mord\";\n }\n }\n\n // Process \\\\not commands within the group.\n // TODO(kevinb): Handle multiple \\\\not commands in a row.\n // TODO(kevinb): Handle \\\\not{abc} correctly. The \\\\not should appear over\n // the 'a' instead of the 'c'.\n for (var _i3 = 0; _i3 < groups.length; _i3++) {\n if (groups[_i3].value === \"\\u0338\" && _i3 + 1 < groups.length) {\n var children = groups.slice(_i3, _i3 + 2);\n\n children[0].classes = [\"mainrm\"];\n // \\u0338 is a combining glyph so we could reorder the children so\n // that it comes after the other glyph. This works correctly on\n // most browsers except for Safari. Instead we absolutely position\n // the glyph and set its right side to match that of the other\n // glyph which is visually equivalent.\n children[0].style.position = \"absolute\";\n children[0].style.right = \"0\";\n\n // Copy the classes from the second glyph to the new container.\n // This is so it behaves the same as though there was no \\\\not.\n var classes = groups[_i3 + 1].classes;\n var container = (0, _buildCommon.makeSpan)(classes, children);\n\n // LaTeX adds a space between ords separated by a \\\\not.\n if (classes.indexOf(\"mord\") !== -1) {\n // \\glue(\\thickmuskip) 2.77771 plus 2.77771\n container.style.paddingLeft = \"0.277771em\";\n }\n\n // Ensure that the \\u0338 is positioned relative to the container.\n container.style.position = \"relative\";\n groups.splice(_i3, 2, container);\n }\n }\n\n return groups;\n};\n\n// Return math atom class (mclass) of a domTree.\nvar getTypeOfDomTree = function getTypeOfDomTree(node) {\n if (node instanceof _domTree2.default.documentFragment) {\n if (node.children.length) {\n return getTypeOfDomTree(node.children[node.children.length - 1]);\n }\n } else {\n if (_utils2.default.contains([\"mord\", \"mop\", \"mbin\", \"mrel\", \"mopen\", \"mclose\", \"mpunct\", \"minner\"], node.classes[0])) {\n return node.classes[0];\n }\n }\n return null;\n};\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar shouldHandleSupSub = function shouldHandleSupSub(group, options) {\n if (!group.value.base) {\n return false;\n } else {\n var base = group.value.base;\n if (base.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n return base.value.limits && (options.style.size === _Style2.default.DISPLAY.size || base.value.alwaysHandleSupSub);\n } else if (base.type === \"accent\") {\n return isCharacterBox(base.value.base);\n } else if (base.type === \"horizBrace\") {\n var isSup = group.value.sub ? false : true;\n return isSup === base.value.isOver;\n } else {\n return null;\n }\n }\n};\n\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = function getBaseElem(group) {\n if (!group) {\n return false;\n } else if (group.type === \"ordgroup\") {\n if (group.value.length === 1) {\n return getBaseElem(group.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.value.value.length === 1) {\n return getBaseElem(group.value.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"font\") {\n return getBaseElem(group.value.body);\n } else {\n return group;\n }\n};\n\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = function isCharacterBox(group) {\n var baseElem = getBaseElem(group);\n\n // These are all they types of groups which hold single characters\n return baseElem.type === \"mathord\" || baseElem.type === \"textord\" || baseElem.type === \"bin\" || baseElem.type === \"rel\" || baseElem.type === \"inner\" || baseElem.type === \"open\" || baseElem.type === \"close\" || baseElem.type === \"punct\";\n};\n\nvar makeNullDelimiter = function makeNullDelimiter(options, classes) {\n var moreClasses = [\"nulldelimiter\"].concat(options.baseSizingClasses());\n return (0, _buildCommon.makeSpan)(classes.concat(moreClasses));\n};\n\n/**\n * This is a map of group types to the function used to handle that type.\n * Simpler types come at the beginning, while complicated types come afterwards.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function (group, options) {\n return _buildCommon2.default.makeOrd(group, options, \"mathord\");\n};\n\ngroupTypes.textord = function (group, options) {\n return _buildCommon2.default.makeOrd(group, options, \"textord\");\n};\n\ngroupTypes.bin = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"mbin\"]);\n};\n\ngroupTypes.rel = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"mrel\"]);\n};\n\ngroupTypes.open = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"mopen\"]);\n};\n\ngroupTypes.close = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"mclose\"]);\n};\n\ngroupTypes.inner = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"minner\"]);\n};\n\ngroupTypes.punct = function (group, options) {\n return _buildCommon2.default.mathsym(group.value, group.mode, options, [\"mpunct\"]);\n};\n\ngroupTypes.ordgroup = function (group, options) {\n return (0, _buildCommon.makeSpan)([\"mord\"], buildExpression(group.value, options, true), options);\n};\n\ngroupTypes.text = function (group, options) {\n var newOptions = options.withFont(group.value.style);\n var inner = buildExpression(group.value.body, newOptions, true);\n for (var i = 0; i < inner.length - 1; i++) {\n if (inner[i].tryCombine(inner[i + 1])) {\n inner.splice(i + 1, 1);\n i--;\n }\n }\n return (0, _buildCommon.makeSpan)([\"mord\", \"text\"], inner, newOptions);\n};\n\ngroupTypes.color = function (group, options) {\n var elements = buildExpression(group.value.value, options.withColor(group.value.color), false);\n\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return new _buildCommon2.default.makeFragment(elements);\n};\n\ngroupTypes.supsub = function (group, options) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n if (shouldHandleSupSub(group, options)) {\n return groupTypes[group.value.base.type](group, options);\n }\n\n var base = buildGroup(group.value.base, options);\n var supm = void 0;\n var subm = void 0;\n\n var metrics = options.fontMetrics();\n var newOptions = void 0;\n\n // Rule 18a\n var supShift = 0;\n var subShift = 0;\n\n if (group.value.sup) {\n newOptions = options.havingStyle(options.style.sup());\n supm = buildGroup(group.value.sup, newOptions, options);\n if (!isCharacterBox(group.value.base)) {\n supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n\n if (group.value.sub) {\n newOptions = options.havingStyle(options.style.sub());\n subm = buildGroup(group.value.sub, newOptions, options);\n if (!isCharacterBox(group.value.base)) {\n subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n\n // Rule 18c\n var minSupShift = void 0;\n if (options.style === _Style2.default.DISPLAY) {\n minSupShift = metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = metrics.sup3;\n } else {\n minSupShift = metrics.sup2;\n }\n\n // scriptspace is a font-size-independent size, so scale it\n // appropriately\n var multiplier = options.sizeMultiplier;\n var scriptspace = 0.5 / metrics.ptPerEm / multiplier + \"em\";\n\n var supsub = void 0;\n if (!group.value.sup) {\n // Rule 18b\n subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);\n\n var vlistElem = [{ type: \"elem\", elem: subm, marginRight: scriptspace }];\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n if (base instanceof _domTree2.default.symbolNode) {\n vlistElem[0].marginLeft = -base.italic + \"em\";\n }\n\n supsub = _buildCommon2.default.makeVList(vlistElem, \"shift\", subShift, options);\n } else if (!group.value.sub) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n\n supsub = _buildCommon2.default.makeVList([{ type: \"elem\", elem: supm, marginRight: scriptspace }], \"shift\", -supShift, options);\n } else {\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n subShift = Math.max(subShift, metrics.sub2);\n\n var ruleWidth = metrics.defaultRuleThickness;\n\n // Rule 18e\n if (supShift - supm.depth - (subm.height - subShift) < 4 * ruleWidth) {\n subShift = 4 * ruleWidth - (supShift - supm.depth) + subm.height;\n var psi = 0.8 * metrics.xHeight - (supShift - supm.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n\n var _vlistElem = [{ type: \"elem\", elem: subm, shift: subShift, marginRight: scriptspace }, { type: \"elem\", elem: supm, shift: -supShift, marginRight: scriptspace }];\n // See comment above about subscripts not being shifted\n if (base instanceof _domTree2.default.symbolNode) {\n _vlistElem[0].marginLeft = -base.italic + \"em\";\n }\n\n supsub = _buildCommon2.default.makeVList(_vlistElem, \"individualShift\", null, options);\n }\n\n // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align\n var mclass = getTypeOfDomTree(base) || \"mord\";\n return (0, _buildCommon.makeSpan)([mclass], [base, (0, _buildCommon.makeSpan)([\"msupsub\"], [supsub])], options);\n};\n\ngroupTypes.genfrac = function (group, options) {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n // Figure out what style this fraction should be in based on the\n // function used\n var style = options.style;\n if (group.value.size === \"display\") {\n style = _Style2.default.DISPLAY;\n } else if (group.value.size === \"text\") {\n style = _Style2.default.TEXT;\n }\n\n var nstyle = style.fracNum();\n var dstyle = style.fracDen();\n var newOptions = void 0;\n\n newOptions = options.havingStyle(nstyle);\n var numerm = buildGroup(group.value.numer, newOptions, options);\n\n newOptions = options.havingStyle(dstyle);\n var denomm = buildGroup(group.value.denom, newOptions, options);\n\n var rule = void 0;\n var ruleWidth = void 0;\n var ruleSpacing = void 0;\n if (group.value.hasBarLine) {\n rule = makeLineSpan(\"frac-line\", options);\n ruleWidth = rule.height;\n ruleSpacing = rule.height;\n } else {\n rule = null;\n ruleWidth = 0;\n ruleSpacing = options.fontMetrics().defaultRuleThickness;\n }\n\n // Rule 15b\n var numShift = void 0;\n var clearance = void 0;\n var denomShift = void 0;\n if (style.size === _Style2.default.DISPLAY.size) {\n numShift = options.fontMetrics().num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleSpacing;\n } else {\n clearance = 7 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = options.fontMetrics().num2;\n clearance = ruleSpacing;\n } else {\n numShift = options.fontMetrics().num3;\n clearance = 3 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom2;\n }\n\n var frac = void 0;\n if (ruleWidth === 0) {\n // Rule 15c\n var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);\n if (candidateClearance < clearance) {\n numShift += 0.5 * (clearance - candidateClearance);\n denomShift += 0.5 * (clearance - candidateClearance);\n }\n\n frac = _buildCommon2.default.makeVList([{ type: \"elem\", elem: denomm, shift: denomShift }, { type: \"elem\", elem: numerm, shift: -numShift }], \"individualShift\", null, options);\n } else {\n // Rule 15d\n var axisHeight = options.fontMetrics().axisHeight;\n\n if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {\n numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));\n }\n\n if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {\n denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));\n }\n\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n\n frac = _buildCommon2.default.makeVList([{ type: \"elem\", elem: denomm, shift: denomShift }, { type: \"elem\", elem: rule, shift: midShift }, { type: \"elem\", elem: numerm, shift: -numShift }], \"individualShift\", null, options);\n }\n\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n newOptions = options.havingStyle(style);\n frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;\n frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier;\n\n // Rule 15e\n var delimSize = void 0;\n if (style.size === _Style2.default.DISPLAY.size) {\n delimSize = options.fontMetrics().delim1;\n } else {\n delimSize = options.fontMetrics().delim2;\n }\n\n var leftDelim = void 0;\n var rightDelim = void 0;\n if (group.value.leftDelim == null) {\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n leftDelim = _delimiter2.default.customSizedDelim(group.value.leftDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mopen\"]);\n }\n if (group.value.rightDelim == null) {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = _delimiter2.default.customSizedDelim(group.value.rightDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mclose\"]);\n }\n\n return (0, _buildCommon.makeSpan)([\"mord\"].concat(newOptions.sizingClasses(options)), [leftDelim, (0, _buildCommon.makeSpan)([\"mfrac\"], [frac]), rightDelim], options);\n};\n\ngroupTypes.array = function (group, options) {\n var r = void 0;\n var c = void 0;\n var nr = group.value.body.length;\n var nc = 0;\n var body = new Array(nr);\n\n // Horizontal spacing\n var pt = 1 / options.fontMetrics().ptPerEm;\n var arraycolsep = 5 * pt; // \\arraycolsep in article.cls\n\n // Vertical spacing\n var baselineskip = 12 * pt; // see size10.clo\n // Default \\jot from ltmath.dtx\n // TODO(edemaine): allow overriding \\jot via \\setlength (#687)\n var jot = 3 * pt;\n // Default \\arraystretch from lttab.dtx\n // TODO(gagern): may get redefined once we have user-defined macros\n var arraystretch = _utils2.default.deflt(group.value.arraystretch, 1);\n var arrayskip = arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n\n var totalHeight = 0;\n for (r = 0; r < group.value.body.length; ++r) {\n var inrow = group.value.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n\n var gap = 0;\n if (group.value.rowGaps[r]) {\n gap = _units2.default.calculateSize(group.value.rowGaps[r].value, options);\n if (gap > 0) {\n // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n // In AMS multiline environments such as aligned and gathered, rows\n // correspond to lines that have additional \\jot added to the\n // \\baselineskip via \\openup.\n if (group.value.addJot) {\n depth += jot;\n }\n\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n }\n\n var offset = totalHeight / 2 + options.fontMetrics().axisHeight;\n var colDescriptions = group.value.cols || [];\n var cols = [];\n var colSep = void 0;\n var colDescrNum = void 0;\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) {\n\n var colDescr = colDescriptions[colDescrNum] || {};\n\n var firstSeparator = true;\n while (colDescr.type === \"separator\") {\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = (0, _buildCommon.makeSpan)([\"arraycolsep\"], []);\n colSep.style.width = options.fontMetrics().doubleRuleSep + \"em\";\n cols.push(colSep);\n }\n\n if (colDescr.separator === \"|\") {\n var separator = (0, _buildCommon.makeSpan)([\"vertical-separator\"], []);\n separator.style.height = totalHeight + \"em\";\n separator.style.verticalAlign = -(totalHeight - offset) + \"em\";\n\n cols.push(separator);\n } else {\n throw new _ParseError2.default(\"Invalid separator type: \" + colDescr.separator);\n }\n\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum] || {};\n firstSeparator = false;\n }\n\n if (c >= nc) {\n continue;\n }\n\n var sepwidth = void 0;\n if (c > 0 || group.value.hskipBeforeAndAfter) {\n sepwidth = _utils2.default.deflt(colDescr.pregap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = (0, _buildCommon.makeSpan)([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n\n var col = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var shift = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n col.push({ type: \"elem\", elem: elem, shift: shift });\n }\n\n col = _buildCommon2.default.makeVList(col, \"individualShift\", null, options);\n col = (0, _buildCommon.makeSpan)([\"col-align-\" + (colDescr.align || \"c\")], [col]);\n cols.push(col);\n\n if (c < nc - 1 || group.value.hskipBeforeAndAfter) {\n sepwidth = _utils2.default.deflt(colDescr.postgap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = (0, _buildCommon.makeSpan)([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n }\n body = (0, _buildCommon.makeSpan)([\"mtable\"], cols);\n return (0, _buildCommon.makeSpan)([\"mord\"], [body], options);\n};\n\ngroupTypes.spacing = function (group, options) {\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" || group.value === \" \" || group.value === \"~\") {\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n if (group.mode === \"text\") {\n return _buildCommon2.default.makeOrd(group, options, \"textord\");\n } else {\n return (0, _buildCommon.makeSpan)([\"mspace\"], [_buildCommon2.default.mathsym(group.value, group.mode, options)], options);\n }\n } else {\n // Other kinds of spaces are of arbitrary width. We use CSS to\n // generate these.\n return (0, _buildCommon.makeSpan)([\"mspace\", _buildCommon2.default.spacingFunctions[group.value].className], [], options);\n }\n};\n\ngroupTypes.llap = function (group, options) {\n var inner = (0, _buildCommon.makeSpan)([\"inner\"], [buildGroup(group.value.body, options)]);\n var fix = (0, _buildCommon.makeSpan)([\"fix\"], []);\n return (0, _buildCommon.makeSpan)([\"mord\", \"llap\"], [inner, fix], options);\n};\n\ngroupTypes.rlap = function (group, options) {\n var inner = (0, _buildCommon.makeSpan)([\"inner\"], [buildGroup(group.value.body, options)]);\n var fix = (0, _buildCommon.makeSpan)([\"fix\"], []);\n return (0, _buildCommon.makeSpan)([\"mord\", \"rlap\"], [inner, fix], options);\n};\n\ngroupTypes.op = function (group, options) {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup = void 0;\n var subGroup = void 0;\n var hasLimits = false;\n if (group.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = group.value.sup;\n subGroup = group.value.sub;\n group = group.value.base;\n hasLimits = true;\n }\n\n var style = options.style;\n\n // Most operators have a large successor symbol, but these don't.\n var noSuccessor = [\"\\\\smallint\"];\n\n var large = false;\n if (style.size === _Style2.default.DISPLAY.size && group.value.symbol && !_utils2.default.contains(noSuccessor, group.value.body)) {\n\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n\n var base = void 0;\n if (group.value.symbol) {\n // If this is a symbol, create the symbol.\n var fontName = large ? \"Size2-Regular\" : \"Size1-Regular\";\n base = _buildCommon2.default.makeSymbol(group.value.body, fontName, \"math\", options, [\"mop\", \"op-symbol\", large ? \"large-op\" : \"small-op\"]);\n } else if (group.value.value) {\n // If this is a list, compose that list.\n var inner = buildExpression(group.value.value, options, true);\n if (inner.length === 1 && inner[0] instanceof _domTree2.default.symbolNode) {\n base = inner[0];\n base.classes[0] = \"mop\"; // replace old mclass\n } else {\n base = (0, _buildCommon.makeSpan)([\"mop\"], inner, options);\n }\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup\n var output = [];\n for (var i = 1; i < group.value.body.length; i++) {\n output.push(_buildCommon2.default.mathsym(group.value.body[i], group.mode));\n }\n base = (0, _buildCommon.makeSpan)([\"mop\"], output, options);\n }\n\n // If content of op is a single symbol, shift it vertically.\n var baseShift = 0;\n var slant = 0;\n if (base instanceof _domTree2.default.symbolNode) {\n // Shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight;\n\n // The slant of the symbol is just its italic correction.\n slant = base.italic;\n }\n\n if (hasLimits) {\n // IE 8 clips \\int if it is in a display: inline-block. We wrap it\n // in a new span so it is an inline, and works.\n base = (0, _buildCommon.makeSpan)([], [base]);\n\n var supm = void 0;\n var supKern = void 0;\n var subm = void 0;\n var subKern = void 0;\n var newOptions = void 0;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n newOptions = options.havingStyle(style.sup());\n supm = buildGroup(supGroup, newOptions, options);\n\n supKern = Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - supm.depth);\n }\n\n if (subGroup) {\n newOptions = options.havingStyle(style.sub());\n subm = buildGroup(subGroup, newOptions, options);\n\n subKern = Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - subm.height);\n }\n\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup = void 0;\n var top = void 0;\n var bottom = void 0;\n if (!supGroup) {\n top = base.height - baseShift;\n\n // Shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup = _buildCommon2.default.makeVList([{ type: \"kern\", size: options.fontMetrics().bigOpSpacing5 }, { type: \"elem\", elem: subm, marginLeft: -slant + \"em\" }, { type: \"kern\", size: subKern }, { type: \"elem\", elem: base }], \"top\", top, options);\n } else if (!subGroup) {\n bottom = base.depth + baseShift;\n\n finalGroup = _buildCommon2.default.makeVList([{ type: \"elem\", elem: base }, { type: \"kern\", size: supKern }, { type: \"elem\", elem: supm, marginLeft: slant + \"em\" }, { type: \"kern\", size: options.fontMetrics().bigOpSpacing5 }], \"bottom\", bottom, options);\n } else if (!supGroup && !subGroup) {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n } else {\n bottom = options.fontMetrics().bigOpSpacing5 + subm.height + subm.depth + subKern + base.depth + baseShift;\n\n finalGroup = _buildCommon2.default.makeVList([{ type: \"kern\", size: options.fontMetrics().bigOpSpacing5 }, { type: \"elem\", elem: subm, marginLeft: -slant + \"em\" }, { type: \"kern\", size: subKern }, { type: \"elem\", elem: base }, { type: \"kern\", size: supKern }, { type: \"elem\", elem: supm, marginLeft: slant + \"em\" }, { type: \"kern\", size: options.fontMetrics().bigOpSpacing5 }], \"bottom\", bottom, options);\n }\n\n return (0, _buildCommon.makeSpan)([\"mop\", \"op-limits\"], [finalGroup], options);\n } else {\n if (baseShift) {\n base.style.position = \"relative\";\n base.style.top = baseShift + \"em\";\n }\n\n return base;\n }\n};\n\ngroupTypes.mod = function (group, options) {\n var inner = [];\n\n if (group.value.modType === \"bmod\") {\n // “\\nonscript\\mskip-\\medmuskip\\mkern5mu”\n if (!options.style.isTight()) {\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"negativemediumspace\"], [], options));\n }\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"thickspace\"], [], options));\n } else if (options.style.size === _Style2.default.DISPLAY.size) {\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"quad\"], [], options));\n } else if (group.value.modType === \"mod\") {\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"twelvemuspace\"], [], options));\n } else {\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"eightmuspace\"], [], options));\n }\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(_buildCommon2.default.mathsym(\"(\", group.mode));\n }\n\n if (group.value.modType !== \"pod\") {\n var modInner = [_buildCommon2.default.mathsym(\"m\", group.mode), _buildCommon2.default.mathsym(\"o\", group.mode), _buildCommon2.default.mathsym(\"d\", group.mode)];\n if (group.value.modType === \"bmod\") {\n inner.push((0, _buildCommon.makeSpan)([\"mbin\"], modInner, options));\n // “\\mkern5mu\\nonscript\\mskip-\\medmuskip”\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"thickspace\"], [], options));\n if (!options.style.isTight()) {\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"negativemediumspace\"], [], options));\n }\n } else {\n Array.prototype.push.apply(inner, modInner);\n inner.push((0, _buildCommon.makeSpan)([\"mspace\", \"sixmuspace\"], [], options));\n }\n }\n\n if (group.value.value) {\n Array.prototype.push.apply(inner, buildExpression(group.value.value, options, false));\n }\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(_buildCommon2.default.mathsym(\")\", group.mode));\n }\n\n return _buildCommon2.default.makeFragment(inner);\n};\n\ngroupTypes.katex = function (group, options) {\n // The KaTeX logo. The offsets for the K and a were chosen to look\n // good, but the offsets for the T, E, and X were taken from the\n // definition of \\TeX in TeX (see TeXbook pg. 356)\n var k = (0, _buildCommon.makeSpan)([\"k\"], [_buildCommon2.default.mathsym(\"K\", group.mode)], options);\n var a = (0, _buildCommon.makeSpan)([\"a\"], [_buildCommon2.default.mathsym(\"A\", group.mode)], options);\n\n a.height = (a.height + 0.2) * 0.75;\n a.depth = (a.height - 0.2) * 0.75;\n\n var t = (0, _buildCommon.makeSpan)([\"t\"], [_buildCommon2.default.mathsym(\"T\", group.mode)], options);\n var e = (0, _buildCommon.makeSpan)([\"e\"], [_buildCommon2.default.mathsym(\"E\", group.mode)], options);\n\n e.height = e.height - 0.2155;\n e.depth = e.depth + 0.2155;\n\n var x = (0, _buildCommon.makeSpan)([\"x\"], [_buildCommon2.default.mathsym(\"X\", group.mode)], options);\n\n return (0, _buildCommon.makeSpan)([\"mord\", \"katex-logo\"], [k, a, t, e, x], options);\n};\n\nvar makeLineSpan = function makeLineSpan(className, options, thickness) {\n var line = (0, _buildCommon.makeSpan)([className], [], options);\n line.height = thickness || options.fontMetrics().defaultRuleThickness;\n line.style.borderBottomWidth = line.height + \"em\";\n line.maxFontSize = 1.0;\n return line;\n};\n\ngroupTypes.overline = function (group, options) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup(group.value.body, options.havingCrampedStyle());\n\n // Create the line above the body\n var line = makeLineSpan(\"overline-line\", options);\n\n // Generate the vlist, with the appropriate kerns\n var vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: innerGroup }, { type: \"kern\", size: 3 * line.height }, { type: \"elem\", elem: line }, { type: \"kern\", size: line.height }], \"firstBaseline\", null, options);\n\n return (0, _buildCommon.makeSpan)([\"mord\", \"overline\"], [vlist], options);\n};\n\ngroupTypes.underline = function (group, options) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n // Build the inner group.\n var innerGroup = buildGroup(group.value.body, options);\n\n // Create the line above the body\n var line = makeLineSpan(\"underline-line\", options);\n\n // Generate the vlist, with the appropriate kerns\n var vlist = _buildCommon2.default.makeVList([{ type: \"kern\", size: line.height }, { type: \"elem\", elem: line }, { type: \"kern\", size: 3 * line.height }, { type: \"elem\", elem: innerGroup }], \"top\", innerGroup.height, options);\n\n return (0, _buildCommon.makeSpan)([\"mord\", \"underline\"], [vlist], options);\n};\n\ngroupTypes.sqrt = function (group, options) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup(group.value.body, options.havingCrampedStyle());\n\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n if (inner instanceof _domTree2.default.documentFragment) {\n inner = (0, _buildCommon.makeSpan)([], [inner], options);\n }\n\n // Calculate the minimum size for the \\surd delimiter\n var metrics = options.fontMetrics();\n var theta = metrics.defaultRuleThickness;\n\n var phi = theta;\n if (options.style.id < _Style2.default.TEXT.id) {\n phi = options.fontMetrics().xHeight;\n }\n\n // Calculate the clearance between the body and line\n var lineClearance = theta + phi / 4;\n\n var minDelimiterHeight = (inner.height + inner.depth + lineClearance + theta) * options.sizeMultiplier;\n\n // Create a sqrt SVG of the required minimum size\n var img = _delimiter2.default.customSizedDelim(\"\\\\surd\", minDelimiterHeight, false, options, group.mode);\n\n // Calculate the actual line width.\n // This actually should depend on the chosen font -- e.g. \\boldmath\n // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and\n // have thicker rules.\n var ruleWidth = options.fontMetrics().sqrtRuleThickness * img.sizeMultiplier;\n\n var delimDepth = img.height - ruleWidth;\n\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n\n // Shift the sqrt image\n var imgShift = img.height - inner.height - lineClearance - ruleWidth;\n\n // We add a special case here, because even when `inner` is empty, we\n // still get a line. So, we use a simple heuristic to decide if we\n // should omit the body entirely. (note this doesn't work for something\n // like `\\sqrt{\\rlap{x}}`, but if someone is doing that they deserve for\n // it not to work.\n var body = void 0;\n if (inner.height === 0 && inner.depth === 0) {\n body = (0, _buildCommon.makeSpan)();\n } else {\n inner.style.paddingLeft = img.surdWidth + \"em\";\n\n // Overlay the image and the argument.\n body = _buildCommon2.default.makeVList([{ type: \"elem\", elem: inner }, { type: \"kern\", size: -(inner.height + imgShift) }, { type: \"elem\", elem: img }, { type: \"kern\", size: ruleWidth }], \"firstBaseline\", null, options);\n body.children[0].children[0].classes.push(\"svg-align\");\n }\n\n if (!group.value.index) {\n return (0, _buildCommon.makeSpan)([\"mord\", \"sqrt\"], [body], options);\n } else {\n // Handle the optional root index\n\n // The index is always in scriptscript style\n var newOptions = options.havingStyle(_Style2.default.SCRIPTSCRIPT);\n var rootm = buildGroup(group.value.index, newOptions, options);\n\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (body.height - body.depth);\n\n // Build a VList with the superscript shifted up correctly\n var rootVList = _buildCommon2.default.makeVList([{ type: \"elem\", elem: rootm }], \"shift\", -toShift, options);\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = (0, _buildCommon.makeSpan)([\"root\"], [rootVList]);\n\n return (0, _buildCommon.makeSpan)([\"mord\", \"sqrt\"], [rootVListWrap, body], options);\n }\n};\n\nfunction sizingGroup(value, options, baseOptions) {\n var inner = buildExpression(value, options, false);\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n\n // Add size-resetting classes to the inner list and set maxFontSize\n // manually. Handle nested size changes.\n for (var i = 0; i < inner.length; i++) {\n var pos = _utils2.default.indexOf(inner[i].classes, \"sizing\");\n if (pos < 0) {\n Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));\n } else if (inner[i].classes[pos + 1] === \"reset-size\" + options.size) {\n // This is a nested size change: e.g., inner[i] is the \"b\" in\n // `\\Huge a \\small b`. Override the old size (the `reset-` class)\n // but not the new size.\n inner[i].classes[pos + 1] = \"reset-size\" + baseOptions.size;\n }\n\n inner[i].height *= multiplier;\n inner[i].depth *= multiplier;\n }\n\n return _buildCommon2.default.makeFragment(inner);\n}\n\ngroupTypes.sizing = function (group, options) {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var newOptions = options.havingSize(group.value.size);\n return sizingGroup(group.value.value, newOptions, options);\n};\n\ngroupTypes.styling = function (group, options) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n\n // Figure out what style we're changing to.\n var styleMap = {\n \"display\": _Style2.default.DISPLAY,\n \"text\": _Style2.default.TEXT,\n \"script\": _Style2.default.SCRIPT,\n \"scriptscript\": _Style2.default.SCRIPTSCRIPT\n };\n\n var newStyle = styleMap[group.value.style];\n var newOptions = options.havingStyle(newStyle);\n return sizingGroup(group.value.value, newOptions, options);\n};\n\ngroupTypes.font = function (group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function (group, options) {\n var delim = group.value.value;\n\n if (delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return (0, _buildCommon.makeSpan)([group.value.mclass]);\n }\n\n // Use delimiter.sizedDelim to generate the delimiter.\n return _delimiter2.default.sizedDelim(delim, group.value.size, options, group.mode, [group.value.mclass]);\n};\n\ngroupTypes.leftright = function (group, options) {\n // Build the inner expression\n var inner = buildExpression(group.value.body, options, true);\n\n var innerHeight = 0;\n var innerDepth = 0;\n var hadMiddle = false;\n\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n if (inner[i].isMiddle) {\n hadMiddle = true;\n } else {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n }\n\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= options.sizeMultiplier;\n innerDepth *= options.sizeMultiplier;\n\n var leftDelim = void 0;\n if (group.value.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = _delimiter2.default.leftRightDelim(group.value.left, innerHeight, innerDepth, options, group.mode, [\"mopen\"]);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n\n // Handle middle delimiters\n if (hadMiddle) {\n for (var _i4 = 1; _i4 < inner.length; _i4++) {\n var middleDelim = inner[_i4];\n if (middleDelim.isMiddle) {\n // Apply the options that were active when \\middle was called\n inner[_i4] = _delimiter2.default.leftRightDelim(middleDelim.isMiddle.value, innerHeight, innerDepth, middleDelim.isMiddle.options, group.mode, []);\n // Add back spaces shifted into the delimiter\n var spaces = spliceSpaces(middleDelim.children, 0);\n if (spaces) {\n _buildCommon2.default.prependChildren(inner[_i4], spaces);\n }\n }\n }\n }\n\n var rightDelim = void 0;\n // Same for the right delimiter\n if (group.value.right === \".\") {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = _delimiter2.default.leftRightDelim(group.value.right, innerHeight, innerDepth, options, group.mode, [\"mclose\"]);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n\n return (0, _buildCommon.makeSpan)([\"minner\"], inner, options);\n};\n\ngroupTypes.middle = function (group, options) {\n var middleDelim = void 0;\n if (group.value.value === \".\") {\n middleDelim = makeNullDelimiter(options, []);\n } else {\n middleDelim = _delimiter2.default.sizedDelim(group.value.value, 1, options, group.mode, []);\n middleDelim.isMiddle = { value: group.value.value, options: options };\n }\n return middleDelim;\n};\n\ngroupTypes.rule = function (group, options) {\n // Make an empty span for the rule\n var rule = (0, _buildCommon.makeSpan)([\"mord\", \"rule\"], [], options);\n\n // Calculate the shift, width, and height of the rule, and account for units\n var shift = 0;\n if (group.value.shift) {\n shift = _units2.default.calculateSize(group.value.shift, options);\n }\n\n var width = _units2.default.calculateSize(group.value.width, options);\n var height = _units2.default.calculateSize(group.value.height, options);\n\n // Style the rule to the right size\n rule.style.borderRightWidth = width + \"em\";\n rule.style.borderTopWidth = height + \"em\";\n rule.style.bottom = shift + \"em\";\n\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n // Font size is the number large enough that the browser will\n // reserve at least `absHeight` space above the baseline.\n // The 1.125 factor was empirically determined\n rule.maxFontSize = height * 1.125 * options.sizeMultiplier;\n\n return rule;\n};\n\ngroupTypes.kern = function (group, options) {\n // Make an empty span for the rule\n var rule = (0, _buildCommon.makeSpan)([\"mord\", \"rule\"], [], options);\n\n if (group.value.dimension) {\n var dimension = _units2.default.calculateSize(group.value.dimension, options);\n rule.style.marginLeft = dimension + \"em\";\n }\n\n return rule;\n};\n\ngroupTypes.accent = function (group, options) {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base = group.value.base;\n\n var supsubGroup = void 0;\n if (group.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n\n // The supsub group is the group that was passed in\n var supsub = group;\n // The real accent group is the base of the supsub group\n group = supsub.value.base;\n // The character box is the base of the accent group\n base = group.value.base;\n // Stick the character box into the base of the supsub group\n supsub.value.base = base;\n\n // Rerender the supsub group with its new base, and store that\n // result.\n supsubGroup = buildGroup(supsub, options);\n }\n\n // Build the base group\n var body = buildGroup(base, options.havingCrampedStyle());\n\n // Does the accent need to shift for the skew of a character?\n var mustShift = group.value.isShifty && isCharacterBox(base);\n\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew = 0;\n if (mustShift) {\n // If the base is a character box, then we want the skew of the\n // innermost character. To do that, we find the innermost character:\n var baseChar = getBaseElem(base);\n // Then, we render its group to get the symbol inside it\n var baseGroup = buildGroup(baseChar, options.havingCrampedStyle());\n // Finally, we pull the skew off of the symbol.\n skew = baseGroup.skew;\n // Note that we now throw away baseGroup, because the layers we\n // removed with getBaseElem might contain things like \\color which\n // we can't get rid of.\n // TODO(emily): Find a better way to get the skew\n }\n\n // calculate the amount of space between the body and the accent\n var clearance = Math.min(body.height, options.fontMetrics().xHeight);\n\n // Build the accent\n var accentBody = void 0;\n if (!group.value.isStretchy) {\n var accent = _buildCommon2.default.makeSymbol(group.value.label, \"Main-Regular\", group.mode, options);\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n\n // The \\vec character that the fonts use is a combining character, and\n // thus shows up much too far to the left. To account for this, we add a\n // specific class which shifts the accent over to where we want it.\n // TODO(emily): Fix this in a better way, like by changing the font\n // Similarly, text accent \\H is a combining character and\n // requires a different adjustment.\n var accentClass = null;\n if (group.value.label === \"\\\\vec\") {\n accentClass = \"accent-vec\";\n } else if (group.value.label === '\\\\H') {\n accentClass = \"accent-hungarian\";\n }\n\n accentBody = (0, _buildCommon.makeSpan)([], [accent]);\n accentBody = (0, _buildCommon.makeSpan)([\"accent-body\", accentClass], [accentBody]);\n\n // Shift the accent over by the skew. Note we shift by twice the skew\n // because we are centering the accent, so by adding 2*skew to the left,\n // we shift it to the right by 1*skew.\n accentBody.style.marginLeft = 2 * skew + \"em\";\n\n accentBody = _buildCommon2.default.makeVList([{ type: \"elem\", elem: body }, { type: \"kern\", size: -clearance }, { type: \"elem\", elem: accentBody }], \"firstBaseline\", null, options);\n } else {\n accentBody = _stretchy2.default.svgSpan(group, options);\n\n accentBody = _buildCommon2.default.makeVList([{ type: \"elem\", elem: body }, { type: \"elem\", elem: accentBody }], \"firstBaseline\", null, options);\n\n var styleSpan = accentBody.children[0].children[0].children[1];\n styleSpan.classes.push(\"svg-align\"); // text-align: left;\n if (skew > 0) {\n // Shorten the accent and nudge it to the right.\n styleSpan.style.width = \"calc(100% - \" + 2 * skew + \"em)\";\n styleSpan.style.marginLeft = 2 * skew + \"em\";\n }\n }\n\n var accentWrap = (0, _buildCommon.makeSpan)([\"mord\", \"accent\"], [accentBody], options);\n\n if (supsubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supsubGroup.children[0] = accentWrap;\n\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);\n\n // Accents should always be ords, even when their innards are not.\n supsubGroup.classes[0] = \"mord\";\n\n return supsubGroup;\n } else {\n return accentWrap;\n }\n};\n\ngroupTypes.horizBrace = function (group, options) {\n var style = options.style;\n\n var hasSupSub = group.type === \"supsub\";\n var supSubGroup = void 0;\n var newOptions = void 0;\n if (hasSupSub) {\n // Ref: LaTeX source2e: }}}}\\limits}\n // i.e. LaTeX treats the brace similar to an op and passes it\n // with \\limits, so we need to assign supsub style.\n if (group.value.sup) {\n newOptions = options.havingStyle(style.sup());\n supSubGroup = buildGroup(group.value.sup, newOptions, options);\n } else {\n newOptions = options.havingStyle(style.sub());\n supSubGroup = buildGroup(group.value.sub, newOptions, options);\n }\n group = group.value.base;\n }\n\n // Build the base group\n var body = buildGroup(group.value.base, options.havingBaseStyle(_Style2.default.DISPLAY));\n\n // Create the stretchy element\n var braceBody = _stretchy2.default.svgSpan(group, options);\n\n // Generate the vlist, with the appropriate kerns ┏━━━━━━━━┓\n // This first vlist contains the subject matter and the brace: equation\n var vlist = void 0;\n if (group.value.isOver) {\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: body }, { type: \"kern\", size: 0.1 }, { type: \"elem\", elem: braceBody }], \"firstBaseline\", null, options);\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n } else {\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: braceBody }, { type: \"kern\", size: 0.1 }, { type: \"elem\", elem: body }], \"bottom\", body.depth + 0.1 + braceBody.height, options);\n vlist.children[0].children[0].children[0].classes.push(\"svg-align\");\n }\n\n if (hasSupSub) {\n // In order to write the supsub, wrap the first vlist in another vlist:\n // They can't all go in the same vlist, because the note might be wider\n // than the equation. We want the equation to control the brace width.\n\n // note long note long note\n // ┏━━━━━━━━┓ or ┏━━━┓ not ┏━━━━━━━━━┓\n // equation eqn eqn\n\n var vSpan = (0, _buildCommon.makeSpan)([\"mord\", group.value.isOver ? \"mover\" : \"munder\"], [vlist], options);\n\n if (group.value.isOver) {\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: vSpan }, { type: \"kern\", size: 0.2 }, { type: \"elem\", elem: supSubGroup }], \"firstBaseline\", null, options);\n } else {\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: supSubGroup }, { type: \"kern\", size: 0.2 }, { type: \"elem\", elem: vSpan }], \"bottom\", vSpan.depth + 0.2 + supSubGroup.height, options);\n }\n }\n\n return (0, _buildCommon.makeSpan)([\"mord\", group.value.isOver ? \"mover\" : \"munder\"], [vlist], options);\n};\n\ngroupTypes.accentUnder = function (group, options) {\n // Treat under accents much like underlines.\n var innerGroup = buildGroup(group.value.body, options);\n\n var accentBody = _stretchy2.default.svgSpan(group, options);\n var kern = /tilde/.test(group.value.label) ? 0.12 : 0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: accentBody }, { type: \"kern\", size: kern }, { type: \"elem\", elem: innerGroup }], \"bottom\", accentBody.height + kern, options);\n\n vlist.children[0].children[0].children[0].classes.push(\"svg-align\");\n\n return (0, _buildCommon.makeSpan)([\"mord\", \"accentunder\"], [vlist], options);\n};\n\ngroupTypes.enclose = function (group, options) {\n // \\cancel, \\bcancel, \\xcancel, \\sout, \\fbox\n var inner = buildGroup(group.value.body, options);\n\n var label = group.value.label.substr(1);\n var scale = options.sizeMultiplier;\n var img = void 0;\n var pad = 0;\n var imgShift = 0;\n\n if (label === \"sout\") {\n img = (0, _buildCommon.makeSpan)([\"stretchy\", \"sout\"]);\n img.height = options.fontMetrics().defaultRuleThickness / scale;\n imgShift = -0.5 * options.fontMetrics().xHeight;\n } else {\n // Add horizontal padding\n inner.classes.push(label === \"fbox\" ? \"boxpad\" : \"cancel-pad\");\n\n // Add vertical padding\n var isCharBox = isCharacterBox(group.value.body);\n // ref: LaTeX source2e: \\fboxsep = 3pt; \\fboxrule = .4pt\n // ref: cancel package: \\advance\\totalheight2\\p@ % \"+2\"\n pad = label === \"fbox\" ? 0.34 : isCharBox ? 0.2 : 0;\n imgShift = inner.depth + pad;\n\n img = _stretchy2.default.encloseSpan(inner, label, pad, options);\n }\n\n var vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: inner, shift: 0 }, { type: \"elem\", elem: img, shift: imgShift }], \"individualShift\", null, options);\n\n if (label !== \"fbox\") {\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n }\n\n if (/cancel/.test(label)) {\n // cancel does not create horiz space for its line extension.\n // That is, not when adjacent to a mord.\n return (0, _buildCommon.makeSpan)([\"mord\", \"cancel-lap\"], [vlist], options);\n } else {\n return (0, _buildCommon.makeSpan)([\"mord\"], [vlist], options);\n }\n};\n\ngroupTypes.xArrow = function (group, options) {\n var style = options.style;\n\n // Build the argument groups in the appropriate style.\n // Ref: amsmath.dtx: \\hbox{$\\scriptstyle\\mkern#3mu{#6}\\mkern#4mu$}%\n\n var newOptions = options.havingStyle(style.sup());\n var upperGroup = buildGroup(group.value.body, newOptions, options);\n upperGroup.classes.push(\"x-arrow-pad\");\n\n var lowerGroup = void 0;\n if (group.value.below) {\n // Build the lower group\n newOptions = options.havingStyle(style.sub());\n lowerGroup = buildGroup(group.value.below, newOptions, options);\n lowerGroup.classes.push(\"x-arrow-pad\");\n }\n\n var arrowBody = _stretchy2.default.svgSpan(group, options);\n\n var arrowShift = -options.fontMetrics().axisHeight + arrowBody.depth;\n var upperShift = -options.fontMetrics().axisHeight - arrowBody.height - 0.111; // 2 mu. Ref: amsmath.dtx: #7\\if0#2\\else\\mkern#2mu\\fi\n\n // Generate the vlist\n var vlist = void 0;\n if (group.value.below) {\n var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + arrowBody.height + 0.111;\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: upperGroup, shift: upperShift }, { type: \"elem\", elem: arrowBody, shift: arrowShift }, { type: \"elem\", elem: lowerGroup, shift: lowerShift }], \"individualShift\", null, options);\n } else {\n vlist = _buildCommon2.default.makeVList([{ type: \"elem\", elem: upperGroup, shift: upperShift }, { type: \"elem\", elem: arrowBody, shift: arrowShift }], \"individualShift\", null, options);\n }\n\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n\n return (0, _buildCommon.makeSpan)([\"mrel\", \"x-arrow\"], [vlist], options);\n};\n\ngroupTypes.phantom = function (group, options) {\n var elements = buildExpression(group.value.value, options.withPhantom(), false);\n\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return new _buildCommon2.default.makeFragment(elements);\n};\n\ngroupTypes.mclass = function (group, options) {\n var elements = buildExpression(group.value.value, options, true);\n\n return (0, _buildCommon.makeSpan)([group.value.mclass], elements, options);\n};\n\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup = function buildGroup(group, options, baseOptions) {\n if (!group) {\n return (0, _buildCommon.makeSpan)();\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n var groupNode = groupTypes[group.type](group, options);\n\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (baseOptions && options.size !== baseOptions.size) {\n groupNode = (0, _buildCommon.makeSpan)(options.sizingClasses(baseOptions), [groupNode], options);\n\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n return groupNode;\n } else {\n throw new _ParseError2.default(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nvar buildHTML = function buildHTML(tree, options) {\n // buildExpression is destructive, so we need to make a clone\n // of the incoming tree so that it isn't accidentally changed\n tree = JSON.parse((0, _stringify2.default)(tree));\n\n // Build the expression contained in the tree\n var expression = buildExpression(tree, options, true);\n var body = (0, _buildCommon.makeSpan)([\"base\"], expression, options);\n\n // Add struts, which ensure that the top of the HTML element falls at the\n // height of the expression, and the bottom of the HTML element falls at the\n // depth of the expression.\n var topStrut = (0, _buildCommon.makeSpan)([\"strut\"]);\n var bottomStrut = (0, _buildCommon.makeSpan)([\"strut\", \"bottom\"]);\n\n topStrut.style.height = body.height + \"em\";\n bottomStrut.style.height = body.height + body.depth + \"em\";\n // We'd like to use `vertical-align: top` but in IE 9 this lowers the\n // baseline of the box to the bottom of this strut (instead staying in the\n // normal place) so we use an absolute value for vertical-align instead\n bottomStrut.style.verticalAlign = -body.depth + \"em\";\n\n // Wrap the struts and body together\n var htmlNode = (0, _buildCommon.makeSpan)([\"katex-html\"], [topStrut, bottomStrut, body]);\n\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n\n return htmlNode;\n};\n\nmodule.exports = buildHTML;\n\n},{\"./ParseError\":29,\"./Style\":33,\"./buildCommon\":34,\"./delimiter\":38,\"./domTree\":39,\"./stretchy\":47,\"./units\":50,\"./utils\":51,\"babel-runtime/core-js/json/stringify\":2}],36:[function(require,module,exports){\n\"use strict\";\n\nvar _buildCommon = require(\"./buildCommon\");\n\nvar _buildCommon2 = _interopRequireDefault(_buildCommon);\n\nvar _fontMetrics = require(\"./fontMetrics\");\n\nvar _fontMetrics2 = _interopRequireDefault(_fontMetrics);\n\nvar _mathMLTree = require(\"./mathMLTree\");\n\nvar _mathMLTree2 = _interopRequireDefault(_mathMLTree);\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nvar _Style = require(\"./Style\");\n\nvar _Style2 = _interopRequireDefault(_Style);\n\nvar _symbols = require(\"./symbols\");\n\nvar _symbols2 = _interopRequireDefault(_symbols);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _stretchy = require(\"./stretchy\");\n\nvar _stretchy2 = _interopRequireDefault(_stretchy);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\n/**\n * This file converts a parse tree into a cooresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\nvar makeText = function makeText(text, mode) {\n if (_symbols2.default[mode][text] && _symbols2.default[mode][text].replace) {\n text = _symbols2.default[mode][text].replace;\n }\n\n return new _mathMLTree2.default.TextNode(text);\n};\n\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function getVariant(group, options) {\n var font = options.font;\n if (!font) {\n return null;\n }\n\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n }\n\n var value = group.value;\n if (_utils2.default.contains([\"\\\\imath\", \"\\\\jmath\"], value)) {\n return null;\n }\n\n if (_symbols2.default[mode][value] && _symbols2.default[mode][value].replace) {\n value = _symbols2.default[mode][value].replace;\n }\n\n var fontName = _buildCommon.fontMap[font].fontName;\n if (_fontMetrics2.default.getCharacterMetrics(value, fontName)) {\n return _buildCommon.fontMap[options.font].variant;\n }\n\n return null;\n};\n\n/**\n * Functions for handling the different types of groups found in the parse\n * tree. Each function should take a parse group and return a MathML node.\n */\nvar groupTypes = {};\n\nvar defaultVariant = {\n \"mi\": \"italic\",\n \"mn\": \"normal\",\n \"mtext\": \"normal\"\n};\n\ngroupTypes.mathord = function (group, options) {\n var node = new _mathMLTree2.default.MathNode(\"mi\", [makeText(group.value, group.mode)]);\n\n var variant = getVariant(group, options) || \"italic\";\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n};\n\ngroupTypes.textord = function (group, options) {\n var text = makeText(group.value, group.mode);\n\n var variant = getVariant(group, options) || \"normal\";\n\n var node = void 0;\n if (group.mode === 'text') {\n node = new _mathMLTree2.default.MathNode(\"mtext\", [text]);\n } else if (/[0-9]/.test(group.value)) {\n // TODO(kevinb) merge adjacent nodes\n // do it as a post processing step\n node = new _mathMLTree2.default.MathNode(\"mn\", [text]);\n } else if (group.value === \"\\\\prime\") {\n node = new _mathMLTree2.default.MathNode(\"mo\", [text]);\n } else {\n node = new _mathMLTree2.default.MathNode(\"mi\", [text]);\n }\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n};\n\ngroupTypes.bin = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.rel = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.open = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.close = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.inner = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.punct = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value, group.mode)]);\n\n node.setAttribute(\"separator\", \"true\");\n\n return node;\n};\n\ngroupTypes.ordgroup = function (group, options) {\n var inner = buildExpression(group.value, options);\n\n var node = new _mathMLTree2.default.MathNode(\"mrow\", inner);\n\n return node;\n};\n\ngroupTypes.text = function (group, options) {\n var body = group.value.body;\n\n // Convert each element of the body into MathML, and combine consecutive\n // outputs into a single tag. In this way, we don't\n // nest non-text items (e.g., $nested-math$) within an .\n var inner = [];\n var currentText = null;\n for (var i = 0; i < body.length; i++) {\n var _group = buildGroup(body[i], options);\n if (_group.type === 'mtext' && currentText != null) {\n Array.prototype.push.apply(currentText.children, _group.children);\n } else {\n inner.push(_group);\n if (_group.type === 'mtext') {\n currentText = _group;\n }\n }\n }\n\n // If there is a single tag in the end (presumably ),\n // just return it. Otherwise, wrap them in an .\n if (inner.length === 1) {\n return inner[0];\n } else {\n return new _mathMLTree2.default.MathNode(\"mrow\", inner);\n }\n};\n\ngroupTypes.color = function (group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new _mathMLTree2.default.MathNode(\"mstyle\", inner);\n\n node.setAttribute(\"mathcolor\", group.value.color);\n\n return node;\n};\n\ngroupTypes.supsub = function (group, options) {\n // Is the inner group a relevant horizonal brace?\n var isBrace = false;\n var isOver = void 0;\n var isSup = void 0;\n if (group.value.base) {\n if (group.value.base.value.type === \"horizBrace\") {\n isSup = group.value.sup ? true : false;\n if (isSup === group.value.base.value.isOver) {\n isBrace = true;\n isOver = group.value.base.value.isOver;\n }\n }\n }\n\n var removeUnnecessaryRow = true;\n var children = [buildGroup(group.value.base, options, removeUnnecessaryRow)];\n\n if (group.value.sub) {\n children.push(buildGroup(group.value.sub, options, removeUnnecessaryRow));\n }\n\n if (group.value.sup) {\n children.push(buildGroup(group.value.sup, options, removeUnnecessaryRow));\n }\n\n var nodeType = void 0;\n if (isBrace) {\n nodeType = isOver ? \"mover\" : \"munder\";\n } else if (!group.value.sub) {\n nodeType = \"msup\";\n } else if (!group.value.sup) {\n nodeType = \"msub\";\n } else {\n var base = group.value.base;\n if (base && base.value.limits && options.style === _Style2.default.DISPLAY) {\n nodeType = \"munderover\";\n } else {\n nodeType = \"msubsup\";\n }\n }\n\n var node = new _mathMLTree2.default.MathNode(nodeType, children);\n\n return node;\n};\n\ngroupTypes.genfrac = function (group, options) {\n var node = new _mathMLTree2.default.MathNode(\"mfrac\", [buildGroup(group.value.numer, options), buildGroup(group.value.denom, options)]);\n\n if (!group.value.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n }\n\n if (group.value.leftDelim != null || group.value.rightDelim != null) {\n var withDelims = [];\n\n if (group.value.leftDelim != null) {\n var leftOp = new _mathMLTree2.default.MathNode(\"mo\", [new _mathMLTree2.default.TextNode(group.value.leftDelim)]);\n\n leftOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(leftOp);\n }\n\n withDelims.push(node);\n\n if (group.value.rightDelim != null) {\n var rightOp = new _mathMLTree2.default.MathNode(\"mo\", [new _mathMLTree2.default.TextNode(group.value.rightDelim)]);\n\n rightOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(rightOp);\n }\n\n var outerNode = new _mathMLTree2.default.MathNode(\"mrow\", withDelims);\n\n return outerNode;\n }\n\n return node;\n};\n\ngroupTypes.array = function (group, options) {\n return new _mathMLTree2.default.MathNode(\"mtable\", group.value.body.map(function (row) {\n return new _mathMLTree2.default.MathNode(\"mtr\", row.map(function (cell) {\n return new _mathMLTree2.default.MathNode(\"mtd\", [buildGroup(cell, options)]);\n }));\n }));\n};\n\ngroupTypes.sqrt = function (group, options) {\n var node = void 0;\n if (group.value.index) {\n node = new _mathMLTree2.default.MathNode(\"mroot\", [buildGroup(group.value.body, options), buildGroup(group.value.index, options)]);\n } else {\n node = new _mathMLTree2.default.MathNode(\"msqrt\", [buildGroup(group.value.body, options)]);\n }\n\n return node;\n};\n\ngroupTypes.leftright = function (group, options) {\n var inner = buildExpression(group.value.body, options);\n\n if (group.value.left !== \".\") {\n var leftNode = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value.left, group.mode)]);\n\n leftNode.setAttribute(\"fence\", \"true\");\n\n inner.unshift(leftNode);\n }\n\n if (group.value.right !== \".\") {\n var rightNode = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value.right, group.mode)]);\n\n rightNode.setAttribute(\"fence\", \"true\");\n\n inner.push(rightNode);\n }\n\n var outerNode = new _mathMLTree2.default.MathNode(\"mrow\", inner);\n\n return outerNode;\n};\n\ngroupTypes.middle = function (group, options) {\n var middleNode = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value.middle, group.mode)]);\n middleNode.setAttribute(\"fence\", \"true\");\n return middleNode;\n};\n\ngroupTypes.accent = function (group, options) {\n var accentNode = void 0;\n if (group.value.isStretchy) {\n accentNode = _stretchy2.default.mathMLnode(group.value.label);\n } else {\n accentNode = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value.label, group.mode)]);\n }\n\n var node = new _mathMLTree2.default.MathNode(\"mover\", [buildGroup(group.value.base, options), accentNode]);\n\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.spacing = function (group) {\n var node = void 0;\n\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" || group.value === \" \" || group.value === \"~\") {\n node = new _mathMLTree2.default.MathNode(\"mtext\", [new _mathMLTree2.default.TextNode(\"\\xA0\")]);\n } else {\n node = new _mathMLTree2.default.MathNode(\"mspace\");\n\n node.setAttribute(\"width\", _buildCommon2.default.spacingFunctions[group.value].size);\n }\n\n return node;\n};\n\ngroupTypes.op = function (group, options) {\n var node = void 0;\n\n // TODO(emily): handle big operators using the `largeop` attribute\n\n if (group.value.symbol) {\n // This is a symbol. Just add the symbol.\n node = new _mathMLTree2.default.MathNode(\"mo\", [makeText(group.value.body, group.mode)]);\n } else if (group.value.value) {\n // This is an operator with children. Add them.\n node = new _mathMLTree2.default.MathNode(\"mo\", buildExpression(group.value.value, options));\n } else {\n // This is a text operator. Add all of the characters from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup.\n node = new _mathMLTree2.default.MathNode(\"mi\", [new _mathMLTree2.default.TextNode(group.value.body.slice(1))]);\n }\n\n return node;\n};\n\ngroupTypes.mod = function (group, options) {\n var inner = [];\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(new _mathMLTree2.default.MathNode(\"mo\", [makeText(\"(\", group.mode)]));\n }\n if (group.value.modType !== \"pod\") {\n inner.push(new _mathMLTree2.default.MathNode(\"mo\", [makeText(\"mod\", group.mode)]));\n }\n if (group.value.value) {\n var space = new _mathMLTree2.default.MathNode(\"mspace\");\n space.setAttribute(\"width\", \"0.333333em\");\n inner.push(space);\n inner = inner.concat(buildExpression(group.value.value, options));\n }\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(new _mathMLTree2.default.MathNode(\"mo\", [makeText(\")\", group.mode)]));\n }\n\n return new _mathMLTree2.default.MathNode(\"mo\", inner);\n};\n\ngroupTypes.katex = function (group) {\n var node = new _mathMLTree2.default.MathNode(\"mtext\", [new _mathMLTree2.default.TextNode(\"KaTeX\")]);\n\n return node;\n};\n\ngroupTypes.font = function (group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function (group) {\n var children = [];\n\n if (group.value.value !== \".\") {\n children.push(makeText(group.value.value, group.mode));\n }\n\n var node = new _mathMLTree2.default.MathNode(\"mo\", children);\n\n if (group.value.mclass === \"mopen\" || group.value.mclass === \"mclose\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"mopen\" or \"mclose\" mclass.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n\n return node;\n};\n\ngroupTypes.styling = function (group, options) {\n // Figure out what style we're changing to.\n // TODO(kevinb): dedupe this with buildHTML.js\n // This will be easier of handling of styling nodes is in the same file.\n var styleMap = {\n \"display\": _Style2.default.DISPLAY,\n \"text\": _Style2.default.TEXT,\n \"script\": _Style2.default.SCRIPT,\n \"scriptscript\": _Style2.default.SCRIPTSCRIPT\n };\n\n var newStyle = styleMap[group.value.style];\n var newOptions = options.havingStyle(newStyle);\n\n var inner = buildExpression(group.value.value, newOptions);\n\n var node = new _mathMLTree2.default.MathNode(\"mstyle\", inner);\n\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"]\n };\n\n var attr = styleAttributes[group.value.style];\n\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n\n return node;\n};\n\ngroupTypes.sizing = function (group, options) {\n var newOptions = options.havingSize(group.value.size);\n var inner = buildExpression(group.value.value, newOptions);\n\n var node = new _mathMLTree2.default.MathNode(\"mstyle\", inner);\n\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\"mathsize\", newOptions.sizeMultiplier + \"em\");\n\n return node;\n};\n\ngroupTypes.overline = function (group, options) {\n var operator = new _mathMLTree2.default.MathNode(\"mo\", [new _mathMLTree2.default.TextNode(\"\\u203E\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new _mathMLTree2.default.MathNode(\"mover\", [buildGroup(group.value.body, options), operator]);\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.underline = function (group, options) {\n var operator = new _mathMLTree2.default.MathNode(\"mo\", [new _mathMLTree2.default.TextNode(\"\\u203E\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new _mathMLTree2.default.MathNode(\"munder\", [buildGroup(group.value.body, options), operator]);\n node.setAttribute(\"accentunder\", \"true\");\n\n return node;\n};\n\ngroupTypes.accentUnder = function (group, options) {\n var accentNode = _stretchy2.default.mathMLnode(group.value.label);\n var node = new _mathMLTree2.default.MathNode(\"munder\", [buildGroup(group.value.body, options), accentNode]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n};\n\ngroupTypes.enclose = function (group, options) {\n var node = new _mathMLTree2.default.MathNode(\"menclose\", [buildGroup(group.value.body, options)]);\n var notation = \"\";\n switch (group.value.label) {\n case \"\\\\bcancel\":\n notation = \"downdiagonalstrike\";\n break;\n case \"\\\\sout\":\n notation = \"horizontalstrike\";\n break;\n case \"\\\\fbox\":\n notation = \"box\";\n break;\n default:\n notation = \"updiagonalstrike\";\n }\n node.setAttribute(\"notation\", notation);\n return node;\n};\n\ngroupTypes.horizBrace = function (group, options) {\n var accentNode = _stretchy2.default.mathMLnode(group.value.label);\n return new _mathMLTree2.default.MathNode(group.value.isOver ? \"mover\" : \"munder\", [buildGroup(group.value.base, options), accentNode]);\n};\n\ngroupTypes.xArrow = function (group, options) {\n var arrowNode = _stretchy2.default.mathMLnode(group.value.label);\n var node = void 0;\n var lowerNode = void 0;\n\n if (group.value.body) {\n var upperNode = buildGroup(group.value.body, options);\n if (group.value.below) {\n lowerNode = buildGroup(group.value.below, options);\n node = new _mathMLTree2.default.MathNode(\"munderover\", [arrowNode, lowerNode, upperNode]);\n } else {\n node = new _mathMLTree2.default.MathNode(\"mover\", [arrowNode, upperNode]);\n }\n } else if (group.value.below) {\n lowerNode = buildGroup(group.value.below, options);\n node = new _mathMLTree2.default.MathNode(\"munder\", [arrowNode, lowerNode]);\n } else {\n node = new _mathMLTree2.default.MathNode(\"mover\", [arrowNode]);\n }\n return node;\n};\n\ngroupTypes.rule = function (group) {\n // TODO(emily): Figure out if there's an actual way to draw black boxes\n // in MathML.\n var node = new _mathMLTree2.default.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.kern = function (group) {\n // TODO(kevin): Figure out if there's a way to add space in MathML\n var node = new _mathMLTree2.default.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.llap = function (group, options) {\n var node = new _mathMLTree2.default.MathNode(\"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"lspace\", \"-1width\");\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.rlap = function (group, options) {\n var node = new _mathMLTree2.default.MathNode(\"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.phantom = function (group, options) {\n var inner = buildExpression(group.value.value, options);\n return new _mathMLTree2.default.MathNode(\"mphantom\", inner);\n};\n\ngroupTypes.mclass = function (group, options) {\n var inner = buildExpression(group.value.value, options);\n return new _mathMLTree2.default.MathNode(\"mstyle\", inner);\n};\n\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. A little simpler than the HTML version because we don't do any\n * previous-node handling.\n */\nvar buildExpression = function buildExpression(expression, options) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options));\n }\n\n // TODO(kevinb): combine \\\\not with mrels and mords\n\n return groups;\n};\n\n/**\n * Takes a group from the parser and calls the appropriate groupTypes function\n * on it to produce a MathML node.\n */\n// TODO(kevinb): determine if removeUnnecessaryRow should always be true\nvar buildGroup = function buildGroup(group, options) {\n var removeUnnecessaryRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!group) {\n return new _mathMLTree2.default.MathNode(\"mrow\");\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n var result = groupTypes[group.type](group, options);\n if (removeUnnecessaryRow) {\n if (result.type === \"mrow\" && result.children.length === 1) {\n return result.children[0];\n }\n }\n return result;\n } else {\n throw new _ParseError2.default(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `` inside it so\n * we can do appropriate styling.\n */\nvar buildMathML = function buildMathML(tree, texExpression, options) {\n var expression = buildExpression(tree, options);\n\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly.\n var wrapper = new _mathMLTree2.default.MathNode(\"mrow\", expression);\n\n // Build a TeX annotation of the source\n var annotation = new _mathMLTree2.default.MathNode(\"annotation\", [new _mathMLTree2.default.TextNode(texExpression)]);\n\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n\n var semantics = new _mathMLTree2.default.MathNode(\"semantics\", [wrapper, annotation]);\n\n var math = new _mathMLTree2.default.MathNode(\"math\", [semantics]);\n\n // You can't style nodes, so we wrap the node in a span.\n return (0, _buildCommon.makeSpan)([\"katex-mathml\"], [math]);\n};\n\nmodule.exports = buildMathML;\n\n},{\"./ParseError\":29,\"./Style\":33,\"./buildCommon\":34,\"./fontMetrics\":41,\"./mathMLTree\":45,\"./stretchy\":47,\"./symbols\":48,\"./utils\":51}],37:[function(require,module,exports){\n\"use strict\";\n\nvar _buildHTML = require(\"./buildHTML\");\n\nvar _buildHTML2 = _interopRequireDefault(_buildHTML);\n\nvar _buildMathML = require(\"./buildMathML\");\n\nvar _buildMathML2 = _interopRequireDefault(_buildMathML);\n\nvar _buildCommon = require(\"./buildCommon\");\n\nvar _Options = require(\"./Options\");\n\nvar _Options2 = _interopRequireDefault(_Options);\n\nvar _Settings = require(\"./Settings\");\n\nvar _Settings2 = _interopRequireDefault(_Settings);\n\nvar _Style = require(\"./Style\");\n\nvar _Style2 = _interopRequireDefault(_Style);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar buildTree = function buildTree(tree, expression, settings) {\n settings = settings || new _Settings2.default({});\n\n var startStyle = _Style2.default.TEXT;\n if (settings.displayMode) {\n startStyle = _Style2.default.DISPLAY;\n }\n\n // Setup the default options\n var options = new _Options2.default({\n style: startStyle\n });\n\n // `buildHTML` sometimes messes with the parse tree (like turning bins ->\n // ords), so we build the MathML version first.\n var mathMLNode = (0, _buildMathML2.default)(tree, expression, options);\n var htmlNode = (0, _buildHTML2.default)(tree, options);\n\n var katexNode = (0, _buildCommon.makeSpan)([\"katex\"], [mathMLNode, htmlNode]);\n\n if (settings.displayMode) {\n return (0, _buildCommon.makeSpan)([\"katex-display\"], [katexNode]);\n } else {\n return katexNode;\n }\n};\n\nmodule.exports = buildTree;\n\n},{\"./Options\":28,\"./Settings\":32,\"./Style\":33,\"./buildCommon\":34,\"./buildHTML\":35,\"./buildMathML\":36}],38:[function(require,module,exports){\n\"use strict\";\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nvar _Style = require(\"./Style\");\n\nvar _Style2 = _interopRequireDefault(_Style);\n\nvar _buildCommon = require(\"./buildCommon\");\n\nvar _buildCommon2 = _interopRequireDefault(_buildCommon);\n\nvar _fontMetrics = require(\"./fontMetrics\");\n\nvar _fontMetrics2 = _interopRequireDefault(_fontMetrics);\n\nvar _symbols = require(\"./symbols\");\n\nvar _symbols2 = _interopRequireDefault(_symbols);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\n/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n\nvar getMetrics = function getMetrics(symbol, font) {\n if (_symbols2.default.math[symbol] && _symbols2.default.math[symbol].replace) {\n return _fontMetrics2.default.getCharacterMetrics(_symbols2.default.math[symbol].replace, font);\n } else {\n return _fontMetrics2.default.getCharacterMetrics(symbol, font);\n }\n};\n\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\nvar styleWrap = function styleWrap(delim, toStyle, options, classes) {\n var newOptions = options.havingBaseStyle(toStyle);\n\n var span = (0, _buildCommon.makeSpan)((classes || []).concat(newOptions.sizingClasses(options)), [delim], options);\n\n span.delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;\n span.height *= span.delimSizeMultiplier;\n span.depth *= span.delimSizeMultiplier;\n span.maxFontSize = newOptions.sizeMultiplier;\n\n return span;\n};\n\nvar centerSpan = function centerSpan(span, options, style) {\n var newOptions = options.havingBaseStyle(style);\n var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;\n\n span.classes.push(\"delimcenter\");\n span.style.top = shift + \"em\";\n span.height -= shift;\n span.depth += shift;\n};\n\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\nvar makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) {\n var text = _buildCommon2.default.makeSymbol(delim, \"Main-Regular\", mode, options);\n var span = styleWrap(text, style, options, classes);\n if (center) {\n centerSpan(span, options, style);\n }\n return span;\n};\n\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\nvar mathrmSize = function mathrmSize(value, size, mode, options) {\n return _buildCommon2.default.makeSymbol(value, \"Size\" + size + \"-Regular\", mode, options);\n};\n\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\nvar makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) {\n var inner = mathrmSize(delim, size, mode, options);\n var span = styleWrap((0, _buildCommon.makeSpan)([\"delimsizing\", \"size\" + size], [inner], options), _Style2.default.TEXT, options, classes);\n if (center) {\n centerSpan(span, options, _Style2.default.TEXT);\n }\n return span;\n};\n\n/**\n * Make an inner span with the given offset and in the given font. This is used\n * in `makeStackedDelim` to make the stacking pieces for the delimiter.\n */\nvar makeInner = function makeInner(symbol, font, mode) {\n var sizeClass = void 0;\n // Apply the correct CSS class to choose the right font.\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else if (font === \"Size4-Regular\") {\n sizeClass = \"delim-size4\";\n }\n\n var inner = (0, _buildCommon.makeSpan)([\"delimsizinginner\", sizeClass], [(0, _buildCommon.makeSpan)([], [_buildCommon2.default.makeSymbol(symbol, font, mode)])]);\n\n // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n return { type: \"elem\", elem: inner };\n};\n\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\nvar makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n var top = void 0;\n var middle = void 0;\n var repeat = void 0;\n var bottom = void 0;\n top = repeat = bottom = delim;\n middle = null;\n // Also keep track of what font the delimiters are in\n var font = \"Size1-Regular\";\n\n // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23D0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23D0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23D0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23A1\";\n repeat = \"\\u23A2\";\n bottom = \"\\u23A3\";\n font = \"Size4-Regular\";\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23A4\";\n repeat = \"\\u23A5\";\n bottom = \"\\u23A6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lfloor\") {\n repeat = top = \"\\u23A2\";\n bottom = \"\\u23A3\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lceil\") {\n top = \"\\u23A1\";\n repeat = bottom = \"\\u23A2\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rfloor\") {\n repeat = top = \"\\u23A5\";\n bottom = \"\\u23A6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rceil\") {\n top = \"\\u23A4\";\n repeat = bottom = \"\\u23A5\";\n font = \"Size4-Regular\";\n } else if (delim === \"(\") {\n top = \"\\u239B\";\n repeat = \"\\u239C\";\n bottom = \"\\u239D\";\n font = \"Size4-Regular\";\n } else if (delim === \")\") {\n top = \"\\u239E\";\n repeat = \"\\u239F\";\n bottom = \"\\u23A0\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23A7\";\n middle = \"\\u23A8\";\n bottom = \"\\u23A9\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23AB\";\n middle = \"\\u23AC\";\n bottom = \"\\u23AD\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\") {\n top = \"\\u23A7\";\n bottom = \"\\u23A9\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\") {\n top = \"\\u23AB\";\n bottom = \"\\u23AD\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\") {\n top = \"\\u23A7\";\n bottom = \"\\u23AD\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\") {\n top = \"\\u23AB\";\n bottom = \"\\u23A9\";\n repeat = \"\\u23AA\";\n font = \"Size4-Regular\";\n }\n\n // Get the metrics of the four sections\n var topMetrics = getMetrics(top, font);\n var topHeightTotal = topMetrics.height + topMetrics.depth;\n var repeatMetrics = getMetrics(repeat, font);\n var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n var bottomMetrics = getMetrics(bottom, font);\n var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n var middleHeightTotal = 0;\n var middleFactor = 1;\n if (middle !== null) {\n var middleMetrics = getMetrics(middle, font);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n }\n\n // Calcuate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;\n\n // Compute the number of copies of the repeat symbol we will need\n var repeatCount = Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal));\n\n // Compute the total height of the delimiter including all the symbols\n var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal;\n\n // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n var axisHeight = options.fontMetrics().axisHeight;\n if (center) {\n axisHeight *= options.sizeMultiplier;\n }\n // Calculate the depth\n var depth = realHeightTotal / 2 - axisHeight;\n\n // Now, we start building the pieces that will go into the vlist\n\n // Keep a list of the inner pieces\n var inners = [];\n\n // Add the bottom symbol\n inners.push(makeInner(bottom, font, mode));\n\n if (middle === null) {\n // Add that many symbols\n for (var i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n for (var _i = 0; _i < repeatCount; _i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n inners.push(makeInner(middle, font, mode));\n for (var _i2 = 0; _i2 < repeatCount; _i2++) {\n inners.push(makeInner(repeat, font, mode));\n }\n }\n\n // Add the top symbol\n inners.push(makeInner(top, font, mode));\n\n // Finally, build the vlist\n var newOptions = options.havingBaseStyle(_Style2.default.TEXT);\n var inner = _buildCommon2.default.makeVList(inners, \"bottom\", depth, newOptions);\n\n return styleWrap((0, _buildCommon.makeSpan)([\"delimsizing\", \"mult\"], [inner], newOptions), _Style2.default.TEXT, options, classes);\n};\n\nvar sqrtInnerSVG = {\n // The main path geometry is from glyph U221A in the font KaTeX Main\n main: \"\",\n\n // size1 is from glyph U221A in the font KaTeX_Size1-Regular\n 1: \"\",\n\n // size2 is from glyph U221A in the font KaTeX_Size2-Regular\n 2: \"\",\n\n // size3 is from glyph U221A in the font KaTeX_Size3-Regular\n 3: \"\",\n\n // size4 is from glyph U221A in the font KaTeX_Size4-Regular\n 4: \"\",\n\n // tall is from glyph U23B7 in the font KaTeX_Size4-Regular\n tall: \"l-4 4-4 4c-.667.667-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h\\n-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170c-4-3.333-8.333\\n-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661z\\nM702 0H400000v40H742z'/>\"\n};\n\nvar sqrtSpan = function sqrtSpan(height, delim, options) {\n // Create a span containing an SVG image of a sqrt symbol.\n var span = _buildCommon2.default.makeSpan([], [], options);\n var sizeMultiplier = options.sizeMultiplier; // default\n\n if (delim.type === \"small\") {\n // Get an SVG that is derived from glyph U+221A in font KaTeX-Main.\n var newOptions = options.havingBaseStyle(delim.style);\n sizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;\n\n span.height = 1 * sizeMultiplier;\n span.style.height = span.height + \"em\";\n span.surdWidth = 0.833 * sizeMultiplier; // from the font.\n //In the font, the glyph is 1000 units tall. The font scale is 1:1000.\n\n span.innerHTML = \"\\n \" + sqrtInnerSVG['main'] + \"\";\n } else if (delim.type === \"large\") {\n // These SVGs come from fonts: KaTeX_Size1, _Size2, etc.\n // Get sqrt height from font data\n span.height = sizeToMaxHeight[delim.size] / sizeMultiplier;\n span.style.height = span.height + \"em\";\n span.surdWidth = 1.0 / sizeMultiplier; // from the font\n\n span.innerHTML = \"\\n \" + sqrtInnerSVG[delim.size] + \"\";\n } else {\n // Tall sqrt. In TeX, this would be stacked using multiple glyphs.\n // We'll use a single SVG to accomplish the same thing.\n span.height = height / sizeMultiplier;\n span.style.height = span.height + \"em\";\n span.surdWidth = 1.056 / sizeMultiplier;\n var viewBoxHeight = Math.floor(span.height * 1000); // scale = 1:1000\n var vertSegment = viewBoxHeight - 54;\n\n // This \\sqrt is customized in both height and width. We set the\n // height now. Then CSS will stretch the image to the correct width.\n // This SVG path comes from glyph U+23B7, font KaTeX_Size4-Regular.\n span.innerHTML = \"\\n \\n \";\n }\n\n span.sizeMultiplier = sizeMultiplier;\n\n return span;\n};\n\n// There are three kinds of delimiters, delimiters that stack when they become\n// too large\nvar stackLargeDelimiters = [\"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\", \"\\\\surd\"];\n\n// delimiters that always stack\nvar stackAlwaysDelimiters = [\"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\", \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\", \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\"];\n\n// and delimiters that never stack\nvar stackNeverDelimiters = [\"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\"];\n\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nvar sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\nvar makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Sized delimiters are never centered.\n if (_utils2.default.contains(stackLargeDelimiters, delim) || _utils2.default.contains(stackNeverDelimiters, delim)) {\n return makeLargeDelim(delim, size, false, options, mode, classes);\n } else if (_utils2.default.contains(stackAlwaysDelimiters, delim)) {\n return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);\n } else {\n throw new _ParseError2.default(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n\n/**\n * There are three different sequences of delimiter sizes that the delimiters\n * follow depending on the kind of delimiter. This is used when creating custom\n * sized delimiters to decide whether to create a small, large, or stacked\n * delimiter.\n *\n * In real TeX, these sequences aren't explicitly defined, but are instead\n * defined inside the font metrics. Since there are only three sequences that\n * are possible for the delimiters that TeX defines, it is easier to just encode\n * them explicitly here.\n */\n\n// Delimiters that never stack try small delimiters and large delimiters only\nvar stackNeverDelimiterSequence = [{ type: \"small\", style: _Style2.default.SCRIPTSCRIPT }, { type: \"small\", style: _Style2.default.SCRIPT }, { type: \"small\", style: _Style2.default.TEXT }, { type: \"large\", size: 1 }, { type: \"large\", size: 2 }, { type: \"large\", size: 3 }, { type: \"large\", size: 4 }];\n\n// Delimiters that always stack try the small delimiters first, then stack\nvar stackAlwaysDelimiterSequence = [{ type: \"small\", style: _Style2.default.SCRIPTSCRIPT }, { type: \"small\", style: _Style2.default.SCRIPT }, { type: \"small\", style: _Style2.default.TEXT }, { type: \"stack\" }];\n\n// Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\nvar stackLargeDelimiterSequence = [{ type: \"small\", style: _Style2.default.SCRIPTSCRIPT }, { type: \"small\", style: _Style2.default.SCRIPT }, { type: \"small\", style: _Style2.default.TEXT }, { type: \"large\", size: 1 }, { type: \"large\", size: 2 }, { type: \"large\", size: 3 }, { type: \"large\", size: 4 }, { type: \"stack\" }];\n\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n */\nvar delimTypeToFont = function delimTypeToFont(type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n }\n};\n\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\nvar traverseSequence = function traverseSequence(delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n var start = Math.min(2, 3 - options.style.size);\n for (var i = start; i < sequence.length; i++) {\n if (sequence[i].type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n\n var metrics = getMetrics(delim, delimTypeToFont(sequence[i]));\n var heightDepth = metrics.height + metrics.depth;\n\n // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n\n if (sequence[i].type === \"small\") {\n var newOptions = options.havingBaseStyle(sequence[i].style);\n heightDepth *= newOptions.sizeMultiplier;\n }\n\n // Check if the delimiter at this size works for the given height.\n if (heightDepth > height) {\n return sequence[i];\n }\n }\n\n // If we reached the end of the sequence, return the last sequence element.\n return sequence[sequence.length - 1];\n};\n\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\nvar makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) {\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Decide what sequence to use\n var sequence = void 0;\n if (_utils2.default.contains(stackNeverDelimiters, delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (_utils2.default.contains(stackLargeDelimiters, delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n }\n\n // Look through the sequence\n var delimType = traverseSequence(delim, height, sequence, options);\n\n if (delim === \"\\\\surd\") {\n // Get an SVG image for\n return sqrtSpan(height, delimType, options);\n } else {\n // Get the delimiter from font glyphs.\n // Depending on the sequence element we decided on, call the\n // appropriate function.\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode, classes);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode, classes);\n } else if (delimType.type === \"stack\") {\n return makeStackedDelim(delim, height, center, options, mode, classes);\n }\n }\n};\n\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\nvar makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier;\n\n // Taken from TeX source, tex.web, function make_left_right\n var delimiterFactor = 901;\n var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm;\n\n var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight);\n\n var totalHeight = Math.max(\n // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend);\n\n // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);\n};\n\nmodule.exports = {\n sizedDelim: makeSizedDelim,\n customSizedDelim: makeCustomSizedDelim,\n leftRightDelim: makeLeftRightDelim\n};\n\n},{\"./ParseError\":29,\"./Style\":33,\"./buildCommon\":34,\"./fontMetrics\":41,\"./symbols\":48,\"./utils\":51}],39:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _unicodeRegexes = require(\"./unicodeRegexes\");\n\nvar _unicodeRegexes2 = _interopRequireDefault(_unicodeRegexes);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove null or empty classes.\n */\n/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n */\nvar createClass = function createClass(classes) {\n classes = classes.slice();\n for (var i = classes.length - 1; i >= 0; i--) {\n if (!classes[i]) {\n classes.splice(i, 1);\n }\n }\n\n return classes.join(\" \");\n};\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n */\n\nvar span = function () {\n function span(classes, children, options) {\n (0, _classCallCheck3.default)(this, span);\n\n this.classes = classes || [];\n this.children = children || [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = {};\n this.attributes = {};\n this.innerHTML; // used for inline SVG code.\n if (options) {\n if (options.style.isTight()) {\n this.classes.push(\"mtight\");\n }\n if (options.getColor()) {\n this.style.color = options.getColor();\n }\n }\n }\n\n /**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all\n * browsers support attributes the same, and having too many custom attributes\n * is probably bad.\n */\n\n\n (0, _createClass3.default)(span, [{\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n }, {\n key: \"tryCombine\",\n value: function tryCombine(sibling) {\n return false;\n }\n\n /**\n * Convert the span into an HTML node\n */\n\n }, {\n key: \"toNode\",\n value: function toNode() {\n var span = document.createElement(\"span\");\n\n // Apply the class\n span.className = createClass(this.classes);\n\n // Apply inline styles\n for (var style in this.style) {\n if (Object.prototype.hasOwnProperty.call(this.style, style)) {\n span.style[style] = this.style[style];\n }\n }\n\n // Apply attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n span.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n if (this.innerHTML) {\n span.innerHTML = this.innerHTML;\n }\n\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n span.appendChild(this.children[i].toNode());\n }\n\n return span;\n }\n\n /**\n * Convert the span into an HTML markup string\n */\n\n }, {\n key: \"toMarkup\",\n value: function toMarkup() {\n var markup = \"\";\n\n if (this.innerHTML) {\n markup += this.innerHTML;\n }\n\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n }\n }]);\n return span;\n}();\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. Thus, it only\n * contains children and doesn't have any HTML properties. It also keeps track\n * of a height, depth, and maxFontSize.\n */\n\n\nvar documentFragment = function () {\n function documentFragment(children) {\n (0, _classCallCheck3.default)(this, documentFragment);\n\n this.children = children || [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n }\n\n /**\n * Convert the fragment into a node\n */\n\n\n (0, _createClass3.default)(documentFragment, [{\n key: \"toNode\",\n value: function toNode() {\n // Create a fragment\n var frag = document.createDocumentFragment();\n\n // Append the children\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n\n return frag;\n }\n\n /**\n * Convert the fragment into HTML markup\n */\n\n }, {\n key: \"toMarkup\",\n value: function toMarkup() {\n var markup = \"\";\n\n // Simply concatenate the markup for the children together\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n return markup;\n }\n }]);\n return documentFragment;\n}();\n\nvar iCombinations = {\n 'î': \"\\u0131\\u0302\",\n 'ï': \"\\u0131\\u0308\",\n 'í': \"\\u0131\\u0301\",\n // 'ī': '\\u0131\\u0304', // enable when we add Extended Latin\n 'ì': \"\\u0131\\u0300\"\n};\n\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\n\nvar symbolNode = function () {\n function symbolNode(value, height, depth, italic, skew, classes, style) {\n (0, _classCallCheck3.default)(this, symbolNode);\n\n this.value = value || \"\";\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n\n // Mark CJK characters with specific classes so that we can specify which\n // fonts to use. This allows us to render these characters with a serif\n // font in situations where the browser would either default to a sans serif\n // or render a placeholder character.\n if (_unicodeRegexes2.default.cjkRegex.test(value)) {\n // I couldn't find any fonts that contained Hangul as well as all of\n // the other characters we wanted to test there for it gets its own\n // CSS class.\n if (_unicodeRegexes2.default.hangulRegex.test(value)) {\n this.classes.push('hangul_fallback');\n } else {\n this.classes.push('cjk_fallback');\n }\n }\n\n if (/[îïíì]/.test(this.value)) {\n // add ī when we add Extended Latin\n this.value = iCombinations[this.value];\n }\n }\n\n (0, _createClass3.default)(symbolNode, [{\n key: \"tryCombine\",\n value: function tryCombine(sibling) {\n if (!sibling || !(sibling instanceof symbolNode) || this.italic > 0 || createClass(this.classes) !== createClass(sibling.classes) || this.skew !== sibling.skew || this.maxFontSize !== sibling.maxFontSize) {\n return false;\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style) && this.style[style] !== sibling.style[style]) {\n return false;\n }\n }\n for (var _style in sibling.style) {\n if (sibling.style.hasOwnProperty(_style) && this.style[_style] !== sibling.style[_style]) {\n return false;\n }\n }\n this.value += sibling.value;\n this.height = Math.max(this.height, sibling.height);\n this.depth = Math.max(this.depth, sibling.depth);\n this.italic = sibling.italic;\n return true;\n }\n\n /**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\n\n }, {\n key: \"toNode\",\n value: function toNode() {\n var node = document.createTextNode(this.value);\n var span = null;\n\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = this.italic + \"em\";\n }\n\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n span = span || document.createElement(\"span\");\n span.style[style] = this.style[style];\n }\n }\n\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n }\n\n /**\n * Creates markup for a symbol node.\n */\n\n }, {\n key: \"toMarkup\",\n value: function toMarkup() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n\n var markup = \" 0) {\n styles += \"margin-right:\" + this.italic + \"em;\";\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += _utils2.default.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + _utils2.default.escape(styles) + \"\\\"\";\n }\n\n var escaped = _utils2.default.escape(this.value);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"\";\n return markup;\n } else {\n return escaped;\n }\n }\n }]);\n return symbolNode;\n}();\n\nmodule.exports = {\n span: span,\n documentFragment: documentFragment,\n symbolNode: symbolNode\n};\n\n},{\"./unicodeRegexes\":49,\"./utils\":51,\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5}],40:[function(require,module,exports){\n\"use strict\";\n\nvar _ParseNode = require(\"./ParseNode\");\n\nvar _ParseNode2 = _interopRequireDefault(_ParseNode);\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell. If given an optional argument style\n * (\"text\", \"display\", etc.), then each cell is cast into that style.\n */\n/* eslint no-constant-condition:0 */\nfunction parseArray(parser, result, style) {\n var row = [];\n var body = [row];\n var rowGaps = [];\n while (true) {\n var cell = parser.parseExpression(false, null);\n cell = new _ParseNode2.default(\"ordgroup\", cell, parser.mode);\n if (style) {\n cell = new _ParseNode2.default(\"styling\", {\n style: style,\n value: [cell]\n }, parser.mode);\n }\n row.push(cell);\n var next = parser.nextToken.text;\n if (next === \"&\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n break;\n } else if (next === \"\\\\\\\\\" || next === \"\\\\cr\") {\n var cr = parser.parseFunction();\n rowGaps.push(cr.value.size);\n row = [];\n body.push(row);\n } else {\n throw new _ParseError2.default(\"Expected & or \\\\\\\\ or \\\\end\", parser.nextToken);\n }\n }\n result.body = body;\n result.rowGaps = rowGaps;\n return new _ParseNode2.default(result.type, result, parser.mode);\n}\n\n/*\n * An environment definition is very similar to a function definition:\n * it is declared with a name or a list of names, a set of properties\n * and a handler containing the actual implementation.\n *\n * The properties include:\n * - numArgs: The number of arguments after the \\begin{name} function.\n * - argTypes: (optional) Just like for a function\n * - allowedInText: (optional) Whether or not the environment is allowed inside\n * text mode (default false) (not enforced yet)\n * - numOptionalArgs: (optional) Just like for a function\n * A bare number instead of that object indicates the numArgs value.\n *\n * The handler function will receive two arguments\n * - context: information and references provided by the parser\n * - args: an array of arguments passed to \\begin{name}\n * The context contains the following properties:\n * - envName: the name of the environment, one of the listed names.\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions associated with these arguments from args.\n * The handler must return a ParseResult.\n */\nfunction defineEnvironment(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of environments\n var data = {\n numArgs: props.numArgs || 0,\n argTypes: props.argTypes,\n greediness: 1,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Decides on a style for cells in an array according to whether the given\n// environment name starts with the letter 'd'.\nfunction dCellStyle(envName) {\n if (envName.substr(0, 1) === \"d\") {\n return \"display\";\n } else {\n return \"text\";\n }\n}\n\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\n// {darray} is an {array} environment where cells are set in \\displaystyle,\n// as defined in nccmath.sty.\ndefineEnvironment([\"array\", \"darray\"], {\n numArgs: 1\n}, function (context, args) {\n var colalign = args[0];\n colalign = colalign.value.map ? colalign.value : [colalign];\n var cols = colalign.map(function (node) {\n var ca = node.value;\n if (\"lcr\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\"\n };\n }\n throw new _ParseError2.default(\"Unknown column alignment: \" + node.value, node);\n });\n var res = {\n type: \"array\",\n cols: cols,\n hskipBeforeAndAfter: true };\n res = parseArray(context.parser, res, dCellStyle(context.envName));\n return res;\n});\n\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\ndefineEnvironment([\"matrix\", \"pmatrix\", \"bmatrix\", \"Bmatrix\", \"vmatrix\", \"Vmatrix\"], {}, function (context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"]\n }[context.envName];\n var res = {\n type: \"array\",\n hskipBeforeAndAfter: false };\n res = parseArray(context.parser, res, dCellStyle(context.envName));\n if (delimiters) {\n res = new _ParseNode2.default(\"leftright\", {\n body: [res],\n left: delimiters[0],\n right: delimiters[1]\n }, context.mode);\n }\n return res;\n});\n\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\n// {dcases} is a {cases} environment where cells are set in \\displaystyle,\n// as defined in mathtools.sty.\ndefineEnvironment([\"cases\", \"dcases\"], {}, function (context) {\n var res = {\n type: \"array\",\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n // TODO(kevinb) get the current style.\n // For now we use the metrics for TEXT style which is what we were\n // doing before. Before attempting to get the current style we\n // should look at TeX's behavior especially for \\over and matrices.\n postgap: 1.0 }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0\n }]\n };\n res = parseArray(context.parser, res, dCellStyle(context.envName));\n res = new _ParseNode2.default(\"leftright\", {\n body: [res],\n left: \"\\\\{\",\n right: \".\"\n }, context.mode);\n return res;\n});\n\n// An aligned environment is like the align* environment\n// except it operates within math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment(\"aligned\", {}, function (context) {\n var res = {\n type: \"array\",\n cols: [],\n addJot: true\n };\n res = parseArray(context.parser, res, \"display\");\n // Count number of columns = maximum number of cells in each row.\n // At the same time, prepend empty group {} at beginning of every second\n // cell in each row (starting with second cell) so that operators become\n // binary. This behavior is implemented in amsmath's \\start@aligned.\n var emptyGroup = new _ParseNode2.default(\"ordgroup\", [], context.mode);\n var numCols = 0;\n res.value.body.forEach(function (row) {\n for (var i = 1; i < row.length; i += 2) {\n // Modify ordgroup node within styling node\n var ordgroup = row[i].value.value[0];\n ordgroup.value.unshift(emptyGroup);\n }\n if (numCols < row.length) {\n numCols = row.length;\n }\n });\n for (var i = 0; i < numCols; ++i) {\n var align = \"r\";\n var pregap = 0;\n if (i % 2 === 1) {\n align = \"l\";\n } else if (i > 0) {\n pregap = 2; // one \\qquad between columns\n }\n res.value.cols[i] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0\n };\n }\n return res;\n});\n\n// A gathered environment is like an array environment with one centered\n// column, but where rows are considered lines so get \\jot line spacing\n// and contents are set in \\displaystyle.\ndefineEnvironment(\"gathered\", {}, function (context) {\n var res = {\n type: \"array\",\n cols: [{\n type: \"align\",\n align: \"c\"\n }],\n addJot: true\n };\n res = parseArray(context.parser, res, \"display\");\n return res;\n});\n\n},{\"./ParseError\":29,\"./ParseNode\":30}],41:[function(require,module,exports){\n\"use strict\";\n\nvar _unicodeRegexes = require(\"./unicodeRegexes\");\n\nvar _fontMetricsData = require(\"./fontMetricsData\");\n\nvar _fontMetricsData2 = _interopRequireDefault(_fontMetricsData);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:\n// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are\n// provided in the the arrays below, in that order.\n//\n// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.\n// This was determined by running the following script:\n//\n// latex -interaction=nonstopmode \\\n// '\\documentclass{article}\\usepackage{amsmath}\\begin{document}' \\\n// '$a$ \\expandafter\\show\\the\\textfont2' \\\n// '\\expandafter\\show\\the\\scriptfont2' \\\n// '\\expandafter\\show\\the\\scriptscriptfont2' \\\n// '\\stop'\n//\n// The metrics themselves were retreived using the following commands:\n//\n// tftopl cmsy10\n// tftopl cmsy7\n// tftopl cmsy5\n//\n// The output of each of these commands is quite lengthy. The only part we\n// care about is the FONTDIMEN section. Each value is measured in EMs.\nvar sigmasAndXis = {\n slant: [0.250, 0.250, 0.250], // sigma1\n space: [0.000, 0.000, 0.000], // sigma2\n stretch: [0.000, 0.000, 0.000], // sigma3\n shrink: [0.000, 0.000, 0.000], // sigma4\n xHeight: [0.431, 0.431, 0.431], // sigma5\n quad: [1.000, 1.171, 1.472], // sigma6\n extraSpace: [0.000, 0.000, 0.000], // sigma7\n num1: [0.677, 0.732, 0.925], // sigma8\n num2: [0.394, 0.384, 0.387], // sigma9\n num3: [0.444, 0.471, 0.504], // sigma10\n denom1: [0.686, 0.752, 1.025], // sigma11\n denom2: [0.345, 0.344, 0.532], // sigma12\n sup1: [0.413, 0.503, 0.504], // sigma13\n sup2: [0.363, 0.431, 0.404], // sigma14\n sup3: [0.289, 0.286, 0.294], // sigma15\n sub1: [0.150, 0.143, 0.200], // sigma16\n sub2: [0.247, 0.286, 0.400], // sigma17\n supDrop: [0.386, 0.353, 0.494], // sigma18\n subDrop: [0.050, 0.071, 0.100], // sigma19\n delim1: [2.390, 1.700, 1.980], // sigma20\n delim2: [1.010, 1.157, 1.420], // sigma21\n axisHeight: [0.250, 0.250, 0.250], // sigma22\n\n // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;\n // they correspond to the font parameters of the extension fonts (family 3).\n // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to\n // match cmex7, we'd use cmex7.tfm values for script and scriptscript\n // values.\n defaultRuleThickness: [0.04, 0.049, 0.049], // xi8; cmex7: 0.049\n bigOpSpacing1: [0.111, 0.111, 0.111], // xi9\n bigOpSpacing2: [0.166, 0.166, 0.166], // xi10\n bigOpSpacing3: [0.2, 0.2, 0.2], // xi11\n bigOpSpacing4: [0.6, 0.611, 0.611], // xi12; cmex7: 0.611\n bigOpSpacing5: [0.1, 0.143, 0.143], // xi13; cmex7: 0.143\n\n // The \\sqrt rule width is taken from the height of the surd character.\n // Since we use the same font at all sizes, this thickness doesn't scale.\n sqrtRuleThickness: [0.04, 0.04, 0.04],\n\n // This value determines how large a pt is, for metrics which are defined\n // in terms of pts.\n // This value is also used in katex.less; if you change it make sure the\n // values match.\n ptPerEm: [10.0, 10.0, 10.0],\n\n // The space between adjacent `|` columns in an array definition. From\n // `\\showthe\\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.\n doubleRuleSep: [0.2, 0.2, 0.2]\n};\n\n// This map contains a mapping from font name and character code to character\n// metrics, including height, depth, italic correction, and skew (kern from the\n// character to the corresponding \\skewchar)\n// This map is generated via `make metrics`. It should not be changed manually.\n\n\n// These are very rough approximations. We default to Times New Roman which\n// should have Latin-1 and Cyrillic characters, but may not depending on the\n// operating system. The metrics do not account for extra height from the\n// accents. In the case of Cyrillic characters which have both ascenders and\n// descenders we prefer approximations with ascenders, primarily to prevent\n// the fraction bar or root line from intersecting the glyph.\n// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.\nvar extraCharacterMap = {\n // Latin-1\n 'À': 'A',\n 'Á': 'A',\n 'Â': 'A',\n 'Ã': 'A',\n 'Ä': 'A',\n 'Å': 'A',\n 'Æ': 'A',\n 'Ç': 'C',\n 'È': 'E',\n 'É': 'E',\n 'Ê': 'E',\n 'Ë': 'E',\n 'Ì': 'I',\n 'Í': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ð': 'D',\n 'Ñ': 'N',\n 'Ò': 'O',\n 'Ó': 'O',\n 'Ô': 'O',\n 'Õ': 'O',\n 'Ö': 'O',\n 'Ø': 'O',\n 'Ù': 'U',\n 'Ú': 'U',\n 'Û': 'U',\n 'Ü': 'U',\n 'Ý': 'Y',\n 'Þ': 'o',\n 'ß': 'B',\n 'à': 'a',\n 'á': 'a',\n 'â': 'a',\n 'ã': 'a',\n 'ä': 'a',\n 'å': 'a',\n 'æ': 'a',\n 'ç': 'c',\n 'è': 'e',\n 'é': 'e',\n 'ê': 'e',\n 'ë': 'e',\n 'ì': 'i',\n 'í': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ð': 'd',\n 'ñ': 'n',\n 'ò': 'o',\n 'ó': 'o',\n 'ô': 'o',\n 'õ': 'o',\n 'ö': 'o',\n 'ø': 'o',\n 'ù': 'u',\n 'ú': 'u',\n 'û': 'u',\n 'ü': 'u',\n 'ý': 'y',\n 'þ': 'o',\n 'ÿ': 'y',\n\n // Cyrillic\n 'А': 'A',\n 'Б': 'B',\n 'В': 'B',\n 'Г': 'F',\n 'Д': 'A',\n 'Е': 'E',\n 'Ж': 'K',\n 'З': '3',\n 'И': 'N',\n 'Й': 'N',\n 'К': 'K',\n 'Л': 'N',\n 'М': 'M',\n 'Н': 'H',\n 'О': 'O',\n 'П': 'N',\n 'Р': 'P',\n 'С': 'C',\n 'Т': 'T',\n 'У': 'y',\n 'Ф': 'O',\n 'Х': 'X',\n 'Ц': 'U',\n 'Ч': 'h',\n 'Ш': 'W',\n 'Щ': 'W',\n 'Ъ': 'B',\n 'Ы': 'X',\n 'Ь': 'B',\n 'Э': '3',\n 'Ю': 'X',\n 'Я': 'R',\n 'а': 'a',\n 'б': 'b',\n 'в': 'a',\n 'г': 'r',\n 'д': 'y',\n 'е': 'e',\n 'ж': 'm',\n 'з': 'e',\n 'и': 'n',\n 'й': 'n',\n 'к': 'n',\n 'л': 'n',\n 'м': 'm',\n 'н': 'n',\n 'о': 'o',\n 'п': 'n',\n 'р': 'p',\n 'с': 'c',\n 'т': 'o',\n 'у': 'y',\n 'ф': 'b',\n 'х': 'x',\n 'ц': 'n',\n 'ч': 'n',\n 'ш': 'w',\n 'щ': 'w',\n 'ъ': 'a',\n 'ы': 'm',\n 'ь': 'a',\n 'э': 'e',\n 'ю': 'm',\n 'я': 'r'\n};\n\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a style.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nvar getCharacterMetrics = function getCharacterMetrics(character, style) {\n var ch = character.charCodeAt(0);\n if (character[0] in extraCharacterMap) {\n ch = extraCharacterMap[character[0]].charCodeAt(0);\n } else if (_unicodeRegexes.cjkRegex.test(character[0])) {\n ch = 'M'.charCodeAt(0);\n }\n var metrics = _fontMetricsData2.default[style][ch];\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4]\n };\n }\n};\n\nvar fontMetricsBySizeIndex = {};\n\n/**\n * Get the font metrics for a given size.\n */\nvar getFontMetrics = function getFontMetrics(size) {\n var sizeIndex = void 0;\n if (size >= 5) {\n sizeIndex = 0;\n } else if (size >= 3) {\n sizeIndex = 1;\n } else {\n sizeIndex = 2;\n }\n if (!fontMetricsBySizeIndex[sizeIndex]) {\n var metrics = fontMetricsBySizeIndex[sizeIndex] = {};\n for (var key in sigmasAndXis) {\n if (sigmasAndXis.hasOwnProperty(key)) {\n metrics[key] = sigmasAndXis[key][sizeIndex];\n }\n }\n metrics.cssEmPerMu = metrics.quad / 18;\n }\n return fontMetricsBySizeIndex[sizeIndex];\n};\n\nmodule.exports = {\n getFontMetrics: getFontMetrics,\n getCharacterMetrics: getCharacterMetrics\n};\n\n},{\"./fontMetricsData\":42,\"./unicodeRegexes\":49}],42:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n \"AMS-Regular\": {\n \"65\": [0, 0.68889, 0, 0],\n \"66\": [0, 0.68889, 0, 0],\n \"67\": [0, 0.68889, 0, 0],\n \"68\": [0, 0.68889, 0, 0],\n \"69\": [0, 0.68889, 0, 0],\n \"70\": [0, 0.68889, 0, 0],\n \"71\": [0, 0.68889, 0, 0],\n \"72\": [0, 0.68889, 0, 0],\n \"73\": [0, 0.68889, 0, 0],\n \"74\": [0.16667, 0.68889, 0, 0],\n \"75\": [0, 0.68889, 0, 0],\n \"76\": [0, 0.68889, 0, 0],\n \"77\": [0, 0.68889, 0, 0],\n \"78\": [0, 0.68889, 0, 0],\n \"79\": [0.16667, 0.68889, 0, 0],\n \"80\": [0, 0.68889, 0, 0],\n \"81\": [0.16667, 0.68889, 0, 0],\n \"82\": [0, 0.68889, 0, 0],\n \"83\": [0, 0.68889, 0, 0],\n \"84\": [0, 0.68889, 0, 0],\n \"85\": [0, 0.68889, 0, 0],\n \"86\": [0, 0.68889, 0, 0],\n \"87\": [0, 0.68889, 0, 0],\n \"88\": [0, 0.68889, 0, 0],\n \"89\": [0, 0.68889, 0, 0],\n \"90\": [0, 0.68889, 0, 0],\n \"107\": [0, 0.68889, 0, 0],\n \"165\": [0, 0.675, 0.025, 0],\n \"174\": [0.15559, 0.69224, 0, 0],\n \"240\": [0, 0.68889, 0, 0],\n \"295\": [0, 0.68889, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.9, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.9, 0, 0],\n \"989\": [0.08167, 0.58167, 0, 0],\n \"1008\": [0, 0.43056, 0.04028, 0],\n \"8245\": [0, 0.54986, 0, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8487\": [0, 0.68889, 0, 0],\n \"8498\": [0, 0.68889, 0, 0],\n \"8502\": [0, 0.68889, 0, 0],\n \"8503\": [0, 0.68889, 0, 0],\n \"8504\": [0, 0.68889, 0, 0],\n \"8513\": [0, 0.68889, 0, 0],\n \"8592\": [-0.03598, 0.46402, 0, 0],\n \"8594\": [-0.03598, 0.46402, 0, 0],\n \"8602\": [-0.13313, 0.36687, 0, 0],\n \"8603\": [-0.13313, 0.36687, 0, 0],\n \"8606\": [0.01354, 0.52239, 0, 0],\n \"8608\": [0.01354, 0.52239, 0, 0],\n \"8610\": [0.01354, 0.52239, 0, 0],\n \"8611\": [0.01354, 0.52239, 0, 0],\n \"8619\": [0, 0.54986, 0, 0],\n \"8620\": [0, 0.54986, 0, 0],\n \"8621\": [-0.13313, 0.37788, 0, 0],\n \"8622\": [-0.13313, 0.36687, 0, 0],\n \"8624\": [0, 0.69224, 0, 0],\n \"8625\": [0, 0.69224, 0, 0],\n \"8630\": [0, 0.43056, 0, 0],\n \"8631\": [0, 0.43056, 0, 0],\n \"8634\": [0.08198, 0.58198, 0, 0],\n \"8635\": [0.08198, 0.58198, 0, 0],\n \"8638\": [0.19444, 0.69224, 0, 0],\n \"8639\": [0.19444, 0.69224, 0, 0],\n \"8642\": [0.19444, 0.69224, 0, 0],\n \"8643\": [0.19444, 0.69224, 0, 0],\n \"8644\": [0.1808, 0.675, 0, 0],\n \"8646\": [0.1808, 0.675, 0, 0],\n \"8647\": [0.1808, 0.675, 0, 0],\n \"8648\": [0.19444, 0.69224, 0, 0],\n \"8649\": [0.1808, 0.675, 0, 0],\n \"8650\": [0.19444, 0.69224, 0, 0],\n \"8651\": [0.01354, 0.52239, 0, 0],\n \"8652\": [0.01354, 0.52239, 0, 0],\n \"8653\": [-0.13313, 0.36687, 0, 0],\n \"8654\": [-0.13313, 0.36687, 0, 0],\n \"8655\": [-0.13313, 0.36687, 0, 0],\n \"8666\": [0.13667, 0.63667, 0, 0],\n \"8667\": [0.13667, 0.63667, 0, 0],\n \"8669\": [-0.13313, 0.37788, 0, 0],\n \"8672\": [-0.064, 0.437, 0, 0],\n \"8674\": [-0.064, 0.437, 0, 0],\n \"8705\": [0, 0.825, 0, 0],\n \"8708\": [0, 0.68889, 0, 0],\n \"8709\": [0.08167, 0.58167, 0, 0],\n \"8717\": [0, 0.43056, 0, 0],\n \"8722\": [-0.03598, 0.46402, 0, 0],\n \"8724\": [0.08198, 0.69224, 0, 0],\n \"8726\": [0.08167, 0.58167, 0, 0],\n \"8733\": [0, 0.69224, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8737\": [0, 0.69224, 0, 0],\n \"8738\": [0.03517, 0.52239, 0, 0],\n \"8739\": [0.08167, 0.58167, 0, 0],\n \"8740\": [0.25142, 0.74111, 0, 0],\n \"8741\": [0.08167, 0.58167, 0, 0],\n \"8742\": [0.25142, 0.74111, 0, 0],\n \"8756\": [0, 0.69224, 0, 0],\n \"8757\": [0, 0.69224, 0, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8765\": [-0.13313, 0.37788, 0, 0],\n \"8769\": [-0.13313, 0.36687, 0, 0],\n \"8770\": [-0.03625, 0.46375, 0, 0],\n \"8774\": [0.30274, 0.79383, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8778\": [0.08167, 0.58167, 0, 0],\n \"8782\": [0.06062, 0.54986, 0, 0],\n \"8783\": [0.06062, 0.54986, 0, 0],\n \"8785\": [0.08198, 0.58198, 0, 0],\n \"8786\": [0.08198, 0.58198, 0, 0],\n \"8787\": [0.08198, 0.58198, 0, 0],\n \"8790\": [0, 0.69224, 0, 0],\n \"8791\": [0.22958, 0.72958, 0, 0],\n \"8796\": [0.08198, 0.91667, 0, 0],\n \"8806\": [0.25583, 0.75583, 0, 0],\n \"8807\": [0.25583, 0.75583, 0, 0],\n \"8808\": [0.25142, 0.75726, 0, 0],\n \"8809\": [0.25142, 0.75726, 0, 0],\n \"8812\": [0.25583, 0.75583, 0, 0],\n \"8814\": [0.20576, 0.70576, 0, 0],\n \"8815\": [0.20576, 0.70576, 0, 0],\n \"8816\": [0.30274, 0.79383, 0, 0],\n \"8817\": [0.30274, 0.79383, 0, 0],\n \"8818\": [0.22958, 0.72958, 0, 0],\n \"8819\": [0.22958, 0.72958, 0, 0],\n \"8822\": [0.1808, 0.675, 0, 0],\n \"8823\": [0.1808, 0.675, 0, 0],\n \"8828\": [0.13667, 0.63667, 0, 0],\n \"8829\": [0.13667, 0.63667, 0, 0],\n \"8830\": [0.22958, 0.72958, 0, 0],\n \"8831\": [0.22958, 0.72958, 0, 0],\n \"8832\": [0.20576, 0.70576, 0, 0],\n \"8833\": [0.20576, 0.70576, 0, 0],\n \"8840\": [0.30274, 0.79383, 0, 0],\n \"8841\": [0.30274, 0.79383, 0, 0],\n \"8842\": [0.13597, 0.63597, 0, 0],\n \"8843\": [0.13597, 0.63597, 0, 0],\n \"8847\": [0.03517, 0.54986, 0, 0],\n \"8848\": [0.03517, 0.54986, 0, 0],\n \"8858\": [0.08198, 0.58198, 0, 0],\n \"8859\": [0.08198, 0.58198, 0, 0],\n \"8861\": [0.08198, 0.58198, 0, 0],\n \"8862\": [0, 0.675, 0, 0],\n \"8863\": [0, 0.675, 0, 0],\n \"8864\": [0, 0.675, 0, 0],\n \"8865\": [0, 0.675, 0, 0],\n \"8872\": [0, 0.69224, 0, 0],\n \"8873\": [0, 0.69224, 0, 0],\n \"8874\": [0, 0.69224, 0, 0],\n \"8876\": [0, 0.68889, 0, 0],\n \"8877\": [0, 0.68889, 0, 0],\n \"8878\": [0, 0.68889, 0, 0],\n \"8879\": [0, 0.68889, 0, 0],\n \"8882\": [0.03517, 0.54986, 0, 0],\n \"8883\": [0.03517, 0.54986, 0, 0],\n \"8884\": [0.13667, 0.63667, 0, 0],\n \"8885\": [0.13667, 0.63667, 0, 0],\n \"8888\": [0, 0.54986, 0, 0],\n \"8890\": [0.19444, 0.43056, 0, 0],\n \"8891\": [0.19444, 0.69224, 0, 0],\n \"8892\": [0.19444, 0.69224, 0, 0],\n \"8901\": [0, 0.54986, 0, 0],\n \"8903\": [0.08167, 0.58167, 0, 0],\n \"8905\": [0.08167, 0.58167, 0, 0],\n \"8906\": [0.08167, 0.58167, 0, 0],\n \"8907\": [0, 0.69224, 0, 0],\n \"8908\": [0, 0.69224, 0, 0],\n \"8909\": [-0.03598, 0.46402, 0, 0],\n \"8910\": [0, 0.54986, 0, 0],\n \"8911\": [0, 0.54986, 0, 0],\n \"8912\": [0.03517, 0.54986, 0, 0],\n \"8913\": [0.03517, 0.54986, 0, 0],\n \"8914\": [0, 0.54986, 0, 0],\n \"8915\": [0, 0.54986, 0, 0],\n \"8916\": [0, 0.69224, 0, 0],\n \"8918\": [0.0391, 0.5391, 0, 0],\n \"8919\": [0.0391, 0.5391, 0, 0],\n \"8920\": [0.03517, 0.54986, 0, 0],\n \"8921\": [0.03517, 0.54986, 0, 0],\n \"8922\": [0.38569, 0.88569, 0, 0],\n \"8923\": [0.38569, 0.88569, 0, 0],\n \"8926\": [0.13667, 0.63667, 0, 0],\n \"8927\": [0.13667, 0.63667, 0, 0],\n \"8928\": [0.30274, 0.79383, 0, 0],\n \"8929\": [0.30274, 0.79383, 0, 0],\n \"8934\": [0.23222, 0.74111, 0, 0],\n \"8935\": [0.23222, 0.74111, 0, 0],\n \"8936\": [0.23222, 0.74111, 0, 0],\n \"8937\": [0.23222, 0.74111, 0, 0],\n \"8938\": [0.20576, 0.70576, 0, 0],\n \"8939\": [0.20576, 0.70576, 0, 0],\n \"8940\": [0.30274, 0.79383, 0, 0],\n \"8941\": [0.30274, 0.79383, 0, 0],\n \"8994\": [0.19444, 0.69224, 0, 0],\n \"8995\": [0.19444, 0.69224, 0, 0],\n \"9416\": [0.15559, 0.69224, 0, 0],\n \"9484\": [0, 0.69224, 0, 0],\n \"9488\": [0, 0.69224, 0, 0],\n \"9492\": [0, 0.37788, 0, 0],\n \"9496\": [0, 0.37788, 0, 0],\n \"9585\": [0.19444, 0.68889, 0, 0],\n \"9586\": [0.19444, 0.74111, 0, 0],\n \"9632\": [0, 0.675, 0, 0],\n \"9633\": [0, 0.675, 0, 0],\n \"9650\": [0, 0.54986, 0, 0],\n \"9651\": [0, 0.54986, 0, 0],\n \"9654\": [0.03517, 0.54986, 0, 0],\n \"9660\": [0, 0.54986, 0, 0],\n \"9661\": [0, 0.54986, 0, 0],\n \"9664\": [0.03517, 0.54986, 0, 0],\n \"9674\": [0.11111, 0.69224, 0, 0],\n \"9733\": [0.19444, 0.69224, 0, 0],\n \"10003\": [0, 0.69224, 0, 0],\n \"10016\": [0, 0.69224, 0, 0],\n \"10731\": [0.11111, 0.69224, 0, 0],\n \"10846\": [0.19444, 0.75583, 0, 0],\n \"10877\": [0.13667, 0.63667, 0, 0],\n \"10878\": [0.13667, 0.63667, 0, 0],\n \"10885\": [0.25583, 0.75583, 0, 0],\n \"10886\": [0.25583, 0.75583, 0, 0],\n \"10887\": [0.13597, 0.63597, 0, 0],\n \"10888\": [0.13597, 0.63597, 0, 0],\n \"10889\": [0.26167, 0.75726, 0, 0],\n \"10890\": [0.26167, 0.75726, 0, 0],\n \"10891\": [0.48256, 0.98256, 0, 0],\n \"10892\": [0.48256, 0.98256, 0, 0],\n \"10901\": [0.13667, 0.63667, 0, 0],\n \"10902\": [0.13667, 0.63667, 0, 0],\n \"10933\": [0.25142, 0.75726, 0, 0],\n \"10934\": [0.25142, 0.75726, 0, 0],\n \"10935\": [0.26167, 0.75726, 0, 0],\n \"10936\": [0.26167, 0.75726, 0, 0],\n \"10937\": [0.26167, 0.75726, 0, 0],\n \"10938\": [0.26167, 0.75726, 0, 0],\n \"10949\": [0.25583, 0.75583, 0, 0],\n \"10950\": [0.25583, 0.75583, 0, 0],\n \"10955\": [0.28481, 0.79383, 0, 0],\n \"10956\": [0.28481, 0.79383, 0, 0],\n \"57350\": [0.08167, 0.58167, 0, 0],\n \"57351\": [0.08167, 0.58167, 0, 0],\n \"57352\": [0.08167, 0.58167, 0, 0],\n \"57353\": [0, 0.43056, 0.04028, 0],\n \"57356\": [0.25142, 0.75726, 0, 0],\n \"57357\": [0.25142, 0.75726, 0, 0],\n \"57358\": [0.41951, 0.91951, 0, 0],\n \"57359\": [0.30274, 0.79383, 0, 0],\n \"57360\": [0.30274, 0.79383, 0, 0],\n \"57361\": [0.41951, 0.91951, 0, 0],\n \"57366\": [0.25142, 0.75726, 0, 0],\n \"57367\": [0.25142, 0.75726, 0, 0],\n \"57368\": [0.25142, 0.75726, 0, 0],\n \"57369\": [0.25142, 0.75726, 0, 0],\n \"57370\": [0.13597, 0.63597, 0, 0],\n \"57371\": [0.13597, 0.63597, 0, 0]\n },\n \"Caligraphic-Regular\": {\n \"48\": [0, 0.43056, 0, 0],\n \"49\": [0, 0.43056, 0, 0],\n \"50\": [0, 0.43056, 0, 0],\n \"51\": [0.19444, 0.43056, 0, 0],\n \"52\": [0.19444, 0.43056, 0, 0],\n \"53\": [0.19444, 0.43056, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0.19444, 0.43056, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0.19444, 0.43056, 0, 0],\n \"65\": [0, 0.68333, 0, 0.19445],\n \"66\": [0, 0.68333, 0.03041, 0.13889],\n \"67\": [0, 0.68333, 0.05834, 0.13889],\n \"68\": [0, 0.68333, 0.02778, 0.08334],\n \"69\": [0, 0.68333, 0.08944, 0.11111],\n \"70\": [0, 0.68333, 0.09931, 0.11111],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111],\n \"72\": [0, 0.68333, 0.00965, 0.11111],\n \"73\": [0, 0.68333, 0.07382, 0],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667],\n \"75\": [0, 0.68333, 0.01445, 0.05556],\n \"76\": [0, 0.68333, 0, 0.13889],\n \"77\": [0, 0.68333, 0, 0.13889],\n \"78\": [0, 0.68333, 0.14736, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.11111],\n \"80\": [0, 0.68333, 0.08222, 0.08334],\n \"81\": [0.09722, 0.68333, 0, 0.11111],\n \"82\": [0, 0.68333, 0, 0.08334],\n \"83\": [0, 0.68333, 0.075, 0.13889],\n \"84\": [0, 0.68333, 0.25417, 0],\n \"85\": [0, 0.68333, 0.09931, 0.08334],\n \"86\": [0, 0.68333, 0.08222, 0],\n \"87\": [0, 0.68333, 0.08222, 0.08334],\n \"88\": [0, 0.68333, 0.14643, 0.13889],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334],\n \"90\": [0, 0.68333, 0.07944, 0.13889]\n },\n \"Fraktur-Regular\": {\n \"33\": [0, 0.69141, 0, 0],\n \"34\": [0, 0.69141, 0, 0],\n \"38\": [0, 0.69141, 0, 0],\n \"39\": [0, 0.69141, 0, 0],\n \"40\": [0.24982, 0.74947, 0, 0],\n \"41\": [0.24982, 0.74947, 0, 0],\n \"42\": [0, 0.62119, 0, 0],\n \"43\": [0.08319, 0.58283, 0, 0],\n \"44\": [0, 0.10803, 0, 0],\n \"45\": [0.08319, 0.58283, 0, 0],\n \"46\": [0, 0.10803, 0, 0],\n \"47\": [0.24982, 0.74947, 0, 0],\n \"48\": [0, 0.47534, 0, 0],\n \"49\": [0, 0.47534, 0, 0],\n \"50\": [0, 0.47534, 0, 0],\n \"51\": [0.18906, 0.47534, 0, 0],\n \"52\": [0.18906, 0.47534, 0, 0],\n \"53\": [0.18906, 0.47534, 0, 0],\n \"54\": [0, 0.69141, 0, 0],\n \"55\": [0.18906, 0.47534, 0, 0],\n \"56\": [0, 0.69141, 0, 0],\n \"57\": [0.18906, 0.47534, 0, 0],\n \"58\": [0, 0.47534, 0, 0],\n \"59\": [0.12604, 0.47534, 0, 0],\n \"61\": [-0.13099, 0.36866, 0, 0],\n \"63\": [0, 0.69141, 0, 0],\n \"65\": [0, 0.69141, 0, 0],\n \"66\": [0, 0.69141, 0, 0],\n \"67\": [0, 0.69141, 0, 0],\n \"68\": [0, 0.69141, 0, 0],\n \"69\": [0, 0.69141, 0, 0],\n \"70\": [0.12604, 0.69141, 0, 0],\n \"71\": [0, 0.69141, 0, 0],\n \"72\": [0.06302, 0.69141, 0, 0],\n \"73\": [0, 0.69141, 0, 0],\n \"74\": [0.12604, 0.69141, 0, 0],\n \"75\": [0, 0.69141, 0, 0],\n \"76\": [0, 0.69141, 0, 0],\n \"77\": [0, 0.69141, 0, 0],\n \"78\": [0, 0.69141, 0, 0],\n \"79\": [0, 0.69141, 0, 0],\n \"80\": [0.18906, 0.69141, 0, 0],\n \"81\": [0.03781, 0.69141, 0, 0],\n \"82\": [0, 0.69141, 0, 0],\n \"83\": [0, 0.69141, 0, 0],\n \"84\": [0, 0.69141, 0, 0],\n \"85\": [0, 0.69141, 0, 0],\n \"86\": [0, 0.69141, 0, 0],\n \"87\": [0, 0.69141, 0, 0],\n \"88\": [0, 0.69141, 0, 0],\n \"89\": [0.18906, 0.69141, 0, 0],\n \"90\": [0.12604, 0.69141, 0, 0],\n \"91\": [0.24982, 0.74947, 0, 0],\n \"93\": [0.24982, 0.74947, 0, 0],\n \"94\": [0, 0.69141, 0, 0],\n \"97\": [0, 0.47534, 0, 0],\n \"98\": [0, 0.69141, 0, 0],\n \"99\": [0, 0.47534, 0, 0],\n \"100\": [0, 0.62119, 0, 0],\n \"101\": [0, 0.47534, 0, 0],\n \"102\": [0.18906, 0.69141, 0, 0],\n \"103\": [0.18906, 0.47534, 0, 0],\n \"104\": [0.18906, 0.69141, 0, 0],\n \"105\": [0, 0.69141, 0, 0],\n \"106\": [0, 0.69141, 0, 0],\n \"107\": [0, 0.69141, 0, 0],\n \"108\": [0, 0.69141, 0, 0],\n \"109\": [0, 0.47534, 0, 0],\n \"110\": [0, 0.47534, 0, 0],\n \"111\": [0, 0.47534, 0, 0],\n \"112\": [0.18906, 0.52396, 0, 0],\n \"113\": [0.18906, 0.47534, 0, 0],\n \"114\": [0, 0.47534, 0, 0],\n \"115\": [0, 0.47534, 0, 0],\n \"116\": [0, 0.62119, 0, 0],\n \"117\": [0, 0.47534, 0, 0],\n \"118\": [0, 0.52396, 0, 0],\n \"119\": [0, 0.52396, 0, 0],\n \"120\": [0.18906, 0.47534, 0, 0],\n \"121\": [0.18906, 0.47534, 0, 0],\n \"122\": [0.18906, 0.47534, 0, 0],\n \"8216\": [0, 0.69141, 0, 0],\n \"8217\": [0, 0.69141, 0, 0],\n \"58112\": [0, 0.62119, 0, 0],\n \"58113\": [0, 0.62119, 0, 0],\n \"58114\": [0.18906, 0.69141, 0, 0],\n \"58115\": [0.18906, 0.69141, 0, 0],\n \"58116\": [0.18906, 0.47534, 0, 0],\n \"58117\": [0, 0.69141, 0, 0],\n \"58118\": [0, 0.62119, 0, 0],\n \"58119\": [0, 0.47534, 0, 0]\n },\n \"Main-Bold\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.13333, 0.63333, 0, 0],\n \"44\": [0.19444, 0.15556, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.15556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.19444, 0.44444, 0, 0],\n \"60\": [0.08556, 0.58556, 0, 0],\n \"61\": [-0.10889, 0.39111, 0, 0],\n \"62\": [0.08556, 0.58556, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0, 0],\n \"67\": [0, 0.68611, 0, 0],\n \"68\": [0, 0.68611, 0, 0],\n \"69\": [0, 0.68611, 0, 0],\n \"70\": [0, 0.68611, 0, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0, 0],\n \"73\": [0, 0.68611, 0, 0],\n \"74\": [0, 0.68611, 0, 0],\n \"75\": [0, 0.68611, 0, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0, 0],\n \"78\": [0, 0.68611, 0, 0],\n \"79\": [0, 0.68611, 0, 0],\n \"80\": [0, 0.68611, 0, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0, 0],\n \"83\": [0, 0.68611, 0, 0],\n \"84\": [0, 0.68611, 0, 0],\n \"85\": [0, 0.68611, 0, 0],\n \"86\": [0, 0.68611, 0.01597, 0],\n \"87\": [0, 0.68611, 0.01597, 0],\n \"88\": [0, 0.68611, 0, 0],\n \"89\": [0, 0.68611, 0.02875, 0],\n \"90\": [0, 0.68611, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.13444, 0.03194, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.10903, 0],\n \"103\": [0.19444, 0.44444, 0.01597, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69444, 0, 0],\n \"106\": [0.19444, 0.69444, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01597, 0],\n \"119\": [0, 0.44444, 0.01597, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01597, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.34444, 0, 0],\n \"168\": [0, 0.69444, 0, 0],\n \"172\": [0, 0.44444, 0, 0],\n \"175\": [0, 0.59611, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.13333, 0.63333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.13333, 0.63333, 0, 0],\n \"247\": [0.13333, 0.63333, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.63194, 0, 0],\n \"713\": [0, 0.59611, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.69444, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.69444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.69444, 0, 0],\n \"772\": [0, 0.59611, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.69444, 0, 0],\n \"776\": [0, 0.69444, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68611, 0, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0, 0],\n \"928\": [0, 0.68611, 0, 0],\n \"931\": [0, 0.68611, 0, 0],\n \"933\": [0, 0.68611, 0, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0, 0],\n \"937\": [0, 0.68611, 0, 0],\n \"8211\": [0, 0.44444, 0.03194, 0],\n \"8212\": [0, 0.44444, 0.03194, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.72444, 0.15486, 0],\n \"8463\": [0, 0.69444, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0],\n \"8472\": [0.19444, 0.44444, 0, 0],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.10889, 0.39111, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.10889, 0.39111, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.10889, 0.39111, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8636\": [-0.10889, 0.39111, 0, 0],\n \"8637\": [-0.10889, 0.39111, 0, 0],\n \"8640\": [-0.10889, 0.39111, 0, 0],\n \"8641\": [-0.10889, 0.39111, 0, 0],\n \"8656\": [-0.10889, 0.39111, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.10889, 0.39111, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.10889, 0.39111, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.06389, 0],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68611, 0, 0],\n \"8712\": [0.08556, 0.58556, 0, 0],\n \"8715\": [0.08556, 0.58556, 0, 0],\n \"8722\": [0.13333, 0.63333, 0, 0],\n \"8723\": [0.13333, 0.63333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.02778, 0.47222, 0, 0],\n \"8728\": [-0.02639, 0.47361, 0, 0],\n \"8729\": [-0.02639, 0.47361, 0, 0],\n \"8730\": [0.18, 0.82, 0, 0],\n \"8733\": [0, 0.44444, 0, 0],\n \"8734\": [0, 0.44444, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.12778, 0],\n \"8764\": [-0.10889, 0.39111, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [0.00222, 0.50222, 0, 0],\n \"8776\": [0.02444, 0.52444, 0, 0],\n \"8781\": [0.00222, 0.50222, 0, 0],\n \"8801\": [0.00222, 0.50222, 0, 0],\n \"8804\": [0.19667, 0.69667, 0, 0],\n \"8805\": [0.19667, 0.69667, 0, 0],\n \"8810\": [0.08556, 0.58556, 0, 0],\n \"8811\": [0.08556, 0.58556, 0, 0],\n \"8826\": [0.08556, 0.58556, 0, 0],\n \"8827\": [0.08556, 0.58556, 0, 0],\n \"8834\": [0.08556, 0.58556, 0, 0],\n \"8835\": [0.08556, 0.58556, 0, 0],\n \"8838\": [0.19667, 0.69667, 0, 0],\n \"8839\": [0.19667, 0.69667, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.19667, 0.69667, 0, 0],\n \"8850\": [0.19667, 0.69667, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.13333, 0.63333, 0, 0],\n \"8854\": [0.13333, 0.63333, 0, 0],\n \"8855\": [0.13333, 0.63333, 0, 0],\n \"8856\": [0.13333, 0.63333, 0, 0],\n \"8857\": [0.13333, 0.63333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8900\": [-0.02639, 0.47361, 0, 0],\n \"8901\": [-0.02639, 0.47361, 0, 0],\n \"8902\": [-0.02778, 0.47222, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.13889, 0.36111, 0, 0],\n \"8995\": [-0.13889, 0.36111, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.02778, 0.47222, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.02778, 0.47222, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10815\": [0, 0.68611, 0, 0],\n \"10927\": [0.19667, 0.69667, 0, 0],\n \"10928\": [0.19667, 0.69667, 0, 0]\n },\n \"Main-Italic\": {\n \"33\": [0, 0.69444, 0.12417, 0],\n \"34\": [0, 0.69444, 0.06961, 0],\n \"35\": [0.19444, 0.69444, 0.06616, 0],\n \"37\": [0.05556, 0.75, 0.13639, 0],\n \"38\": [0, 0.69444, 0.09694, 0],\n \"39\": [0, 0.69444, 0.12417, 0],\n \"40\": [0.25, 0.75, 0.16194, 0],\n \"41\": [0.25, 0.75, 0.03694, 0],\n \"42\": [0, 0.75, 0.14917, 0],\n \"43\": [0.05667, 0.56167, 0.03694, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0.02826, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0.16194, 0],\n \"48\": [0, 0.64444, 0.13556, 0],\n \"49\": [0, 0.64444, 0.13556, 0],\n \"50\": [0, 0.64444, 0.13556, 0],\n \"51\": [0, 0.64444, 0.13556, 0],\n \"52\": [0.19444, 0.64444, 0.13556, 0],\n \"53\": [0, 0.64444, 0.13556, 0],\n \"54\": [0, 0.64444, 0.13556, 0],\n \"55\": [0.19444, 0.64444, 0.13556, 0],\n \"56\": [0, 0.64444, 0.13556, 0],\n \"57\": [0, 0.64444, 0.13556, 0],\n \"58\": [0, 0.43056, 0.0582, 0],\n \"59\": [0.19444, 0.43056, 0.0582, 0],\n \"61\": [-0.13313, 0.36687, 0.06616, 0],\n \"63\": [0, 0.69444, 0.1225, 0],\n \"64\": [0, 0.69444, 0.09597, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0.10257, 0],\n \"67\": [0, 0.68333, 0.14528, 0],\n \"68\": [0, 0.68333, 0.09403, 0],\n \"69\": [0, 0.68333, 0.12028, 0],\n \"70\": [0, 0.68333, 0.13305, 0],\n \"71\": [0, 0.68333, 0.08722, 0],\n \"72\": [0, 0.68333, 0.16389, 0],\n \"73\": [0, 0.68333, 0.15806, 0],\n \"74\": [0, 0.68333, 0.14028, 0],\n \"75\": [0, 0.68333, 0.14528, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0.16389, 0],\n \"78\": [0, 0.68333, 0.16389, 0],\n \"79\": [0, 0.68333, 0.09403, 0],\n \"80\": [0, 0.68333, 0.10257, 0],\n \"81\": [0.19444, 0.68333, 0.09403, 0],\n \"82\": [0, 0.68333, 0.03868, 0],\n \"83\": [0, 0.68333, 0.11972, 0],\n \"84\": [0, 0.68333, 0.13305, 0],\n \"85\": [0, 0.68333, 0.16389, 0],\n \"86\": [0, 0.68333, 0.18361, 0],\n \"87\": [0, 0.68333, 0.18361, 0],\n \"88\": [0, 0.68333, 0.15806, 0],\n \"89\": [0, 0.68333, 0.19383, 0],\n \"90\": [0, 0.68333, 0.14528, 0],\n \"91\": [0.25, 0.75, 0.1875, 0],\n \"93\": [0.25, 0.75, 0.10528, 0],\n \"94\": [0, 0.69444, 0.06646, 0],\n \"95\": [0.31, 0.12056, 0.09208, 0],\n \"97\": [0, 0.43056, 0.07671, 0],\n \"98\": [0, 0.69444, 0.06312, 0],\n \"99\": [0, 0.43056, 0.05653, 0],\n \"100\": [0, 0.69444, 0.10333, 0],\n \"101\": [0, 0.43056, 0.07514, 0],\n \"102\": [0.19444, 0.69444, 0.21194, 0],\n \"103\": [0.19444, 0.43056, 0.08847, 0],\n \"104\": [0, 0.69444, 0.07671, 0],\n \"105\": [0, 0.65536, 0.1019, 0],\n \"106\": [0.19444, 0.65536, 0.14467, 0],\n \"107\": [0, 0.69444, 0.10764, 0],\n \"108\": [0, 0.69444, 0.10333, 0],\n \"109\": [0, 0.43056, 0.07671, 0],\n \"110\": [0, 0.43056, 0.07671, 0],\n \"111\": [0, 0.43056, 0.06312, 0],\n \"112\": [0.19444, 0.43056, 0.06312, 0],\n \"113\": [0.19444, 0.43056, 0.08847, 0],\n \"114\": [0, 0.43056, 0.10764, 0],\n \"115\": [0, 0.43056, 0.08208, 0],\n \"116\": [0, 0.61508, 0.09486, 0],\n \"117\": [0, 0.43056, 0.07671, 0],\n \"118\": [0, 0.43056, 0.10764, 0],\n \"119\": [0, 0.43056, 0.10764, 0],\n \"120\": [0, 0.43056, 0.12042, 0],\n \"121\": [0.19444, 0.43056, 0.08847, 0],\n \"122\": [0, 0.43056, 0.12292, 0],\n \"126\": [0.35, 0.31786, 0.11585, 0],\n \"163\": [0, 0.69444, 0, 0],\n \"305\": [0, 0.43056, 0, 0.02778],\n \"567\": [0.19444, 0.43056, 0, 0.08334],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0.09694, 0],\n \"770\": [0, 0.69444, 0.06646, 0],\n \"771\": [0, 0.66786, 0.11585, 0],\n \"772\": [0, 0.56167, 0.10333, 0],\n \"774\": [0, 0.69444, 0.10806, 0],\n \"775\": [0, 0.66786, 0.11752, 0],\n \"776\": [0, 0.66786, 0.10474, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0.1225, 0],\n \"780\": [0, 0.62847, 0.08295, 0],\n \"915\": [0, 0.68333, 0.13305, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0.09403, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0.15294, 0],\n \"928\": [0, 0.68333, 0.16389, 0],\n \"931\": [0, 0.68333, 0.12028, 0],\n \"933\": [0, 0.68333, 0.11111, 0],\n \"934\": [0, 0.68333, 0.05986, 0],\n \"936\": [0, 0.68333, 0.11111, 0],\n \"937\": [0, 0.68333, 0.10257, 0],\n \"8211\": [0, 0.43056, 0.09208, 0],\n \"8212\": [0, 0.43056, 0.09208, 0],\n \"8216\": [0, 0.69444, 0.12417, 0],\n \"8217\": [0, 0.69444, 0.12417, 0],\n \"8220\": [0, 0.69444, 0.1685, 0],\n \"8221\": [0, 0.69444, 0.06961, 0],\n \"8463\": [0, 0.68889, 0, 0]\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0],\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.19444, 0.43056, 0, 0],\n \"60\": [0.0391, 0.5391, 0, 0],\n \"61\": [-0.13313, 0.36687, 0, 0],\n \"62\": [0.0391, 0.5391, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0, 0],\n \"67\": [0, 0.68333, 0, 0],\n \"68\": [0, 0.68333, 0, 0],\n \"69\": [0, 0.68333, 0, 0],\n \"70\": [0, 0.68333, 0, 0],\n \"71\": [0, 0.68333, 0, 0],\n \"72\": [0, 0.68333, 0, 0],\n \"73\": [0, 0.68333, 0, 0],\n \"74\": [0, 0.68333, 0, 0],\n \"75\": [0, 0.68333, 0, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0, 0],\n \"78\": [0, 0.68333, 0, 0],\n \"79\": [0, 0.68333, 0, 0],\n \"80\": [0, 0.68333, 0, 0],\n \"81\": [0.19444, 0.68333, 0, 0],\n \"82\": [0, 0.68333, 0, 0],\n \"83\": [0, 0.68333, 0, 0],\n \"84\": [0, 0.68333, 0, 0],\n \"85\": [0, 0.68333, 0, 0],\n \"86\": [0, 0.68333, 0.01389, 0],\n \"87\": [0, 0.68333, 0.01389, 0],\n \"88\": [0, 0.68333, 0, 0],\n \"89\": [0, 0.68333, 0.025, 0],\n \"90\": [0, 0.68333, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.12056, 0.02778, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.69444, 0.07778, 0],\n \"103\": [0.19444, 0.43056, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.66786, 0, 0],\n \"106\": [0.19444, 0.66786, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.19444, 0.43056, 0, 0],\n \"113\": [0.19444, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.61508, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0.01389, 0],\n \"119\": [0, 0.43056, 0.01389, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.19444, 0.43056, 0.01389, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.31786, 0, 0],\n \"160\": [0, 0, 0, 0],\n \"168\": [0, 0.66786, 0, 0],\n \"172\": [0, 0.43056, 0, 0],\n \"175\": [0, 0.56778, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.08333, 0.58333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.08333, 0.58333, 0, 0],\n \"247\": [0.08333, 0.58333, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.19444, 0.43056, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.62847, 0, 0],\n \"713\": [0, 0.56778, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.66786, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.66786, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.66786, 0, 0],\n \"772\": [0, 0.56778, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.66786, 0, 0],\n \"776\": [0, 0.66786, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.62847, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68333, 0, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0, 0],\n \"928\": [0, 0.68333, 0, 0],\n \"931\": [0, 0.68333, 0, 0],\n \"933\": [0, 0.68333, 0, 0],\n \"934\": [0, 0.68333, 0, 0],\n \"936\": [0, 0.68333, 0, 0],\n \"937\": [0, 0.68333, 0, 0],\n \"8211\": [0, 0.43056, 0.02778, 0],\n \"8212\": [0, 0.43056, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8230\": [0, 0.12, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.71444, 0.15382, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0.11111],\n \"8472\": [0.19444, 0.43056, 0, 0.11111],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.13313, 0.36687, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.13313, 0.36687, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.13313, 0.36687, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8614\": [0.011, 0.511, 0, 0],\n \"8617\": [0.011, 0.511, 0, 0],\n \"8618\": [0.011, 0.511, 0, 0],\n \"8636\": [-0.13313, 0.36687, 0, 0],\n \"8637\": [-0.13313, 0.36687, 0, 0],\n \"8640\": [-0.13313, 0.36687, 0, 0],\n \"8641\": [-0.13313, 0.36687, 0, 0],\n \"8652\": [0.011, 0.671, 0, 0],\n \"8656\": [-0.13313, 0.36687, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.13313, 0.36687, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.13313, 0.36687, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.05556, 0.08334],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68333, 0, 0],\n \"8712\": [0.0391, 0.5391, 0, 0],\n \"8715\": [0.0391, 0.5391, 0, 0],\n \"8722\": [0.08333, 0.58333, 0, 0],\n \"8723\": [0.08333, 0.58333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.03472, 0.46528, 0, 0],\n \"8728\": [-0.05555, 0.44445, 0, 0],\n \"8729\": [-0.05555, 0.44445, 0, 0],\n \"8730\": [0.2, 0.8, 0, 0],\n \"8733\": [0, 0.43056, 0, 0],\n \"8734\": [0, 0.43056, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.11111, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [-0.03625, 0.46375, 0, 0],\n \"8773\": [-0.022, 0.589, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8781\": [-0.03625, 0.46375, 0, 0],\n \"8784\": [-0.133, 0.67, 0, 0],\n \"8800\": [0.215, 0.716, 0, 0],\n \"8801\": [-0.03625, 0.46375, 0, 0],\n \"8804\": [0.13597, 0.63597, 0, 0],\n \"8805\": [0.13597, 0.63597, 0, 0],\n \"8810\": [0.0391, 0.5391, 0, 0],\n \"8811\": [0.0391, 0.5391, 0, 0],\n \"8826\": [0.0391, 0.5391, 0, 0],\n \"8827\": [0.0391, 0.5391, 0, 0],\n \"8834\": [0.0391, 0.5391, 0, 0],\n \"8835\": [0.0391, 0.5391, 0, 0],\n \"8838\": [0.13597, 0.63597, 0, 0],\n \"8839\": [0.13597, 0.63597, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.13597, 0.63597, 0, 0],\n \"8850\": [0.13597, 0.63597, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.08333, 0.58333, 0, 0],\n \"8854\": [0.08333, 0.58333, 0, 0],\n \"8855\": [0.08333, 0.58333, 0, 0],\n \"8856\": [0.08333, 0.58333, 0, 0],\n \"8857\": [0.08333, 0.58333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8872\": [0.249, 0.75, 0, 0],\n \"8900\": [-0.05555, 0.44445, 0, 0],\n \"8901\": [-0.05555, 0.44445, 0, 0],\n \"8902\": [-0.03472, 0.46528, 0, 0],\n \"8904\": [0.005, 0.505, 0, 0],\n \"8942\": [0.03, 0.9, 0, 0],\n \"8943\": [-0.19, 0.31, 0, 0],\n \"8945\": [-0.1, 0.82, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.14236, 0.35764, 0, 0],\n \"8995\": [-0.14236, 0.35764, 0, 0],\n \"9136\": [0.244, 0.744, 0, 0],\n \"9137\": [0.244, 0.744, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.03472, 0.46528, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.03472, 0.46528, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10222\": [0.244, 0.744, 0, 0],\n \"10223\": [0.244, 0.744, 0, 0],\n \"10229\": [0.011, 0.511, 0, 0],\n \"10230\": [0.011, 0.511, 0, 0],\n \"10231\": [0.011, 0.511, 0, 0],\n \"10232\": [0.024, 0.525, 0, 0],\n \"10233\": [0.024, 0.525, 0, 0],\n \"10234\": [0.024, 0.525, 0, 0],\n \"10236\": [0.011, 0.511, 0, 0],\n \"10815\": [0, 0.68333, 0, 0],\n \"10927\": [0.13597, 0.63597, 0, 0],\n \"10928\": [0.13597, 0.63597, 0, 0]\n },\n \"Math-BoldItalic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0.04835, 0],\n \"67\": [0, 0.68611, 0.06979, 0],\n \"68\": [0, 0.68611, 0.03194, 0],\n \"69\": [0, 0.68611, 0.05451, 0],\n \"70\": [0, 0.68611, 0.15972, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0.08229, 0],\n \"73\": [0, 0.68611, 0.07778, 0],\n \"74\": [0, 0.68611, 0.10069, 0],\n \"75\": [0, 0.68611, 0.06979, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0.11424, 0],\n \"78\": [0, 0.68611, 0.11424, 0],\n \"79\": [0, 0.68611, 0.03194, 0],\n \"80\": [0, 0.68611, 0.15972, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0.00421, 0],\n \"83\": [0, 0.68611, 0.05382, 0],\n \"84\": [0, 0.68611, 0.15972, 0],\n \"85\": [0, 0.68611, 0.11424, 0],\n \"86\": [0, 0.68611, 0.25555, 0],\n \"87\": [0, 0.68611, 0.15972, 0],\n \"88\": [0, 0.68611, 0.07778, 0],\n \"89\": [0, 0.68611, 0.25555, 0],\n \"90\": [0, 0.68611, 0.06979, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0.19444, 0.69444, 0.11042, 0],\n \"103\": [0.19444, 0.44444, 0.03704, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69326, 0, 0],\n \"106\": [0.19444, 0.69326, 0.0622, 0],\n \"107\": [0, 0.69444, 0.01852, 0],\n \"108\": [0, 0.69444, 0.0088, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0.03704, 0],\n \"114\": [0, 0.44444, 0.03194, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.03704, 0],\n \"119\": [0, 0.44444, 0.02778, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.03704, 0],\n \"122\": [0, 0.44444, 0.04213, 0],\n \"915\": [0, 0.68611, 0.15972, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0.03194, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0.07458, 0],\n \"928\": [0, 0.68611, 0.08229, 0],\n \"931\": [0, 0.68611, 0.05451, 0],\n \"933\": [0, 0.68611, 0.15972, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0.11653, 0],\n \"937\": [0, 0.68611, 0.04835, 0],\n \"945\": [0, 0.44444, 0, 0],\n \"946\": [0.19444, 0.69444, 0.03403, 0],\n \"947\": [0.19444, 0.44444, 0.06389, 0],\n \"948\": [0, 0.69444, 0.03819, 0],\n \"949\": [0, 0.44444, 0, 0],\n \"950\": [0.19444, 0.69444, 0.06215, 0],\n \"951\": [0.19444, 0.44444, 0.03704, 0],\n \"952\": [0, 0.69444, 0.03194, 0],\n \"953\": [0, 0.44444, 0, 0],\n \"954\": [0, 0.44444, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.44444, 0, 0],\n \"957\": [0, 0.44444, 0.06898, 0],\n \"958\": [0.19444, 0.69444, 0.03021, 0],\n \"959\": [0, 0.44444, 0, 0],\n \"960\": [0, 0.44444, 0.03704, 0],\n \"961\": [0.19444, 0.44444, 0, 0],\n \"962\": [0.09722, 0.44444, 0.07917, 0],\n \"963\": [0, 0.44444, 0.03704, 0],\n \"964\": [0, 0.44444, 0.13472, 0],\n \"965\": [0, 0.44444, 0.03704, 0],\n \"966\": [0.19444, 0.44444, 0, 0],\n \"967\": [0.19444, 0.44444, 0, 0],\n \"968\": [0.19444, 0.69444, 0.03704, 0],\n \"969\": [0, 0.44444, 0.03704, 0],\n \"977\": [0, 0.69444, 0, 0],\n \"981\": [0.19444, 0.69444, 0, 0],\n \"982\": [0, 0.44444, 0.03194, 0],\n \"1009\": [0.19444, 0.44444, 0, 0],\n \"1013\": [0, 0.44444, 0, 0]\n },\n \"Math-Italic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556]\n },\n \"Math-Regular\": {\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556]\n },\n \"SansSerif-Regular\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.125, 0.08333, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.08333, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.65556, 0, 0],\n \"49\": [0, 0.65556, 0, 0],\n \"50\": [0, 0.65556, 0, 0],\n \"51\": [0, 0.65556, 0, 0],\n \"52\": [0, 0.65556, 0, 0],\n \"53\": [0, 0.65556, 0, 0],\n \"54\": [0, 0.65556, 0, 0],\n \"55\": [0, 0.65556, 0, 0],\n \"56\": [0, 0.65556, 0, 0],\n \"57\": [0, 0.65556, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.125, 0.44444, 0, 0],\n \"61\": [-0.13, 0.37, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.69444, 0, 0],\n \"66\": [0, 0.69444, 0, 0],\n \"67\": [0, 0.69444, 0, 0],\n \"68\": [0, 0.69444, 0, 0],\n \"69\": [0, 0.69444, 0, 0],\n \"70\": [0, 0.69444, 0, 0],\n \"71\": [0, 0.69444, 0, 0],\n \"72\": [0, 0.69444, 0, 0],\n \"73\": [0, 0.69444, 0, 0],\n \"74\": [0, 0.69444, 0, 0],\n \"75\": [0, 0.69444, 0, 0],\n \"76\": [0, 0.69444, 0, 0],\n \"77\": [0, 0.69444, 0, 0],\n \"78\": [0, 0.69444, 0, 0],\n \"79\": [0, 0.69444, 0, 0],\n \"80\": [0, 0.69444, 0, 0],\n \"81\": [0.125, 0.69444, 0, 0],\n \"82\": [0, 0.69444, 0, 0],\n \"83\": [0, 0.69444, 0, 0],\n \"84\": [0, 0.69444, 0, 0],\n \"85\": [0, 0.69444, 0, 0],\n \"86\": [0, 0.69444, 0.01389, 0],\n \"87\": [0, 0.69444, 0.01389, 0],\n \"88\": [0, 0.69444, 0, 0],\n \"89\": [0, 0.69444, 0.025, 0],\n \"90\": [0, 0.69444, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.35, 0.09444, 0.02778, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.06944, 0],\n \"103\": [0.19444, 0.44444, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.67937, 0, 0],\n \"106\": [0.19444, 0.67937, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0.01389, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.57143, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01389, 0],\n \"119\": [0, 0.44444, 0.01389, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01389, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"126\": [0.35, 0.32659, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.67659, 0, 0],\n \"772\": [0, 0.60889, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.67937, 0, 0],\n \"776\": [0, 0.67937, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"915\": [0, 0.69444, 0, 0],\n \"916\": [0, 0.69444, 0, 0],\n \"920\": [0, 0.69444, 0, 0],\n \"923\": [0, 0.69444, 0, 0],\n \"926\": [0, 0.69444, 0, 0],\n \"928\": [0, 0.69444, 0, 0],\n \"931\": [0, 0.69444, 0, 0],\n \"933\": [0, 0.69444, 0, 0],\n \"934\": [0, 0.69444, 0, 0],\n \"936\": [0, 0.69444, 0, 0],\n \"937\": [0, 0.69444, 0, 0],\n \"8211\": [0, 0.44444, 0.02778, 0],\n \"8212\": [0, 0.44444, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0]\n },\n \"Script-Regular\": {\n \"65\": [0, 0.7, 0.22925, 0],\n \"66\": [0, 0.7, 0.04087, 0],\n \"67\": [0, 0.7, 0.1689, 0],\n \"68\": [0, 0.7, 0.09371, 0],\n \"69\": [0, 0.7, 0.18583, 0],\n \"70\": [0, 0.7, 0.13634, 0],\n \"71\": [0, 0.7, 0.17322, 0],\n \"72\": [0, 0.7, 0.29694, 0],\n \"73\": [0, 0.7, 0.19189, 0],\n \"74\": [0.27778, 0.7, 0.19189, 0],\n \"75\": [0, 0.7, 0.31259, 0],\n \"76\": [0, 0.7, 0.19189, 0],\n \"77\": [0, 0.7, 0.15981, 0],\n \"78\": [0, 0.7, 0.3525, 0],\n \"79\": [0, 0.7, 0.08078, 0],\n \"80\": [0, 0.7, 0.08078, 0],\n \"81\": [0, 0.7, 0.03305, 0],\n \"82\": [0, 0.7, 0.06259, 0],\n \"83\": [0, 0.7, 0.19189, 0],\n \"84\": [0, 0.7, 0.29087, 0],\n \"85\": [0, 0.7, 0.25815, 0],\n \"86\": [0, 0.7, 0.27523, 0],\n \"87\": [0, 0.7, 0.27523, 0],\n \"88\": [0, 0.7, 0.26006, 0],\n \"89\": [0, 0.7, 0.2939, 0],\n \"90\": [0, 0.7, 0.24037, 0]\n },\n \"Size1-Regular\": {\n \"40\": [0.35001, 0.85, 0, 0],\n \"41\": [0.35001, 0.85, 0, 0],\n \"47\": [0.35001, 0.85, 0, 0],\n \"91\": [0.35001, 0.85, 0, 0],\n \"92\": [0.35001, 0.85, 0, 0],\n \"93\": [0.35001, 0.85, 0, 0],\n \"123\": [0.35001, 0.85, 0, 0],\n \"125\": [0.35001, 0.85, 0, 0],\n \"710\": [0, 0.72222, 0, 0],\n \"732\": [0, 0.72222, 0, 0],\n \"770\": [0, 0.72222, 0, 0],\n \"771\": [0, 0.72222, 0, 0],\n \"8214\": [-0.00099, 0.601, 0, 0],\n \"8593\": [1e-05, 0.6, 0, 0],\n \"8595\": [1e-05, 0.6, 0, 0],\n \"8657\": [1e-05, 0.6, 0, 0],\n \"8659\": [1e-05, 0.6, 0, 0],\n \"8719\": [0.25001, 0.75, 0, 0],\n \"8720\": [0.25001, 0.75, 0, 0],\n \"8721\": [0.25001, 0.75, 0, 0],\n \"8730\": [0.35001, 0.85, 0, 0],\n \"8739\": [-0.00599, 0.606, 0, 0],\n \"8741\": [-0.00599, 0.606, 0, 0],\n \"8747\": [0.30612, 0.805, 0.19445, 0],\n \"8748\": [0.306, 0.805, 0.19445, 0],\n \"8749\": [0.306, 0.805, 0.19445, 0],\n \"8750\": [0.30612, 0.805, 0.19445, 0],\n \"8896\": [0.25001, 0.75, 0, 0],\n \"8897\": [0.25001, 0.75, 0, 0],\n \"8898\": [0.25001, 0.75, 0, 0],\n \"8899\": [0.25001, 0.75, 0, 0],\n \"8968\": [0.35001, 0.85, 0, 0],\n \"8969\": [0.35001, 0.85, 0, 0],\n \"8970\": [0.35001, 0.85, 0, 0],\n \"8971\": [0.35001, 0.85, 0, 0],\n \"9168\": [-0.00099, 0.601, 0, 0],\n \"10216\": [0.35001, 0.85, 0, 0],\n \"10217\": [0.35001, 0.85, 0, 0],\n \"10752\": [0.25001, 0.75, 0, 0],\n \"10753\": [0.25001, 0.75, 0, 0],\n \"10754\": [0.25001, 0.75, 0, 0],\n \"10756\": [0.25001, 0.75, 0, 0],\n \"10758\": [0.25001, 0.75, 0, 0]\n },\n \"Size2-Regular\": {\n \"40\": [0.65002, 1.15, 0, 0],\n \"41\": [0.65002, 1.15, 0, 0],\n \"47\": [0.65002, 1.15, 0, 0],\n \"91\": [0.65002, 1.15, 0, 0],\n \"92\": [0.65002, 1.15, 0, 0],\n \"93\": [0.65002, 1.15, 0, 0],\n \"123\": [0.65002, 1.15, 0, 0],\n \"125\": [0.65002, 1.15, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8719\": [0.55001, 1.05, 0, 0],\n \"8720\": [0.55001, 1.05, 0, 0],\n \"8721\": [0.55001, 1.05, 0, 0],\n \"8730\": [0.65002, 1.15, 0, 0],\n \"8747\": [0.86225, 1.36, 0.44445, 0],\n \"8748\": [0.862, 1.36, 0.44445, 0],\n \"8749\": [0.862, 1.36, 0.44445, 0],\n \"8750\": [0.86225, 1.36, 0.44445, 0],\n \"8896\": [0.55001, 1.05, 0, 0],\n \"8897\": [0.55001, 1.05, 0, 0],\n \"8898\": [0.55001, 1.05, 0, 0],\n \"8899\": [0.55001, 1.05, 0, 0],\n \"8968\": [0.65002, 1.15, 0, 0],\n \"8969\": [0.65002, 1.15, 0, 0],\n \"8970\": [0.65002, 1.15, 0, 0],\n \"8971\": [0.65002, 1.15, 0, 0],\n \"10216\": [0.65002, 1.15, 0, 0],\n \"10217\": [0.65002, 1.15, 0, 0],\n \"10752\": [0.55001, 1.05, 0, 0],\n \"10753\": [0.55001, 1.05, 0, 0],\n \"10754\": [0.55001, 1.05, 0, 0],\n \"10756\": [0.55001, 1.05, 0, 0],\n \"10758\": [0.55001, 1.05, 0, 0]\n },\n \"Size3-Regular\": {\n \"40\": [0.95003, 1.45, 0, 0],\n \"41\": [0.95003, 1.45, 0, 0],\n \"47\": [0.95003, 1.45, 0, 0],\n \"91\": [0.95003, 1.45, 0, 0],\n \"92\": [0.95003, 1.45, 0, 0],\n \"93\": [0.95003, 1.45, 0, 0],\n \"123\": [0.95003, 1.45, 0, 0],\n \"125\": [0.95003, 1.45, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8730\": [0.95003, 1.45, 0, 0],\n \"8968\": [0.95003, 1.45, 0, 0],\n \"8969\": [0.95003, 1.45, 0, 0],\n \"8970\": [0.95003, 1.45, 0, 0],\n \"8971\": [0.95003, 1.45, 0, 0],\n \"10216\": [0.95003, 1.45, 0, 0],\n \"10217\": [0.95003, 1.45, 0, 0]\n },\n \"Size4-Regular\": {\n \"40\": [1.25003, 1.75, 0, 0],\n \"41\": [1.25003, 1.75, 0, 0],\n \"47\": [1.25003, 1.75, 0, 0],\n \"91\": [1.25003, 1.75, 0, 0],\n \"92\": [1.25003, 1.75, 0, 0],\n \"93\": [1.25003, 1.75, 0, 0],\n \"123\": [1.25003, 1.75, 0, 0],\n \"125\": [1.25003, 1.75, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.825, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.825, 0, 0],\n \"8730\": [1.25003, 1.75, 0, 0],\n \"8968\": [1.25003, 1.75, 0, 0],\n \"8969\": [1.25003, 1.75, 0, 0],\n \"8970\": [1.25003, 1.75, 0, 0],\n \"8971\": [1.25003, 1.75, 0, 0],\n \"9115\": [0.64502, 1.155, 0, 0],\n \"9116\": [1e-05, 0.6, 0, 0],\n \"9117\": [0.64502, 1.155, 0, 0],\n \"9118\": [0.64502, 1.155, 0, 0],\n \"9119\": [1e-05, 0.6, 0, 0],\n \"9120\": [0.64502, 1.155, 0, 0],\n \"9121\": [0.64502, 1.155, 0, 0],\n \"9122\": [-0.00099, 0.601, 0, 0],\n \"9123\": [0.64502, 1.155, 0, 0],\n \"9124\": [0.64502, 1.155, 0, 0],\n \"9125\": [-0.00099, 0.601, 0, 0],\n \"9126\": [0.64502, 1.155, 0, 0],\n \"9127\": [1e-05, 0.9, 0, 0],\n \"9128\": [0.65002, 1.15, 0, 0],\n \"9129\": [0.90001, 0, 0, 0],\n \"9130\": [0, 0.3, 0, 0],\n \"9131\": [1e-05, 0.9, 0, 0],\n \"9132\": [0.65002, 1.15, 0, 0],\n \"9133\": [0.90001, 0, 0, 0],\n \"9143\": [0.88502, 0.915, 0, 0],\n \"10216\": [1.25003, 1.75, 0, 0],\n \"10217\": [1.25003, 1.75, 0, 0],\n \"57344\": [-0.00499, 0.605, 0, 0],\n \"57345\": [-0.00499, 0.605, 0, 0],\n \"57680\": [0, 0.12, 0, 0],\n \"57681\": [0, 0.12, 0, 0],\n \"57682\": [0, 0.12, 0, 0],\n \"57683\": [0, 0.12, 0, 0]\n },\n \"Typewriter-Regular\": {\n \"33\": [0, 0.61111, 0, 0],\n \"34\": [0, 0.61111, 0, 0],\n \"35\": [0, 0.61111, 0, 0],\n \"36\": [0.08333, 0.69444, 0, 0],\n \"37\": [0.08333, 0.69444, 0, 0],\n \"38\": [0, 0.61111, 0, 0],\n \"39\": [0, 0.61111, 0, 0],\n \"40\": [0.08333, 0.69444, 0, 0],\n \"41\": [0.08333, 0.69444, 0, 0],\n \"42\": [0, 0.52083, 0, 0],\n \"43\": [-0.08056, 0.53055, 0, 0],\n \"44\": [0.13889, 0.125, 0, 0],\n \"45\": [-0.08056, 0.53055, 0, 0],\n \"46\": [0, 0.125, 0, 0],\n \"47\": [0.08333, 0.69444, 0, 0],\n \"48\": [0, 0.61111, 0, 0],\n \"49\": [0, 0.61111, 0, 0],\n \"50\": [0, 0.61111, 0, 0],\n \"51\": [0, 0.61111, 0, 0],\n \"52\": [0, 0.61111, 0, 0],\n \"53\": [0, 0.61111, 0, 0],\n \"54\": [0, 0.61111, 0, 0],\n \"55\": [0, 0.61111, 0, 0],\n \"56\": [0, 0.61111, 0, 0],\n \"57\": [0, 0.61111, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.13889, 0.43056, 0, 0],\n \"60\": [-0.05556, 0.55556, 0, 0],\n \"61\": [-0.19549, 0.41562, 0, 0],\n \"62\": [-0.05556, 0.55556, 0, 0],\n \"63\": [0, 0.61111, 0, 0],\n \"64\": [0, 0.61111, 0, 0],\n \"65\": [0, 0.61111, 0, 0],\n \"66\": [0, 0.61111, 0, 0],\n \"67\": [0, 0.61111, 0, 0],\n \"68\": [0, 0.61111, 0, 0],\n \"69\": [0, 0.61111, 0, 0],\n \"70\": [0, 0.61111, 0, 0],\n \"71\": [0, 0.61111, 0, 0],\n \"72\": [0, 0.61111, 0, 0],\n \"73\": [0, 0.61111, 0, 0],\n \"74\": [0, 0.61111, 0, 0],\n \"75\": [0, 0.61111, 0, 0],\n \"76\": [0, 0.61111, 0, 0],\n \"77\": [0, 0.61111, 0, 0],\n \"78\": [0, 0.61111, 0, 0],\n \"79\": [0, 0.61111, 0, 0],\n \"80\": [0, 0.61111, 0, 0],\n \"81\": [0.13889, 0.61111, 0, 0],\n \"82\": [0, 0.61111, 0, 0],\n \"83\": [0, 0.61111, 0, 0],\n \"84\": [0, 0.61111, 0, 0],\n \"85\": [0, 0.61111, 0, 0],\n \"86\": [0, 0.61111, 0, 0],\n \"87\": [0, 0.61111, 0, 0],\n \"88\": [0, 0.61111, 0, 0],\n \"89\": [0, 0.61111, 0, 0],\n \"90\": [0, 0.61111, 0, 0],\n \"91\": [0.08333, 0.69444, 0, 0],\n \"92\": [0.08333, 0.69444, 0, 0],\n \"93\": [0.08333, 0.69444, 0, 0],\n \"94\": [0, 0.61111, 0, 0],\n \"95\": [0.09514, 0, 0, 0],\n \"96\": [0, 0.61111, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.61111, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.61111, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.61111, 0, 0],\n \"103\": [0.22222, 0.43056, 0, 0],\n \"104\": [0, 0.61111, 0, 0],\n \"105\": [0, 0.61111, 0, 0],\n \"106\": [0.22222, 0.61111, 0, 0],\n \"107\": [0, 0.61111, 0, 0],\n \"108\": [0, 0.61111, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.22222, 0.43056, 0, 0],\n \"113\": [0.22222, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.55358, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0, 0],\n \"119\": [0, 0.43056, 0, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.22222, 0.43056, 0, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.08333, 0.69444, 0, 0],\n \"124\": [0.08333, 0.69444, 0, 0],\n \"125\": [0.08333, 0.69444, 0, 0],\n \"126\": [0, 0.61111, 0, 0],\n \"127\": [0, 0.61111, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.22222, 0.43056, 0, 0],\n \"768\": [0, 0.61111, 0, 0],\n \"769\": [0, 0.61111, 0, 0],\n \"770\": [0, 0.61111, 0, 0],\n \"771\": [0, 0.61111, 0, 0],\n \"772\": [0, 0.56555, 0, 0],\n \"774\": [0, 0.61111, 0, 0],\n \"776\": [0, 0.61111, 0, 0],\n \"778\": [0, 0.61111, 0, 0],\n \"780\": [0, 0.56597, 0, 0],\n \"915\": [0, 0.61111, 0, 0],\n \"916\": [0, 0.61111, 0, 0],\n \"920\": [0, 0.61111, 0, 0],\n \"923\": [0, 0.61111, 0, 0],\n \"926\": [0, 0.61111, 0, 0],\n \"928\": [0, 0.61111, 0, 0],\n \"931\": [0, 0.61111, 0, 0],\n \"933\": [0, 0.61111, 0, 0],\n \"934\": [0, 0.61111, 0, 0],\n \"936\": [0, 0.61111, 0, 0],\n \"937\": [0, 0.61111, 0, 0],\n \"2018\": [0, 0.61111, 0, 0],\n \"2019\": [0, 0.61111, 0, 0],\n \"8242\": [0, 0.61111, 0, 0]\n }\n};\n\n},{}],43:[function(require,module,exports){\n\"use strict\";\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nvar _ParseNode = require(\"./ParseNode\");\n\nvar _ParseNode2 = _interopRequireDefault(_ParseNode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* This file contains a list of functions that we parse, identified by\n * the calls to defineFunction.\n *\n * The first argument to defineFunction is a single name or a list of names.\n * All functions named in such a list will share a single implementation.\n *\n * Each declared function can have associated properties, which\n * include the following:\n *\n * - numArgs: The number of arguments the function takes.\n * If this is the only property, it can be passed as a number\n * instead of an element of a properties object.\n * - argTypes: (optional) An array corresponding to each argument of the\n * function, giving the type of argument that should be parsed. Its\n * length should be equal to `numArgs + numOptionalArgs`. Valid\n * types:\n * - \"size\": A size-like thing, such as \"1em\" or \"5ex\"\n * - \"color\": An html color, like \"#abc\" or \"blue\"\n * - \"original\": The same type as the environment that the\n * function being parsed is in (e.g. used for the\n * bodies of functions like \\textcolor where the\n * first argument is special and the second\n * argument is parsed normally)\n * Other possible types (probably shouldn't be used)\n * - \"text\": Text-like (e.g. \\text)\n * - \"math\": Normal math\n * If undefined, this will be treated as an appropriate length\n * array of \"original\" strings\n * - greediness: (optional) The greediness of the function to use ungrouped\n * arguments.\n *\n * E.g. if you have an expression\n * \\sqrt \\frac 1 2\n * since \\frac has greediness=2 vs \\sqrt's greediness=1, \\frac\n * will use the two arguments '1' and '2' as its two arguments,\n * then that whole function will be used as the argument to\n * \\sqrt. On the other hand, the expressions\n * \\frac \\frac 1 2 3\n * and\n * \\frac \\sqrt 1 2\n * will fail because \\frac and \\frac have equal greediness\n * and \\sqrt has a lower greediness than \\frac respectively. To\n * make these parse, we would have to change them to:\n * \\frac {\\frac 1 2} 3\n * and\n * \\frac {\\sqrt 1} 2\n *\n * The default value is `1`\n * - allowedInText: (optional) Whether or not the function is allowed inside\n * text mode (default false)\n * - numOptionalArgs: (optional) The number of optional arguments the function\n * should parse. If the optional arguments aren't found,\n * `null` will be passed to the handler in their place.\n * (default 0)\n * - infix: (optional) Must be true if the function is an infix operator.\n *\n * The last argument is that implementation, the handler for the function(s).\n * It is called to handle these functions and their arguments.\n * It receives two arguments:\n * - context contains information and references provided by the parser\n * - args is an array of arguments obtained from TeX input\n * The context contains the following properties:\n * - funcName: the text (i.e. name) of the function, including \\\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions in the overall string of the function\n * and the arguments.\n * The latter three should only be used to produce error messages.\n *\n * The function should return an object with the following keys:\n * - type: The type of element that this is. This is then used in\n * buildHTML/buildMathML to determine which function\n * should be called to build this node into a DOM node\n * Any other data can be added to the object, which will be passed\n * in to the function in buildHTML/buildMathML as `group.value`.\n */\n\nfunction defineFunction(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of functions\n var data = {\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n greediness: props.greediness === undefined ? 1 : props.greediness,\n allowedInText: !!props.allowedInText,\n allowedInMath: props.allowedInMath,\n numOptionalArgs: props.numOptionalArgs || 0,\n infix: !!props.infix,\n handler: handler\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Since the corresponding buildHTML/buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\nvar ordargument = function ordargument(arg) {\n if (arg.type === \"ordgroup\") {\n return arg.value;\n } else {\n return [arg];\n }\n};\n\n// A normal square root\ndefineFunction(\"\\\\sqrt\", {\n numArgs: 1,\n numOptionalArgs: 1\n}, function (context, args) {\n var index = args[0];\n var body = args[1];\n return {\n type: \"sqrt\",\n body: body,\n index: index\n };\n});\n\n// Non-mathy text, possibly in a font\nvar textFunctionStyles = {\n \"\\\\text\": undefined, \"\\\\textrm\": \"mathrm\", \"\\\\textsf\": \"mathsf\",\n \"\\\\texttt\": \"mathtt\", \"\\\\textnormal\": \"mathrm\", \"\\\\textbf\": \"mathbf\",\n \"\\\\textit\": \"textit\"\n};\n\ndefineFunction([\"\\\\text\", \"\\\\textrm\", \"\\\\textsf\", \"\\\\texttt\", \"\\\\textnormal\", \"\\\\textbf\", \"\\\\textit\"], {\n numArgs: 1,\n argTypes: [\"text\"],\n greediness: 2,\n allowedInText: true\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"text\",\n body: ordargument(body),\n style: textFunctionStyles[context.funcName]\n };\n});\n\n// A two-argument custom color\ndefineFunction(\"\\\\textcolor\", {\n numArgs: 2,\n allowedInText: true,\n greediness: 3,\n argTypes: [\"color\", \"original\"]\n}, function (context, args) {\n var color = args[0];\n var body = args[1];\n return {\n type: \"color\",\n color: color.value,\n value: ordargument(body)\n };\n});\n\n// \\color is handled in Parser.js's parseImplicitGroup\ndefineFunction(\"\\\\color\", {\n numArgs: 1,\n allowedInText: true,\n greediness: 3,\n argTypes: [\"color\"]\n}, null);\n\n// An overline\ndefineFunction(\"\\\\overline\", {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"overline\",\n body: body\n };\n});\n\n// An underline\ndefineFunction(\"\\\\underline\", {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"underline\",\n body: body\n };\n});\n\n// A box of the width and height\ndefineFunction(\"\\\\rule\", {\n numArgs: 2,\n numOptionalArgs: 1,\n argTypes: [\"size\", \"size\", \"size\"]\n}, function (context, args) {\n var shift = args[0];\n var width = args[1];\n var height = args[2];\n return {\n type: \"rule\",\n shift: shift && shift.value,\n width: width.value,\n height: height.value\n };\n});\n\n// TODO: In TeX, \\mkern only accepts mu-units, and \\kern does not accept\n// mu-units. In current KaTeX we relax this; both commands accept any unit.\ndefineFunction([\"\\\\kern\", \"\\\\mkern\"], {\n numArgs: 1,\n argTypes: [\"size\"]\n}, function (context, args) {\n return {\n type: \"kern\",\n dimension: args[0].value\n };\n});\n\n// A KaTeX logo\ndefineFunction(\"\\\\KaTeX\", {\n numArgs: 0\n}, function (context) {\n return {\n type: \"katex\"\n };\n});\n\ndefineFunction(\"\\\\phantom\", {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"phantom\",\n value: ordargument(body)\n };\n});\n\n// Math class commands except \\mathop\ndefineFunction([\"\\\\mathord\", \"\\\\mathbin\", \"\\\\mathrel\", \"\\\\mathopen\", \"\\\\mathclose\", \"\\\\mathpunct\", \"\\\\mathinner\"], {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"mclass\",\n mclass: \"m\" + context.funcName.substr(5),\n value: ordargument(body)\n };\n});\n\n// Build a relation by placing one symbol on top of another\ndefineFunction(\"\\\\stackrel\", {\n numArgs: 2\n}, function (context, args) {\n var top = args[0];\n var bottom = args[1];\n\n var bottomop = new _ParseNode2.default(\"op\", {\n type: \"op\",\n limits: true,\n alwaysHandleSupSub: true,\n symbol: false,\n value: ordargument(bottom)\n }, bottom.mode);\n\n var supsub = new _ParseNode2.default(\"supsub\", {\n base: bottomop,\n sup: top,\n sub: null\n }, top.mode);\n\n return {\n type: \"mclass\",\n mclass: \"mrel\",\n value: [supsub]\n };\n});\n\n// \\mod-type functions\ndefineFunction(\"\\\\bmod\", {\n numArgs: 0\n}, function (context, args) {\n return {\n type: \"mod\",\n modType: \"bmod\",\n value: null\n };\n});\n\ndefineFunction([\"\\\\pod\", \"\\\\pmod\", \"\\\\mod\"], {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"mod\",\n modType: context.funcName.substr(1),\n value: ordargument(body)\n };\n});\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\": { mclass: \"mopen\", size: 1 },\n \"\\\\Bigl\": { mclass: \"mopen\", size: 2 },\n \"\\\\biggl\": { mclass: \"mopen\", size: 3 },\n \"\\\\Biggl\": { mclass: \"mopen\", size: 4 },\n \"\\\\bigr\": { mclass: \"mclose\", size: 1 },\n \"\\\\Bigr\": { mclass: \"mclose\", size: 2 },\n \"\\\\biggr\": { mclass: \"mclose\", size: 3 },\n \"\\\\Biggr\": { mclass: \"mclose\", size: 4 },\n \"\\\\bigm\": { mclass: \"mrel\", size: 1 },\n \"\\\\Bigm\": { mclass: \"mrel\", size: 2 },\n \"\\\\biggm\": { mclass: \"mrel\", size: 3 },\n \"\\\\Biggm\": { mclass: \"mrel\", size: 4 },\n \"\\\\big\": { mclass: \"mord\", size: 1 },\n \"\\\\Big\": { mclass: \"mord\", size: 2 },\n \"\\\\bigg\": { mclass: \"mord\", size: 3 },\n \"\\\\Bigg\": { mclass: \"mord\", size: 4 }\n};\n\nvar delimiters = [\"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\", \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"\\\\lt\", \"\\\\gt\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\", \"/\", \"\\\\backslash\", \"|\", \"\\\\vert\", \"\\\\|\", \"\\\\Vert\", \"\\\\uparrow\", \"\\\\Uparrow\", \"\\\\downarrow\", \"\\\\Downarrow\", \"\\\\updownarrow\", \"\\\\Updownarrow\", \".\"];\n\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\"\n};\n\n// Single-argument color functions\ndefineFunction([\"\\\\blue\", \"\\\\orange\", \"\\\\pink\", \"\\\\red\", \"\\\\green\", \"\\\\gray\", \"\\\\purple\", \"\\\\blueA\", \"\\\\blueB\", \"\\\\blueC\", \"\\\\blueD\", \"\\\\blueE\", \"\\\\tealA\", \"\\\\tealB\", \"\\\\tealC\", \"\\\\tealD\", \"\\\\tealE\", \"\\\\greenA\", \"\\\\greenB\", \"\\\\greenC\", \"\\\\greenD\", \"\\\\greenE\", \"\\\\goldA\", \"\\\\goldB\", \"\\\\goldC\", \"\\\\goldD\", \"\\\\goldE\", \"\\\\redA\", \"\\\\redB\", \"\\\\redC\", \"\\\\redD\", \"\\\\redE\", \"\\\\maroonA\", \"\\\\maroonB\", \"\\\\maroonC\", \"\\\\maroonD\", \"\\\\maroonE\", \"\\\\purpleA\", \"\\\\purpleB\", \"\\\\purpleC\", \"\\\\purpleD\", \"\\\\purpleE\", \"\\\\mintA\", \"\\\\mintB\", \"\\\\mintC\", \"\\\\grayA\", \"\\\\grayB\", \"\\\\grayC\", \"\\\\grayD\", \"\\\\grayE\", \"\\\\grayF\", \"\\\\grayG\", \"\\\\grayH\", \"\\\\grayI\", \"\\\\kaBlue\", \"\\\\kaGreen\"], {\n numArgs: 1,\n allowedInText: true,\n greediness: 3\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"color\",\n color: \"katex-\" + context.funcName.slice(1),\n value: ordargument(body)\n };\n});\n\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\n// No limits, not symbols\ndefineFunction([\"\\\\arcsin\", \"\\\\arccos\", \"\\\\arctan\", \"\\\\arctg\", \"\\\\arcctg\", \"\\\\arg\", \"\\\\ch\", \"\\\\cos\", \"\\\\cosec\", \"\\\\cosh\", \"\\\\cot\", \"\\\\cotg\", \"\\\\coth\", \"\\\\csc\", \"\\\\ctg\", \"\\\\cth\", \"\\\\deg\", \"\\\\dim\", \"\\\\exp\", \"\\\\hom\", \"\\\\ker\", \"\\\\lg\", \"\\\\ln\", \"\\\\log\", \"\\\\sec\", \"\\\\sin\", \"\\\\sinh\", \"\\\\sh\", \"\\\\tan\", \"\\\\tanh\", \"\\\\tg\", \"\\\\th\"], {\n numArgs: 0\n}, function (context) {\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n body: context.funcName\n };\n});\n\n// Limits, not symbols\ndefineFunction([\"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\liminf\", \"\\\\limsup\", \"\\\\max\", \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"], {\n numArgs: 0\n}, function (context) {\n return {\n type: \"op\",\n limits: true,\n symbol: false,\n body: context.funcName\n };\n});\n\n// No limits, symbols\ndefineFunction([\"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\"], {\n numArgs: 0\n}, function (context) {\n return {\n type: \"op\",\n limits: false,\n symbol: true,\n body: context.funcName\n };\n});\n\n// Limits, symbols\ndefineFunction([\"\\\\coprod\", \"\\\\bigvee\", \"\\\\bigwedge\", \"\\\\biguplus\", \"\\\\bigcap\", \"\\\\bigcup\", \"\\\\intop\", \"\\\\prod\", \"\\\\sum\", \"\\\\bigotimes\", \"\\\\bigoplus\", \"\\\\bigodot\", \"\\\\bigsqcup\", \"\\\\smallint\"], {\n numArgs: 0\n}, function (context) {\n return {\n type: \"op\",\n limits: true,\n symbol: true,\n body: context.funcName\n };\n});\n\n// \\mathop class command\ndefineFunction(\"\\\\mathop\", {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n value: ordargument(body)\n };\n});\n\n// Fractions\ndefineFunction([\"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\", \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\", \"\\\\\\\\atopfrac\"], {\n numArgs: 2,\n greediness: 2\n}, function (context, args) {\n var numer = args[0];\n var denom = args[1];\n var hasBarLine = void 0;\n var leftDelim = null;\n var rightDelim = null;\n var size = \"auto\";\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\\\\\atopfrac\":\n hasBarLine = false;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\dbinom\":\n size = \"display\";\n break;\n case \"\\\\tfrac\":\n case \"\\\\tbinom\":\n size = \"text\";\n break;\n }\n\n return {\n type: \"genfrac\",\n numer: numer,\n denom: denom,\n hasBarLine: hasBarLine,\n leftDelim: leftDelim,\n rightDelim: rightDelim,\n size: size\n };\n});\n\n// Left and right overlap functions\ndefineFunction([\"\\\\llap\", \"\\\\rlap\"], {\n numArgs: 1,\n allowedInText: true\n}, function (context, args) {\n var body = args[0];\n return {\n type: context.funcName.slice(1),\n body: body\n };\n});\n\n// Delimiter functions\nvar checkDelimiter = function checkDelimiter(delim, context) {\n if (_utils2.default.contains(delimiters, delim.value)) {\n return delim;\n } else {\n throw new _ParseError2.default(\"Invalid delimiter: '\" + delim.value + \"' after '\" + context.funcName + \"'\", delim);\n }\n};\n\ndefineFunction([\"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\", \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\", \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\", \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\"], {\n numArgs: 1\n}, function (context, args) {\n var delim = checkDelimiter(args[0], context);\n\n return {\n type: \"delimsizing\",\n size: delimiterSizes[context.funcName].size,\n mclass: delimiterSizes[context.funcName].mclass,\n value: delim.value\n };\n});\n\ndefineFunction([\"\\\\left\", \"\\\\right\"], {\n numArgs: 1\n}, function (context, args) {\n var delim = checkDelimiter(args[0], context);\n\n // \\left and \\right are caught somewhere in Parser.js, which is\n // why this data doesn't match what is in buildHTML.\n return {\n type: \"leftright\",\n value: delim.value\n };\n});\n\ndefineFunction(\"\\\\middle\", {\n numArgs: 1\n}, function (context, args) {\n var delim = checkDelimiter(args[0], context);\n if (!context.parser.leftrightDepth) {\n throw new _ParseError2.default(\"\\\\middle without preceding \\\\left\", delim);\n }\n\n return {\n type: \"middle\",\n value: delim.value\n };\n});\n\n// Sizing functions (handled in Parser.js explicitly, hence no handler)\ndefineFunction([\"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"], 0, null);\n\n// Style changing functions (handled in Parser.js explicitly, hence no\n// handler)\ndefineFunction([\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"], 0, null);\n\n// Old font changing functions\ndefineFunction([\"\\\\rm\", \"\\\\sf\", \"\\\\tt\", \"\\\\bf\", \"\\\\it\"], 0, null);\n\ndefineFunction([\n// styles\n\"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\",\n\n// families\n\"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\", \"\\\\mathtt\",\n\n// aliases\n\"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\"], {\n numArgs: 1,\n greediness: 2\n}, function (context, args) {\n var body = args[0];\n var func = context.funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n font: func.slice(1),\n body: body\n };\n});\n\n// Accents\ndefineFunction([\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\widehat\", \"\\\\widetilde\", \"\\\\overrightarrow\", \"\\\\overleftarrow\", \"\\\\Overrightarrow\", \"\\\\overleftrightarrow\", \"\\\\overgroup\", \"\\\\overlinesegment\", \"\\\\overleftharpoon\", \"\\\\overrightharpoon\"], {\n numArgs: 1\n}, function (context, args) {\n var base = args[0];\n\n var isStretchy = !_utils2.default.contains([\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\"], context.funcName);\n\n var isShifty = !isStretchy || _utils2.default.contains([\"\\\\widehat\", \"\\\\widetilde\"], context.funcName);\n\n return {\n type: \"accent\",\n label: context.funcName,\n isStretchy: isStretchy,\n isShifty: isShifty,\n value: ordargument(base),\n base: base\n };\n});\n\n// Text-mode accents\ndefineFunction([\"\\\\'\", \"\\\\`\", \"\\\\^\", \"\\\\~\", \"\\\\=\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\r\", \"\\\\H\", \"\\\\v\"], {\n numArgs: 1,\n allowedInText: true,\n allowedInMath: false\n}, function (context, args) {\n var base = args[0];\n\n return {\n type: \"accent\",\n label: context.funcName,\n isStretchy: false,\n isShifty: true,\n value: ordargument(base),\n base: base\n };\n});\n\n// Horizontal stretchy braces\ndefineFunction([\"\\\\overbrace\", \"\\\\underbrace\"], {\n numArgs: 1\n}, function (context, args) {\n var base = args[0];\n return {\n type: \"horizBrace\",\n label: context.funcName,\n isOver: /^\\\\over/.test(context.funcName),\n base: base\n };\n});\n\n// Stretchy accents under the body\ndefineFunction([\"\\\\underleftarrow\", \"\\\\underrightarrow\", \"\\\\underleftrightarrow\", \"\\\\undergroup\", \"\\\\underlinesegment\", \"\\\\undertilde\"], {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"accentUnder\",\n label: context.funcName,\n value: ordargument(body),\n body: body\n };\n});\n\n// Stretchy arrows with an optional argument\ndefineFunction([\"\\\\xleftarrow\", \"\\\\xrightarrow\", \"\\\\xLeftarrow\", \"\\\\xRightarrow\", \"\\\\xleftrightarrow\", \"\\\\xLeftrightarrow\", \"\\\\xhookleftarrow\", \"\\\\xhookrightarrow\", \"\\\\xmapsto\", \"\\\\xrightharpoondown\", \"\\\\xrightharpoonup\", \"\\\\xleftharpoondown\", \"\\\\xleftharpoonup\", \"\\\\xrightleftharpoons\", \"\\\\xleftrightharpoons\", \"\\\\xLongequal\", \"\\\\xtwoheadrightarrow\", \"\\\\xtwoheadleftarrow\", \"\\\\xLongequal\", \"\\\\xtofrom\"], {\n numArgs: 1,\n numOptionalArgs: 1\n}, function (context, args) {\n var below = args[0];\n var body = args[1];\n return {\n type: \"xArrow\", // x for extensible\n label: context.funcName,\n body: body,\n below: below\n };\n});\n\n// enclose\ndefineFunction([\"\\\\cancel\", \"\\\\bcancel\", \"\\\\xcancel\", \"\\\\sout\", \"\\\\fbox\"], {\n numArgs: 1\n}, function (context, args) {\n var body = args[0];\n return {\n type: \"enclose\",\n label: context.funcName,\n body: body\n };\n});\n\n// Infix generalized fractions\ndefineFunction([\"\\\\over\", \"\\\\choose\", \"\\\\atop\"], {\n numArgs: 0,\n infix: true\n}, function (context) {\n var replaceWith = void 0;\n switch (context.funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n case \"\\\\atop\":\n replaceWith = \"\\\\\\\\atopfrac\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n replaceWith: replaceWith,\n token: context.token\n };\n});\n\n// Row breaks for aligned data\ndefineFunction([\"\\\\\\\\\", \"\\\\cr\"], {\n numArgs: 0,\n numOptionalArgs: 1,\n argTypes: [\"size\"]\n}, function (context, args) {\n var size = args[0];\n return {\n type: \"cr\",\n size: size\n };\n});\n\n// Environment delimiters\ndefineFunction([\"\\\\begin\", \"\\\\end\"], {\n numArgs: 1,\n argTypes: [\"text\"]\n}, function (context, args) {\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new _ParseError2.default(\"Invalid environment name\", nameGroup);\n }\n var name = \"\";\n for (var i = 0; i < nameGroup.value.length; ++i) {\n name += nameGroup.value[i].value;\n }\n return {\n type: \"environment\",\n name: name,\n nameGroup: nameGroup\n };\n});\n\n},{\"./ParseError\":29,\"./ParseNode\":30,\"./utils\":51}],44:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Predefined macros for KaTeX.\n * This can be used to define some commands in terms of others.\n */\n\n// This function might one day accept additional argument and do more things.\nfunction defineMacro(name, body) {\n module.exports[name] = body;\n}\n\n//////////////////////////////////////////////////////////////////////\n// basics\ndefineMacro(\"\\\\bgroup\", \"{\");\ndefineMacro(\"\\\\egroup\", \"}\");\ndefineMacro(\"\\\\begingroup\", \"{\");\ndefineMacro(\"\\\\endgroup\", \"}\");\n\n// We don't distinguish between math and nonmath kerns.\n// (In TeX, the mu unit works only with \\mkern.)\ndefineMacro(\"\\\\mkern\", \"\\\\kern\");\n\n//////////////////////////////////////////////////////////////////////\n// amsmath.sty\n\n// \\def\\overset#1#2{\\binrel@{#2}\\binrel@@{\\mathop{\\kern\\z@#2}\\limits^{#1}}}\ndefineMacro(\"\\\\overset\", \"\\\\mathop{#2}\\\\limits^{#1}\");\ndefineMacro(\"\\\\underset\", \"\\\\mathop{#2}\\\\limits_{#1}\");\n\n// \\newcommand{\\boxed}[1]{\\fbox{\\m@th$\\displaystyle#1$}}\ndefineMacro(\"\\\\boxed\", \"\\\\fbox{\\\\displaystyle{#1}}\");\n\n//TODO: When implementing \\dots, should ideally add the \\DOTSB indicator\n// into the macro, to indicate these are binary operators.\n// \\def\\iff{\\DOTSB\\;\\Longleftrightarrow\\;}\n// \\def\\implies{\\DOTSB\\;\\Longrightarrow\\;}\n// \\def\\impliedby{\\DOTSB\\;\\Longleftarrow\\;}\ndefineMacro(\"\\\\iff\", \"\\\\;\\\\Longleftrightarrow\\\\;\");\ndefineMacro(\"\\\\implies\", \"\\\\;\\\\Longrightarrow\\\\;\");\ndefineMacro(\"\\\\impliedby\", \"\\\\;\\\\Longleftarrow\\\\;\");\n\n//////////////////////////////////////////////////////////////////////\n// mathtools.sty\n\n//\\providecommand\\ordinarycolon{:}\ndefineMacro(\"\\\\ordinarycolon\", \":\");\n//\\def\\vcentcolon{\\mathrel{\\mathop\\ordinarycolon}}\n//TODO(edemaine): Not yet centered. Fix via \\raisebox or #726\ndefineMacro(\"\\\\vcentcolon\", \"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\");\n// \\providecommand*\\dblcolon{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}\ndefineMacro(\"\\\\dblcolon\", \"\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon\");\n// \\providecommand*\\coloneqq{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\coloneqq\", \"\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=\");\n// \\providecommand*\\Coloneqq{\\dblcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\Coloneqq\", \"\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=\");\n// \\providecommand*\\coloneq{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\coloneq\", \"\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}\");\n// \\providecommand*\\Coloneq{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\Coloneq\", \"\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}\");\n// \\providecommand*\\eqqcolon{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqqcolon\", \"=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon\");\n// \\providecommand*\\Eqqcolon{=\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqqcolon\", \"=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon\");\n// \\providecommand*\\eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqcolon\", \"\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon\");\n// \\providecommand*\\Eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqcolon\", \"\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon\");\n// \\providecommand*\\colonapprox{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\colonapprox\", \"\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx\");\n// \\providecommand*\\Colonapprox{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\Colonapprox\", \"\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx\");\n// \\providecommand*\\colonsim{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\colonsim\", \"\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim\");\n// \\providecommand*\\Colonsim{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\Colonsim\", \"\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim\");\n\n//////////////////////////////////////////////////////////////////////\n// colonequals.sty\n\n// Alternate names for mathtools's macros:\ndefineMacro(\"\\\\ratio\", \"\\\\vcentcolon\");\ndefineMacro(\"\\\\coloncolon\", \"\\\\dblcolon\");\ndefineMacro(\"\\\\colonequals\", \"\\\\coloneqq\");\ndefineMacro(\"\\\\coloncolonequals\", \"\\\\Coloneqq\");\ndefineMacro(\"\\\\equalscolon\", \"\\\\eqqcolon\");\ndefineMacro(\"\\\\equalscoloncolon\", \"\\\\Eqqcolon\");\ndefineMacro(\"\\\\colonminus\", \"\\\\coloneq\");\ndefineMacro(\"\\\\coloncolonminus\", \"\\\\Coloneq\");\ndefineMacro(\"\\\\minuscolon\", \"\\\\eqcolon\");\ndefineMacro(\"\\\\minuscoloncolon\", \"\\\\Eqcolon\");\n// \\colonapprox name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonapprox\", \"\\\\Colonapprox\");\n// \\colonsim name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonsim\", \"\\\\Colonsim\");\n\n// Additional macros, implemented by analogy with mathtools definitions:\ndefineMacro(\"\\\\simcolon\", \"\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon\");\ndefineMacro(\"\\\\simcoloncolon\", \"\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon\");\ndefineMacro(\"\\\\approxcolon\", \"\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon\");\ndefineMacro(\"\\\\approxcoloncolon\", \"\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon\");\n\n},{}],45:[function(require,module,exports){\n\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `` and `` tags).\n */\nvar MathNode = function () {\n function MathNode(type, children) {\n (0, _classCallCheck3.default)(this, MathNode);\n\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n }\n\n /**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\n\n\n (0, _createClass3.default)(MathNode, [{\n key: \"setAttribute\",\n value: function setAttribute(name, value) {\n this.attributes[name] = value;\n }\n\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n\n }, {\n key: \"toNode\",\n value: function toNode() {\n var node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", this.type);\n\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n }\n\n /**\n * Converts the math node into an HTML markup string.\n */\n\n }, {\n key: \"toMarkup\",\n value: function toMarkup() {\n var markup = \"<\" + this.type;\n\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += _utils2.default.escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n\n markup += \">\";\n\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n }\n }]);\n return MathNode;\n}();\n\n/**\n * This node represents a piece of text.\n */\n/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work simlarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\n\nvar TextNode = function () {\n function TextNode(text) {\n (0, _classCallCheck3.default)(this, TextNode);\n\n this.text = text;\n }\n\n /**\n * Converts the text node into a DOM text node.\n */\n\n\n (0, _createClass3.default)(TextNode, [{\n key: \"toNode\",\n value: function toNode() {\n return document.createTextNode(this.text);\n }\n\n /**\n * Converts the text node into HTML markup (which is just the text itself).\n */\n\n }, {\n key: \"toMarkup\",\n value: function toMarkup() {\n return _utils2.default.escape(this.text);\n }\n }]);\n return TextNode;\n}();\n\nmodule.exports = {\n MathNode: MathNode,\n TextNode: TextNode\n};\n\n},{\"./utils\":51,\"babel-runtime/helpers/classCallCheck\":4,\"babel-runtime/helpers/createClass\":5}],46:[function(require,module,exports){\n'use strict';\n\nvar _Parser = require('./Parser');\n\nvar _Parser2 = _interopRequireDefault(_Parser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nvar parseTree = function parseTree(toParse, settings) {\n if (!(typeof toParse === 'string' || toParse instanceof String)) {\n throw new TypeError('KaTeX can only parse string typed expression');\n }\n var parser = new _Parser2.default(toParse, settings);\n\n return parser.parse();\n}; /**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n\nmodule.exports = parseTree;\n\n},{\"./Parser\":31}],47:[function(require,module,exports){\n\"use strict\";\n\n/**\n * This file provides support to buildMathML.js and buildHTML.js\n * for stretchy wide elements rendered from SVG files\n * and other CSS trickery.\n */\n\nvar buildCommon = require(\"./buildCommon\");\nvar mathMLTree = require(\"./mathMLTree\");\nvar utils = require(\"./utils\");\n\nvar stretchyCodePoint = {\n widehat: \"^\",\n widetilde: \"~\",\n undertilde: \"~\",\n overleftarrow: \"\\u2190\",\n underleftarrow: \"\\u2190\",\n xleftarrow: \"\\u2190\",\n overrightarrow: \"\\u2192\",\n underrightarrow: \"\\u2192\",\n xrightarrow: \"\\u2192\",\n underbrace: \"\\u23B5\",\n overbrace: \"\\u23DE\",\n overleftrightarrow: \"\\u2194\",\n underleftrightarrow: \"\\u2194\",\n xleftrightarrow: \"\\u2194\",\n Overrightarrow: \"\\u21D2\",\n xRightarrow: \"\\u21D2\",\n overleftharpoon: \"\\u21BC\",\n xleftharpoonup: \"\\u21BC\",\n overrightharpoon: \"\\u21C0\",\n xrightharpoonup: \"\\u21C0\",\n xLeftarrow: \"\\u21D0\",\n xLeftrightarrow: \"\\u21D4\",\n xhookleftarrow: \"\\u21A9\",\n xhookrightarrow: \"\\u21AA\",\n xmapsto: \"\\u21A6\",\n xrightharpoondown: \"\\u21C1\",\n xleftharpoondown: \"\\u21BD\",\n xrightleftharpoons: \"\\u21CC\",\n xleftrightharpoons: \"\\u21CB\",\n xtwoheadleftarrow: \"\\u219E\",\n xtwoheadrightarrow: \"\\u21A0\",\n xLongequal: \"=\",\n xtofrom: \"\\u21C4\"\n};\n\nvar mathMLnode = function mathMLnode(label) {\n var node = new mathMLTree.MathNode(\"mo\", [new mathMLTree.TextNode(stretchyCodePoint[label.substr(1)])]);\n node.setAttribute(\"stretchy\", \"true\");\n return node;\n};\n\n// In the katexImagesData object just below, the dimensions all\n// correspond to path geometry inside the relevant SVG.\n// For example, \\rightarrow uses the same arrowhead as glyph U+2192\n// from the KaTeX Main font. The scaling factor is 1000.\n// That is, inside the font, that arrowhead is 522 units tall, which\n// corresponds to 0.522 em inside the document.\n// And for extensible arrows, we split that distance around the math axis.\n\nvar katexImagesData = {\n // height, depth, imageName, minWidth\n overleftarrow: [0.522, 0, \"leftarrow\", 0.5],\n underleftarrow: [0.522, 0, \"leftarrow\", 0.5],\n xleftarrow: [0.261, 0.261, \"leftarrow\", 0.783],\n overrightarrow: [0.522, 0, \"rightarrow\", 0.5],\n underrightarrow: [0.522, 0, \"rightarrow\", 0.5],\n xrightarrow: [0.261, 0.261, \"rightarrow\", 0.783],\n overbrace: [0.548, 0, \"overbrace\", 1.6],\n underbrace: [0.548, 0, \"underbrace\", 1.6],\n overleftrightarrow: [0.522, 0, \"leftrightarrow\", 0.5],\n underleftrightarrow: [0.522, 0, \"leftrightarrow\", 0.5],\n xleftrightarrow: [0.261, 0.261, \"leftrightarrow\", 0.783],\n Overrightarrow: [0.56, 0, \"doublerightarrow\", 0.5],\n xLeftarrow: [0.28, 0.28, \"doubleleftarrow\", 0.783],\n xRightarrow: [0.28, 0.28, \"doublerightarrow\", 0.783],\n xLeftrightarrow: [0.28, 0.28, \"doubleleftrightarrow\", 0.955],\n overleftharpoon: [0.522, 0, \"leftharpoon\", 0.5],\n overrightharpoon: [0.522, 0, \"rightharpoon\", 0.5],\n xleftharpoonup: [0.261, 0.261, \"leftharpoon\", 0.783],\n xrightharpoonup: [0.261, 0.261, \"rightharpoon\", 0.783],\n xhookleftarrow: [0.261, 0.261, \"hookleftarrow\", 0.87],\n xhookrightarrow: [0.261, 0.261, \"hookrightarrow\", 0.87],\n overlinesegment: [0.414, 0, \"linesegment\", 0.5],\n underlinesegment: [0.414, 0, \"linesegment\", 0.5],\n xmapsto: [0.261, 0.261, \"mapsto\", 0.783],\n xrightharpoondown: [0.261, 0.261, \"rightharpoondown\", 0.783],\n xleftharpoondown: [0.261, 0.261, \"leftharpoondown\", 0.783],\n xrightleftharpoons: [0.358, 0.358, \"rightleftharpoons\", 0.716],\n xleftrightharpoons: [0.358, 0.358, \"leftrightharpoons\", 0.716],\n overgroup: [0.342, 0, \"overgroup\", 0.87],\n undergroup: [0.342, 0, \"undergroup\", 0.87],\n xtwoheadleftarrow: [0.167, 0.167, \"twoheadleftarrow\", 0.86],\n xtwoheadrightarrow: [0.167, 0.167, \"twoheadrightarrow\", 0.86],\n xLongequal: [0.167, 0.167, \"longequal\", 0.5],\n xtofrom: [0.264, 0.264, \"tofrom\", 0.86]\n};\n\n// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts.\n// Copyright (c) 2009-2010, Design Science, Inc. ()\n// Copyright (c) 2014-2017 Khan Academy ()\n// Licensed under the SIL Open Font License, Version 1.1.\n// See \\nhttp://scripts.sil.org/OFL\n\n// Nested SVGs\n// Many of the KaTeX SVG images contain a nested SVG. This is done to\n// achieve a stretchy image while avoiding distortion of arrowheads or\n// brace corners.\n\n// The inner SVG typically contains a very long (400 em) arrow.\n\n// The outer SVG acts like a window that exposes only part of the inner SVG.\n// The outer SVG will grow or shrink to match the dimensions set by CSS.\n\n// The inner SVG always has a longer, thinner aspect ratio than the outer\n// SVG. After the inner SVG fills 100% of the height of the outer SVG,\n// there is a long arrow shaft left over. That left-over shaft is not shown.\n// Instead, it is sliced off because the inner SVG is set to\n// \"preserveAspectRatio='... slice'\".\n\n// Thus, the reader sees an arrow that matches the subject matter width\n// without distortion.\n\n// Some functions, such as \\cancel, need to vary their aspect ratio. These\n// functions do not get the nested SVG treatment.\n\n// Second Brush Stroke\n// Low resolution monitors struggle to display images in fine detail.\n// So browsers apply anti-aliasing. A long straight arrow shaft therefore\n// will sometimes appear as if it has a blurred edge.\n\n// To mitigate this, these SVG files contain a second \"brush-stroke\" on the\n// arrow shafts. That is, a second long thin rectangular SVG path has been\n// written directly on top of each arrow shaft. This reinforcement causes\n// some of the screen pixels to display as black instead of the anti-aliased\n// gray pixel that a single path would generate. So we get arrow shafts\n// whose edges appear to be sharper.\n\nvar svgPath = {\n doubleleftarrow: \"\",\n\n doublerightarrow: \"\",\n\n leftarrow: \"\",\n\n rightarrow: \"\"\n};\n\nvar innerSVG = {\n // Since bcancel's SVG is inline and it omits the viewBox attribute,\n // it's stroke-width will not vary with span area.\n bcancel: \"\",\n\n cancel: \"\",\n\n // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main\n doubleleftarrow: \">\" + svgPath[\"doubleleftarrow\"] + \"\",\n\n // doubleleftrightarrow is from glyph U+21D4 in font KaTeX Main\n doubleleftrightarrow: \">\" + svgPath[\"doubleleftarrow\"] + \"\\n\" + svgPath[\"doublerightarrow\"] + \"\",\n\n // doublerightarrow is from glyph U+21D2 in font KaTeX Main\n doublerightarrow: \">\" + svgPath[\"doublerightarrow\"] + \"\",\n\n // hookleftarrow is from glyph U+21A9 in font KaTeX Main\n hookleftarrow: \">\" + svgPath[\"leftarrow\"] + \"\\n\",\n\n // hookrightarrow is from glyph U+21AA in font KaTeX Main\n hookrightarrow: \">\" + svgPath[\"rightarrow\"] + \"\",\n\n // leftarrow is from glyph U+2190 in font KaTeX Main\n leftarrow: \">\" + svgPath[\"leftarrow\"] + \"\",\n\n // leftharpoon is from glyph U+21BD in font KaTeX Main\n leftharpoon: \">\",\n\n // leftharpoondown is from glyph U+21BD in font KaTeX Main\n leftharpoondown: \">\",\n\n // leftrightarrow is from glyph U+2194 in font KaTeX Main\n leftrightarrow: \">\" + svgPath[\"leftarrow\"] + \"\\n\" + svgPath[\"rightarrow\"] + \"\",\n\n // leftrightharpoons is from glyphs U+21BC/21B1 in font KaTeX Main\n leftrightharpoons: \">\\n\",\n\n linesegment: \">\\n\",\n\n longequal: \" viewBox='0 0 100 334' preserveAspectRatio='none'>\\n\",\n\n // mapsto is from glyph U+21A6 in font KaTeX Main\n mapsto: \">\" + svgPath[\"rightarrow\"] + \"\",\n\n // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular\n overbrace: \">\\n\",\n\n // overgroup is from the MnSymbol package (public domain)\n overgroup: \">\",\n\n // rightarrow is from glyph U+2192 in font KaTeX Main\n rightarrow: \">\" + svgPath[\"rightarrow\"] + \"\",\n\n // rightharpoon is from glyph U+21C0 in font KaTeX Main\n rightharpoon: \">\",\n\n // rightharpoondown is from glyph U+21C1 in font KaTeX Main\n rightharpoondown: \">\",\n\n // rightleftharpoons is from glyph U+21CC in font KaTeX Main\n rightleftharpoons: \">\",\n\n // tilde1 is a modified version of a glyph from the MnSymbol package\n tilde1: \" viewBox='0 0 600 260' preserveAspectRatio='none'>\\n\",\n\n // Ditto tilde2, tilde3, and tilde 4\n tilde2: \" viewBox='0 0 1033 286' preserveAspectRatio='none'>\\n\",\n\n tilde3: \" viewBox='0 0 2339 306' preserveAspectRatio='none'>\\n\",\n\n tilde4: \" viewBox='0 0 2340 312' preserveAspectRatio='none'>\\n\",\n\n // tofrom is from glyph U+21C4 in font KaTeX AMS Regular\n tofrom: \">\",\n\n // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular\n twoheadleftarrow: \">\\n\",\n\n // twoheadrightarrow is from glyph U+21A0 in font KaTeX AMS Regular\n twoheadrightarrow: \">\\n\",\n\n // underbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular\n underbrace: \">\\n\",\n\n // undergroup is from the MnSymbol package (public domain)\n undergroup: \">\",\n\n // widehat1 is a modified version of a glyph from the MnSymbol package\n widehat1: \" viewBox='0 0 1062 239' preserveAspectRatio='none'>\\n\",\n\n // Ditto widehat2, widehat3, and widehat4\n widehat2: \" viewBox='0 0 2364 300' preserveAspectRatio='none'>\\n\",\n\n widehat3: \" viewBox='0 0 2364 360' preserveAspectRatio='none'>\\n\",\n\n widehat4: \" viewBox='0 0 2364 420' preserveAspectRatio='none'>\\n\",\n\n xcancel: \"\\n\"\n};\n\nvar svgSpan = function svgSpan(group, options) {\n // Create a span with inline SVG for the element.\n var label = group.value.label.substr(1);\n var height = 0;\n var depth = 0;\n var imageName = \"\";\n var minWidth = 0;\n\n if (utils.contains([\"widehat\", \"widetilde\", \"undertilde\"], label)) {\n // There are four SVG images available for each function.\n // Choose a taller image when there are more characters.\n var numChars = group.value.value.length;\n if (numChars > 5) {\n height = 0.312;\n imageName = (label === \"widehat\" ? \"widehat\" : \"tilde\") + \"4\";\n } else {\n var imgIndex = [1, 1, 2, 2, 3, 3][numChars];\n if (label === \"widehat\") {\n height = [0, 0.24, 0.30, 0.30, 0.36, 0.36][numChars];\n imageName = \"widehat\" + imgIndex;\n } else {\n height = [0, 0.26, 0.30, 0.30, 0.34, 0.34][numChars];\n imageName = \"tilde\" + imgIndex;\n }\n }\n } else {\n var imgData = katexImagesData[label];\n height = imgData[0];\n depth = imgData[1];\n imageName = imgData[2];\n minWidth = imgData[3];\n }\n\n var span = buildCommon.makeSpan([], [], options);\n span.height = height;\n span.depth = depth;\n var totalHeight = height + depth;\n span.style.height = totalHeight + \"em\";\n if (minWidth > 0) {\n span.style.minWidth = minWidth + \"em\";\n }\n\n span.innerHTML = \"\";\n\n return span;\n};\n\nvar encloseSpan = function encloseSpan(inner, label, pad, options) {\n // Return an image span for \\cancel, \\bcancel, \\xcancel, or \\fbox\n var img = void 0;\n var totalHeight = inner.height + inner.depth + 2 * pad;\n\n if (label === \"fbox\") {\n img = buildCommon.makeSpan([\"stretchy\", label], [], options);\n if (options.color) {\n img.style.borderColor = options.getColor();\n }\n } else {\n img = buildCommon.makeSpan([], [], options);\n img.innerHTML = \"\" + innerSVG[label] + \"\";\n }\n\n img.height = totalHeight;\n img.style.height = totalHeight + \"em\";\n\n return img;\n};\n\nmodule.exports = {\n encloseSpan: encloseSpan,\n mathMLnode: mathMLnode,\n svgSpan: svgSpan\n};\n\n},{\"./buildCommon\":34,\"./mathMLTree\":45,\"./utils\":51}],48:[function(require,module,exports){\n\"use strict\";\n\n/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n\nmodule.exports = {\n math: {},\n text: {}\n};\n\nfunction defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) {\n module.exports[mode][name] = {\n font: font,\n group: group,\n replace: replace\n };\n\n if (acceptUnicodeChar) {\n module.exports[mode][replace] = module.exports[mode][name];\n }\n}\n\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n\n// groups:\nvar accent = \"accent\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n\n// Now comes the symbol table\n\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\");\ndefineSymbol(math, main, rel, \"\\u227A\", \"\\\\prec\");\ndefineSymbol(math, main, rel, \"\\u227B\", \"\\\\succ\");\ndefineSymbol(math, main, rel, \"\\u223C\", \"\\\\sim\");\ndefineSymbol(math, main, rel, \"\\u22A5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2AAF\", \"\\\\preceq\");\ndefineSymbol(math, main, rel, \"\\u2AB0\", \"\\\\succeq\");\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\");\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\");\ndefineSymbol(math, main, rel, \"\\u226A\", \"\\\\ll\");\ndefineSymbol(math, main, rel, \"\\u226B\", \"\\\\gg\");\ndefineSymbol(math, main, rel, \"\\u224D\", \"\\\\asymp\");\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22C8\", \"\\\\bowtie\");\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\");\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\");\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\");\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\");\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\");\ndefineSymbol(math, main, rel, \"\\u220B\", \"\\\\ni\");\ndefineSymbol(math, main, rel, \"\\u221D\", \"\\\\propto\");\ndefineSymbol(math, main, rel, \"\\u22A2\", \"\\\\vdash\");\ndefineSymbol(math, main, rel, \"\\u22A3\", \"\\\\dashv\");\ndefineSymbol(math, main, rel, \"\\u220B\", \"\\\\owns\");\n\n// Punctuation\ndefineSymbol(math, main, punct, \".\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22C5\", \"\\\\cdotp\");\n\n// Misc Symbols\ndefineSymbol(math, main, textord, \"#\", \"\\\\#\");\ndefineSymbol(text, main, textord, \"#\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"&\", \"\\\\&\");\ndefineSymbol(text, main, textord, \"&\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\");\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\");\ndefineSymbol(math, main, textord, \"\\u210F\", \"\\\\hbar\");\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\");\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\");\ndefineSymbol(math, main, textord, \"\\u266D\", \"\\\\flat\");\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\");\ndefineSymbol(math, main, textord, \"\\u266E\", \"\\\\natural\");\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\");\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\");\ndefineSymbol(math, main, textord, \"\\u266F\", \"\\\\sharp\");\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\");\ndefineSymbol(math, main, textord, \"\\u211C\", \"\\\\Re\");\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\");\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\");\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\");\n\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\textdagger\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\textdaggerdbl\");\n\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23B1\", \"\\\\rmoustache\");\ndefineSymbol(math, main, open, \"\\u23B0\", \"\\\\lmoustache\");\ndefineSymbol(math, main, close, \"\\u27EF\", \"\\\\rgroup\");\ndefineSymbol(math, main, open, \"\\u27EE\", \"\\\\lgroup\");\n\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\");\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\");\ndefineSymbol(math, main, bin, \"\\u228E\", \"\\\\uplus\");\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\");\ndefineSymbol(math, main, bin, \"\\u25EF\", \"\\\\bigcirc\");\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\");\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\");\ndefineSymbol(math, main, bin, \"\\u2A3F\", \"\\\\amalg\");\n\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27F5\", \"\\\\longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21D0\", \"\\\\Leftarrow\");\ndefineSymbol(math, main, rel, \"\\u27F8\", \"\\\\Longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u27F6\", \"\\\\longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21D2\", \"\\\\Rightarrow\");\ndefineSymbol(math, main, rel, \"\\u27F9\", \"\\\\Longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27F7\", \"\\\\longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21D4\", \"\\\\Leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27FA\", \"\\\\Longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21A6\", \"\\\\mapsto\");\ndefineSymbol(math, main, rel, \"\\u27FC\", \"\\\\longmapsto\");\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\");\ndefineSymbol(math, main, rel, \"\\u21A9\", \"\\\\hookleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21AA\", \"\\\\hookrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\");\ndefineSymbol(math, main, rel, \"\\u21BC\", \"\\\\leftharpoonup\");\ndefineSymbol(math, main, rel, \"\\u21C0\", \"\\\\rightharpoonup\");\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\");\ndefineSymbol(math, main, rel, \"\\u21BD\", \"\\\\leftharpoondown\");\ndefineSymbol(math, main, rel, \"\\u21C1\", \"\\\\rightharpoondown\");\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\");\ndefineSymbol(math, main, rel, \"\\u21CC\", \"\\\\rightleftharpoons\");\n\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226E\", \"\\\\nless\");\ndefineSymbol(math, ams, rel, \"\\uE010\", \"\\\\nleqslant\");\ndefineSymbol(math, ams, rel, \"\\uE011\", \"\\\\nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2A87\", \"\\\\lneq\");\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\");\ndefineSymbol(math, ams, rel, \"\\uE00C\", \"\\\\lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22E6\", \"\\\\lnsim\");\ndefineSymbol(math, ams, rel, \"\\u2A89\", \"\\\\lnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\");\ndefineSymbol(math, ams, rel, \"\\u22E0\", \"\\\\npreceq\");\ndefineSymbol(math, ams, rel, \"\\u22E8\", \"\\\\precnsim\");\ndefineSymbol(math, ams, rel, \"\\u2AB9\", \"\\\\precnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\");\ndefineSymbol(math, ams, rel, \"\\uE006\", \"\\\\nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\");\ndefineSymbol(math, ams, rel, \"\\u22AC\", \"\\\\nvdash\");\ndefineSymbol(math, ams, rel, \"\\u22AD\", \"\\\\nvDash\");\ndefineSymbol(math, ams, rel, \"\\u22EA\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22EC\", \"\\\\ntrianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u228A\", \"\\\\subsetneq\");\ndefineSymbol(math, ams, rel, \"\\uE01A\", \"\\\\varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2ACB\", \"\\\\subsetneqq\");\ndefineSymbol(math, ams, rel, \"\\uE017\", \"\\\\varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226F\", \"\\\\ngtr\");\ndefineSymbol(math, ams, rel, \"\\uE00F\", \"\\\\ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\uE00E\", \"\\\\ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2A88\", \"\\\\gneq\");\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\");\ndefineSymbol(math, ams, rel, \"\\uE00D\", \"\\\\gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22E7\", \"\\\\gnsim\");\ndefineSymbol(math, ams, rel, \"\\u2A8A\", \"\\\\gnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\");\ndefineSymbol(math, ams, rel, \"\\u22E1\", \"\\\\nsucceq\");\ndefineSymbol(math, ams, rel, \"\\u22E9\", \"\\\\succnsim\");\ndefineSymbol(math, ams, rel, \"\\u2ABA\", \"\\\\succnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\");\ndefineSymbol(math, ams, rel, \"\\uE007\", \"\\\\nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\");\ndefineSymbol(math, ams, rel, \"\\u22AF\", \"\\\\nVDash\");\ndefineSymbol(math, ams, rel, \"\\u22EB\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ED\", \"\\\\ntrianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\uE018\", \"\\\\nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228B\", \"\\\\supsetneq\");\ndefineSymbol(math, ams, rel, \"\\uE01B\", \"\\\\varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2ACC\", \"\\\\supsetneqq\");\ndefineSymbol(math, ams, rel, \"\\uE019\", \"\\\\varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22AE\", \"\\\\nVdash\");\ndefineSymbol(math, ams, rel, \"\\u2AB5\", \"\\\\precneqq\");\ndefineSymbol(math, ams, rel, \"\\u2AB6\", \"\\\\succneqq\");\ndefineSymbol(math, ams, rel, \"\\uE016\", \"\\\\nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22B4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22B5\", \"\\\\unrhd\");\n\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219A\", \"\\\\nleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219B\", \"\\\\nrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21CD\", \"\\\\nLeftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21CF\", \"\\\\nRightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21AE\", \"\\\\nleftrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21CE\", \"\\\\nLeftrightarrow\");\n\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25B3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210F\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25BD\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25CA\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24C8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\xAE\", \"\\\\circledR\");\ndefineSymbol(text, ams, textord, \"\\xAE\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\");\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\");\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\");\ndefineSymbol(math, ams, textord, \"k\", \"\\\\Bbbk\");\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25B2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25BC\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25A0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29EB\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\");\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\");\ndefineSymbol(math, ams, textord, \"\\xF0\", \"\\\\eth\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25A1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25A1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25CA\", \"\\\\Diamond\");\ndefineSymbol(math, ams, textord, \"\\xA5\", \"\\\\yen\");\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\");\ndefineSymbol(text, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\");\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\");\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\");\n\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03DD\", \"\\\\digamma\");\ndefineSymbol(math, ams, textord, \"\\u03F0\", \"\\\\varkappa\");\n\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250C\", \"\\\\ulcorner\");\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\urcorner\");\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\llcorner\");\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\lrcorner\");\n\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\");\ndefineSymbol(math, ams, rel, \"\\u2A7D\", \"\\\\leqslant\");\ndefineSymbol(math, ams, rel, \"\\u2A95\", \"\\\\eqslantless\");\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\");\ndefineSymbol(math, ams, rel, \"\\u2A85\", \"\\\\lessapprox\");\ndefineSymbol(math, ams, rel, \"\\u224A\", \"\\\\approxeq\");\ndefineSymbol(math, ams, bin, \"\\u22D6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22D8\", \"\\\\lll\");\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\");\ndefineSymbol(math, ams, rel, \"\\u22DA\", \"\\\\lesseqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2A8B\", \"\\\\lesseqqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u223D\", \"\\\\backsim\");\ndefineSymbol(math, ams, rel, \"\\u22CD\", \"\\\\backsimeq\");\ndefineSymbol(math, ams, rel, \"\\u2AC5\", \"\\\\subseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22D0\", \"\\\\Subset\");\ndefineSymbol(math, ams, rel, \"\\u228F\", \"\\\\sqsubset\");\ndefineSymbol(math, ams, rel, \"\\u227C\", \"\\\\preccurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22DE\", \"\\\\curlyeqprec\");\ndefineSymbol(math, ams, rel, \"\\u227E\", \"\\\\precsim\");\ndefineSymbol(math, ams, rel, \"\\u2AB7\", \"\\\\precapprox\");\ndefineSymbol(math, ams, rel, \"\\u22B2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22B4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22A8\", \"\\\\vDash\");\ndefineSymbol(math, ams, rel, \"\\u22AA\", \"\\\\Vvdash\");\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224F\", \"\\\\bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u224E\", \"\\\\Bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\");\ndefineSymbol(math, ams, rel, \"\\u2A7E\", \"\\\\geqslant\");\ndefineSymbol(math, ams, rel, \"\\u2A96\", \"\\\\eqslantgtr\");\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\");\ndefineSymbol(math, ams, rel, \"\\u2A86\", \"\\\\gtrapprox\");\ndefineSymbol(math, ams, bin, \"\\u22D7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22D9\", \"\\\\ggg\");\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\");\ndefineSymbol(math, ams, rel, \"\\u22DB\", \"\\\\gtreqless\");\ndefineSymbol(math, ams, rel, \"\\u2A8C\", \"\\\\gtreqqless\");\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\");\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\");\ndefineSymbol(math, ams, rel, \"\\u225C\", \"\\\\triangleq\");\ndefineSymbol(math, ams, rel, \"\\u223C\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2AC6\", \"\\\\supseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22D1\", \"\\\\Supset\");\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\");\ndefineSymbol(math, ams, rel, \"\\u227D\", \"\\\\succcurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22DF\", \"\\\\curlyeqsucc\");\ndefineSymbol(math, ams, rel, \"\\u227F\", \"\\\\succsim\");\ndefineSymbol(math, ams, rel, \"\\u2AB8\", \"\\\\succapprox\");\ndefineSymbol(math, ams, rel, \"\\u22B3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22B5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22A9\", \"\\\\Vdash\");\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226C\", \"\\\\between\");\ndefineSymbol(math, ams, rel, \"\\u22D4\", \"\\\\pitchfork\");\ndefineSymbol(math, ams, rel, \"\\u221D\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25C0\", \"\\\\blacktriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\");\ndefineSymbol(math, ams, rel, \"\\u220D\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25B6\", \"\\\\blacktriangleright\");\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\");\ndefineSymbol(math, ams, rel, \"\\u22D8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22D9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22B2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22B3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\");\ndefineSymbol(math, main, rel, \"\\u22C8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\");\n\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\");\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22D2\", \"\\\\Cap\");\ndefineSymbol(math, ams, bin, \"\\u22D3\", \"\\\\Cup\");\ndefineSymbol(math, ams, bin, \"\\u2A5E\", \"\\\\doublebarwedge\");\ndefineSymbol(math, ams, bin, \"\\u229F\", \"\\\\boxminus\");\ndefineSymbol(math, ams, bin, \"\\u229E\", \"\\\\boxplus\");\ndefineSymbol(math, ams, bin, \"\\u22C7\", \"\\\\divideontimes\");\ndefineSymbol(math, ams, bin, \"\\u22C9\", \"\\\\ltimes\");\ndefineSymbol(math, ams, bin, \"\\u22CA\", \"\\\\rtimes\");\ndefineSymbol(math, ams, bin, \"\\u22CB\", \"\\\\leftthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22CC\", \"\\\\rightthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22CF\", \"\\\\curlywedge\");\ndefineSymbol(math, ams, bin, \"\\u22CE\", \"\\\\curlyvee\");\ndefineSymbol(math, ams, bin, \"\\u229D\", \"\\\\circleddash\");\ndefineSymbol(math, ams, bin, \"\\u229B\", \"\\\\circledast\");\ndefineSymbol(math, ams, bin, \"\\u22C5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22BA\", \"\\\\intercal\");\ndefineSymbol(math, ams, bin, \"\\u22D2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22D3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22A0\", \"\\\\boxtimes\");\n\n// AMS Arrows\ndefineSymbol(math, ams, rel, \"\\u21E2\", \"\\\\dashrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21E0\", \"\\\\dashleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21C7\", \"\\\\leftleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21C6\", \"\\\\leftrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21DA\", \"\\\\Lleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219E\", \"\\\\twoheadleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21A2\", \"\\\\leftarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21AB\", \"\\\\looparrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21CB\", \"\\\\leftrightharpoons\");\ndefineSymbol(math, ams, rel, \"\\u21B6\", \"\\\\curvearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21BA\", \"\\\\circlearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21B0\", \"\\\\Lsh\");\ndefineSymbol(math, ams, rel, \"\\u21C8\", \"\\\\upuparrows\");\ndefineSymbol(math, ams, rel, \"\\u21BF\", \"\\\\upharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u21C3\", \"\\\\downharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u22B8\", \"\\\\multimap\");\ndefineSymbol(math, ams, rel, \"\\u21AD\", \"\\\\leftrightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21C9\", \"\\\\rightrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21C4\", \"\\\\rightleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21A0\", \"\\\\twoheadrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21A3\", \"\\\\rightarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21AC\", \"\\\\looparrowright\");\ndefineSymbol(math, ams, rel, \"\\u21B7\", \"\\\\curvearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21BB\", \"\\\\circlearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21B1\", \"\\\\Rsh\");\ndefineSymbol(math, ams, rel, \"\\u21CA\", \"\\\\downdownarrows\");\ndefineSymbol(math, ams, rel, \"\\u21BE\", \"\\\\upharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21C2\", \"\\\\downharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21DD\", \"\\\\rightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21DD\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21DB\", \"\\\\Rrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21BE\", \"\\\\restriction\");\n\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\textdollar\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(text, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\textunderscore\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\");\ndefineSymbol(math, main, textord, \"\\u221E\", \"\\\\infty\");\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25B3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(math, main, textord, \"\\u039B\", \"\\\\Lambda\", true);\ndefineSymbol(math, main, textord, \"\\u039E\", \"\\\\Xi\", true);\ndefineSymbol(math, main, textord, \"\\u03A0\", \"\\\\Pi\", true);\ndefineSymbol(math, main, textord, \"\\u03A3\", \"\\\\Sigma\", true);\ndefineSymbol(math, main, textord, \"\\u03A5\", \"\\\\Upsilon\", true);\ndefineSymbol(math, main, textord, \"\\u03A6\", \"\\\\Phi\", true);\ndefineSymbol(math, main, textord, \"\\u03A8\", \"\\\\Psi\", true);\ndefineSymbol(math, main, textord, \"\\u03A9\", \"\\\\Omega\", true);\ndefineSymbol(math, main, textord, \"\\xAC\", \"\\\\neg\");\ndefineSymbol(math, main, textord, \"\\xAC\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22A4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22A5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03B1\", \"\\\\alpha\", true);\ndefineSymbol(math, main, mathord, \"\\u03B2\", \"\\\\beta\", true);\ndefineSymbol(math, main, mathord, \"\\u03B3\", \"\\\\gamma\", true);\ndefineSymbol(math, main, mathord, \"\\u03B4\", \"\\\\delta\", true);\ndefineSymbol(math, main, mathord, \"\\u03F5\", \"\\\\epsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03B6\", \"\\\\zeta\", true);\ndefineSymbol(math, main, mathord, \"\\u03B7\", \"\\\\eta\", true);\ndefineSymbol(math, main, mathord, \"\\u03B8\", \"\\\\theta\", true);\ndefineSymbol(math, main, mathord, \"\\u03B9\", \"\\\\iota\", true);\ndefineSymbol(math, main, mathord, \"\\u03BA\", \"\\\\kappa\", true);\ndefineSymbol(math, main, mathord, \"\\u03BB\", \"\\\\lambda\", true);\ndefineSymbol(math, main, mathord, \"\\u03BC\", \"\\\\mu\", true);\ndefineSymbol(math, main, mathord, \"\\u03BD\", \"\\\\nu\", true);\ndefineSymbol(math, main, mathord, \"\\u03BE\", \"\\\\xi\", true);\ndefineSymbol(math, main, mathord, \"\\u03BF\", \"\\\\omicron\", true);\ndefineSymbol(math, main, mathord, \"\\u03C0\", \"\\\\pi\", true);\ndefineSymbol(math, main, mathord, \"\\u03C1\", \"\\\\rho\", true);\ndefineSymbol(math, main, mathord, \"\\u03C3\", \"\\\\sigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03C4\", \"\\\\tau\", true);\ndefineSymbol(math, main, mathord, \"\\u03C5\", \"\\\\upsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03D5\", \"\\\\phi\", true);\ndefineSymbol(math, main, mathord, \"\\u03C7\", \"\\\\chi\", true);\ndefineSymbol(math, main, mathord, \"\\u03C8\", \"\\\\psi\", true);\ndefineSymbol(math, main, mathord, \"\\u03C9\", \"\\\\omega\", true);\ndefineSymbol(math, main, mathord, \"\\u03B5\", \"\\\\varepsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03D1\", \"\\\\vartheta\", true);\ndefineSymbol(math, main, mathord, \"\\u03D6\", \"\\\\varpi\", true);\ndefineSymbol(math, main, mathord, \"\\u03F1\", \"\\\\varrho\", true);\ndefineSymbol(math, main, mathord, \"\\u03C2\", \"\\\\varsigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03C6\", \"\\\\varphi\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\");\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\");\ndefineSymbol(math, main, bin, \"\\u22C5\", \"\\\\cdot\");\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\");\ndefineSymbol(math, main, bin, \"\\xF7\", \"\\\\div\");\ndefineSymbol(math, main, bin, \"\\xB1\", \"\\\\pm\");\ndefineSymbol(math, main, bin, \"\\xD7\", \"\\\\times\");\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\");\ndefineSymbol(math, main, bin, \"\\u222A\", \"\\\\cup\");\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\");\ndefineSymbol(math, main, textord, \"\\u221A\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"(\", \"(\");\ndefineSymbol(math, main, open, \"[\", \"[\");\ndefineSymbol(math, main, open, \"\\u27E8\", \"\\\\langle\");\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \")\", \")\");\ndefineSymbol(math, main, close, \"]\", \"]\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27E9\", \"\\\\rangle\");\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \"<\", \"<\");\ndefineSymbol(math, main, rel, \">\", \">\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\");\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\");\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\");\ndefineSymbol(math, main, rel, \"\\u2209\", \"\\\\notin\");\ndefineSymbol(math, main, rel, \"\\u0338\", \"\\\\not\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\");\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\");\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\");\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\");\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\");\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\");\ndefineSymbol(math, main, rel, \"\\u22A8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\");\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\ne\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\neq\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\");\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\");\ndefineSymbol(math, main, spacing, null, \"\\\\!\");\ndefineSymbol(math, main, spacing, \"\\xA0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\xA0\", \"~\");\ndefineSymbol(math, main, spacing, null, \"\\\\,\");\ndefineSymbol(math, main, spacing, null, \"\\\\:\");\ndefineSymbol(math, main, spacing, null, \"\\\\;\");\ndefineSymbol(math, main, spacing, null, \"\\\\enspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\qquad\");\ndefineSymbol(math, main, spacing, null, \"\\\\quad\");\ndefineSymbol(math, main, spacing, \"\\xA0\", \"\\\\space\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, main, punct, \":\", \"\\\\colon\");\ndefineSymbol(math, ams, bin, \"\\u22BC\", \"\\\\barwedge\");\ndefineSymbol(math, ams, bin, \"\\u22BB\", \"\\\\veebar\");\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\");\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\");\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\");\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\");\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\");\ndefineSymbol(math, ams, bin, \"\\u229A\", \"\\\\circledcirc\");\ndefineSymbol(math, ams, bin, \"\\u22A1\", \"\\\\boxdot\");\ndefineSymbol(math, main, bin, \"\\u25B3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25BD\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22C4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22C6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25C3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25B9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\textbraceleft\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\textbraceright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\");\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\");\ndefineSymbol(text, main, textord, \"<\", \"\\\\textless\"); // in T1 fontenc\ndefineSymbol(text, main, textord, \">\", \"\\\\textgreater\"); // in T1 fontenc\ndefineSymbol(math, main, open, \"\\u230A\", \"\\\\lfloor\");\ndefineSymbol(math, main, close, \"\\u230B\", \"\\\\rfloor\");\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\");\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\");\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(text, main, textord, \"|\", \"\\\\textbar\"); // in T1 fontenc\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(text, main, textord, \"\\u2225\", \"\\\\textbardbl\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\");\ndefineSymbol(math, main, rel, \"\\u21D1\", \"\\\\Uparrow\");\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\");\ndefineSymbol(math, main, rel, \"\\u21D3\", \"\\\\Downarrow\");\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\");\ndefineSymbol(math, main, rel, \"\\u21D5\", \"\\\\Updownarrow\");\ndefineSymbol(math, main, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, main, op, \"\\u22C1\", \"\\\\bigvee\");\ndefineSymbol(math, main, op, \"\\u22C0\", \"\\\\bigwedge\");\ndefineSymbol(math, main, op, \"\\u2A04\", \"\\\\biguplus\");\ndefineSymbol(math, main, op, \"\\u22C2\", \"\\\\bigcap\");\ndefineSymbol(math, main, op, \"\\u22C3\", \"\\\\bigcup\");\ndefineSymbol(math, main, op, \"\\u222B\", \"\\\\int\");\ndefineSymbol(math, main, op, \"\\u222B\", \"\\\\intop\");\ndefineSymbol(math, main, op, \"\\u222C\", \"\\\\iint\");\ndefineSymbol(math, main, op, \"\\u222D\", \"\\\\iiint\");\ndefineSymbol(math, main, op, \"\\u220F\", \"\\\\prod\");\ndefineSymbol(math, main, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, main, op, \"\\u2A02\", \"\\\\bigotimes\");\ndefineSymbol(math, main, op, \"\\u2A01\", \"\\\\bigoplus\");\ndefineSymbol(math, main, op, \"\\u2A00\", \"\\\\bigodot\");\ndefineSymbol(math, main, op, \"\\u222E\", \"\\\\oint\");\ndefineSymbol(math, main, op, \"\\u2A06\", \"\\\\bigsqcup\");\ndefineSymbol(math, main, op, \"\\u222B\", \"\\\\smallint\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u22EF\", \"\\\\cdots\", true);\ndefineSymbol(math, main, inner, \"\\u22F1\", \"\\\\ddots\", true);\ndefineSymbol(math, main, textord, \"\\u22EE\", \"\\\\vdots\", true);\ndefineSymbol(math, main, accent, \"\\xB4\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"`\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\xA8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"~\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\xAF\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02D8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02C7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"^\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20D7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02D9\", \"\\\\dot\");\ndefineSymbol(math, main, mathord, \"\\u0131\", \"\\\\imath\");\ndefineSymbol(math, main, mathord, \"\\u0237\", \"\\\\jmath\");\ndefineSymbol(text, main, accent, \"\\u02CA\", \"\\\\'\"); // acute\ndefineSymbol(text, main, accent, \"\\u02CB\", \"\\\\`\"); // grave\ndefineSymbol(text, main, accent, \"\\u02C6\", \"\\\\^\"); // circumflex\ndefineSymbol(text, main, accent, \"\\u02DC\", \"\\\\~\"); // tilde\ndefineSymbol(text, main, accent, \"\\u02C9\", \"\\\\=\"); // macron\ndefineSymbol(text, main, accent, \"\\u02D8\", \"\\\\u\"); // breve\ndefineSymbol(text, main, accent, \"\\u02D9\", \"\\\\.\"); // dot above\ndefineSymbol(text, main, accent, \"\\u02DA\", \"\\\\r\"); // ring above\ndefineSymbol(text, main, accent, \"\\u02C7\", \"\\\\v\"); // caron\ndefineSymbol(text, main, accent, \"\\xA8\", '\\\\\"'); // diaresis\ndefineSymbol(text, main, accent, \"\\u030B\", \"\\\\H\"); // double acute\n\ndefineSymbol(text, main, textord, \"\\u2013\", \"--\");\ndefineSymbol(text, main, textord, \"\\u2013\", \"\\\\textendash\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"---\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"\\\\textemdash\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"\\\\textquoteleft\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"'\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"\\\\textquoteright\");\ndefineSymbol(text, main, textord, \"\\u201C\", \"``\");\ndefineSymbol(text, main, textord, \"\\u201C\", \"\\\\textquotedblleft\");\ndefineSymbol(text, main, textord, \"\\u201D\", \"''\");\ndefineSymbol(text, main, textord, \"\\u201D\", \"\\\\textquotedblright\");\ndefineSymbol(math, main, textord, \"\\xB0\", \"\\\\degree\");\ndefineSymbol(text, main, textord, \"\\xB0\", \"\\\\degree\");\n// TODO: In LaTeX, \\pounds can generate a different character in text and math\n// mode, but among our fonts, only Main-Italic defines this character \"163\".\ndefineSymbol(math, main, mathord, \"\\xA3\", \"\\\\pounds\");\ndefineSymbol(math, main, mathord, \"\\xA3\", \"\\\\mathsterling\");\ndefineSymbol(text, main, mathord, \"\\xA3\", \"\\\\pounds\");\ndefineSymbol(text, main, mathord, \"\\xA3\", \"\\\\textsterling\");\ndefineSymbol(math, ams, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(text, ams, textord, \"\\u2720\", \"\\\\maltese\");\n\ndefineSymbol(text, main, spacing, \"\\xA0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\xA0\", \" \");\ndefineSymbol(text, main, spacing, \"\\xA0\", \"~\");\n\n// There are lots of symbols which are the same, so we add them in afterwards.\n\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (var i = 0; i < mathTextSymbols.length; i++) {\n var ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode\nvar textSymbols = \"0123456789!@*()-=+[]<>|\\\";:?/.,\";\nfor (var _i = 0; _i < textSymbols.length; _i++) {\n var _ch = textSymbols.charAt(_i);\n defineSymbol(text, main, textord, _ch, _ch);\n}\n\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\nfor (var _i2 = 0; _i2 < letters.length; _i2++) {\n var _ch2 = letters.charAt(_i2);\n defineSymbol(math, main, mathord, _ch2, _ch2);\n defineSymbol(text, main, textord, _ch2, _ch2);\n}\n\n// Latin-1 letters\nfor (var _i3 = 0x00C0; _i3 <= 0x00D6; _i3++) {\n var _ch3 = String.fromCharCode(_i3);\n defineSymbol(math, main, mathord, _ch3, _ch3);\n defineSymbol(text, main, textord, _ch3, _ch3);\n}\n\nfor (var _i4 = 0x00D8; _i4 <= 0x00F6; _i4++) {\n var _ch4 = String.fromCharCode(_i4);\n defineSymbol(math, main, mathord, _ch4, _ch4);\n defineSymbol(text, main, textord, _ch4, _ch4);\n}\n\nfor (var _i5 = 0x00F8; _i5 <= 0x00FF; _i5++) {\n var _ch5 = String.fromCharCode(_i5);\n defineSymbol(math, main, mathord, _ch5, _ch5);\n defineSymbol(text, main, textord, _ch5, _ch5);\n}\n\n// Cyrillic\nfor (var _i6 = 0x0410; _i6 <= 0x044F; _i6++) {\n var _ch6 = String.fromCharCode(_i6);\n defineSymbol(text, main, textord, _ch6, _ch6);\n}\n\n// Unicode versions of existing characters\ndefineSymbol(text, main, textord, \"\\u2013\", \"–\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"—\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"‘\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"’\");\ndefineSymbol(text, main, textord, \"\\u201C\", \"“\");\ndefineSymbol(text, main, textord, \"\\u201D\", \"”\");\n\n},{}],49:[function(require,module,exports){\n\"use strict\";\n\nvar hangulRegex = /[\\uAC00-\\uD7AF]/;\n\n// This regex combines\n// - CJK symbols and punctuation: [\\u3000-\\u303F]\n// - Hiragana: [\\u3040-\\u309F]\n// - Katakana: [\\u30A0-\\u30FF]\n// - CJK ideograms: [\\u4E00-\\u9FAF]\n// - Hangul syllables: [\\uAC00-\\uD7AF]\n// - Fullwidth punctuation: [\\uFF00-\\uFF60]\n// Notably missing are halfwidth Katakana and Romanji glyphs.\nvar cjkRegex = /[\\u3000-\\u30FF\\u4E00-\\u9FAF\\uAC00-\\uD7AF\\uFF00-\\uFF60]/;\n\nmodule.exports = {\n cjkRegex: cjkRegex,\n hangulRegex: hangulRegex\n};\n\n},{}],50:[function(require,module,exports){\n\"use strict\";\n\nvar _ParseError = require(\"./ParseError\");\n\nvar _ParseError2 = _interopRequireDefault(_ParseError);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This table gives the number of TeX pts in one of each *absolute* TeX unit.\n// Thus, multiplying a length by this number converts the length from units\n// into pts. Dividing the result by ptPerEm gives the number of ems\n// *assuming* a font size of ptPerEm (normal size, normal style).\nvar ptPerUnit = {\n // https://en.wikibooks.org/wiki/LaTeX/Lengths and\n // https://tex.stackexchange.com/a/8263\n \"pt\": 1, // TeX point\n \"mm\": 7227 / 2540, // millimeter\n \"cm\": 7227 / 254, // centimeter\n \"in\": 72.27, // inch\n \"bp\": 803 / 800, // big (PostScript) points\n \"pc\": 12, // pica\n \"dd\": 1238 / 1157, // didot\n \"cc\": 14856 / 1157, // cicero (12 didot)\n \"nd\": 685 / 642, // new didot\n \"nc\": 1370 / 107, // new cicero (12 new didot)\n \"sp\": 1 / 65536, // scaled point (TeX's internal smallest unit)\n // https://tex.stackexchange.com/a/41371\n \"px\": 803 / 800 };\n\n// Dictionary of relative units, for fast validity testing.\n/* eslint no-console:0 */\n\n/**\n * This file does conversion between units. In particular, it provides\n * calculateSize to convert other units into ems.\n */\n\nvar relativeUnit = {\n \"ex\": true,\n \"em\": true,\n \"mu\": true\n};\n\n/**\n * Determine whether the specified unit (either a string defining the unit\n * or a \"size\" parse node containing a unit field) is valid.\n */\nvar validUnit = function validUnit(unit) {\n if (unit.unit) {\n unit = unit.unit;\n }\n return unit in ptPerUnit || unit in relativeUnit || unit === \"ex\";\n};\n\n/*\n * Convert a \"size\" parse node (with numeric \"number\" and string \"unit\" fields,\n * as parsed by functions.js argType \"size\") into a CSS em value for the\n * current style/scale. `options` gives the current options.\n */\nvar calculateSize = function calculateSize(sizeValue, options) {\n var scale = void 0;\n if (sizeValue.unit in ptPerUnit) {\n // Absolute units\n scale = ptPerUnit[sizeValue.unit] // Convert unit to pt\n / options.fontMetrics().ptPerEm // Convert pt to CSS em\n / options.sizeMultiplier; // Unscale to make absolute units\n } else if (sizeValue.unit === \"mu\") {\n // `mu` units scale with scriptstyle/scriptscriptstyle.\n scale = options.fontMetrics().cssEmPerMu;\n } else {\n // Other relative units always refer to the *textstyle* font\n // in the current size.\n var unitOptions = void 0;\n if (options.style.isTight()) {\n // isTight() means current style is script/scriptscript.\n unitOptions = options.havingStyle(options.style.text());\n } else {\n unitOptions = options;\n }\n // TODO: In TeX these units are relative to the quad of the current\n // *text* font, e.g. cmr10. KaTeX instead uses values from the\n // comparably-sized *Computer Modern symbol* font. At 10pt, these\n // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641;\n // cmr5=1.361133, cmsy5=1.472241. Consider $\\scriptsize a\\kern1emb$.\n // TeX \\showlists shows a kern of 1.13889 * fontsize;\n // KaTeX shows a kern of 1.171 * fontsize.\n if (sizeValue.unit === \"ex\") {\n scale = unitOptions.fontMetrics().xHeight;\n } else if (sizeValue.unit === \"em\") {\n scale = unitOptions.fontMetrics().quad;\n } else {\n throw new _ParseError2.default(\"Invalid unit: '\" + sizeValue.unit + \"'\");\n }\n if (unitOptions !== options) {\n scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n return sizeValue.number * scale;\n};\n\nmodule.exports = {\n validUnit: validUnit,\n calculateSize: calculateSize\n};\n\n},{\"./ParseError\":29}],51:[function(require,module,exports){\n\"use strict\";\n\n/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Provide an `indexOf` function which works in IE8, but defers to native if\n * possible.\n */\nvar nativeIndexOf = Array.prototype.indexOf;\nvar indexOf = function indexOf(list, elem) {\n if (list == null) {\n return -1;\n }\n if (nativeIndexOf && list.indexOf === nativeIndexOf) {\n return list.indexOf(elem);\n }\n var l = list.length;\n for (var i = 0; i < l; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Return whether an element is contained in a list\n */\nvar contains = function contains(list, elem) {\n return indexOf(list, elem) !== -1;\n};\n\n/**\n * Provide a default value if a setting is undefined\n */\nvar deflt = function deflt(setting, defaultIfUndefined) {\n return setting === undefined ? defaultIfUndefined : setting;\n};\n\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\n\nvar uppercase = /([A-Z])/g;\nvar hyphenate = function hyphenate(str) {\n return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\"\n};\n\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escape(text) {\n return (\"\" + text).replace(ESCAPE_REGEX, escaper);\n}\n\n/**\n * A function to set the text content of a DOM element in all supported\n * browsers. Note that we don't define this if there is no document.\n */\nvar setTextContent = void 0;\nif (typeof document !== \"undefined\") {\n var testNode = document.createElement(\"span\");\n if (\"textContent\" in testNode) {\n setTextContent = function setTextContent(node, text) {\n node.textContent = text;\n };\n } else {\n setTextContent = function setTextContent(node, text) {\n node.innerText = text;\n };\n }\n}\n\n/**\n * A function to clear a node.\n */\nfunction clearNode(node) {\n setTextContent(node, \"\");\n}\n\nmodule.exports = {\n contains: contains,\n deflt: deflt,\n escape: escape,\n hyphenate: hyphenate,\n indexOf: indexOf,\n setTextContent: setTextContent,\n clearNode: clearNode\n};\n\n},{}]},{},[1])(1)\n});","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This is a straight concatenation of code from KaTeX's contrib folder,\n// but we aren't using some of their helpers that don't work well outside a browser environment.\n\n/*global katex */\n\nconst findEndOfMath = function(delimiter, text, startIndex) {\n // Adapted from\n // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx\n let index = startIndex;\n let braceLevel = 0;\n\n const delimLength = delimiter.length;\n\n while (index < text.length) {\n const character = text[index];\n\n if (\n braceLevel <= 0 &&\n text.slice(index, index + delimLength) === delimiter\n ) {\n return index;\n } else if (character === \"\\\\\") {\n index++;\n } else if (character === \"{\") {\n braceLevel++;\n } else if (character === \"}\") {\n braceLevel--;\n }\n\n index++;\n }\n\n return -1;\n};\n\nconst splitAtDelimiters = function(startData, leftDelim, rightDelim, display) {\n const finalData = [];\n\n for (let i = 0; i < startData.length; i++) {\n if (startData[i].type === \"text\") {\n const text = startData[i].data;\n\n let lookingForLeft = true;\n let currIndex = 0;\n let nextIndex;\n\n nextIndex = text.indexOf(leftDelim);\n if (nextIndex !== -1) {\n currIndex = nextIndex;\n finalData.push({\n type: \"text\",\n data: text.slice(0, currIndex)\n });\n lookingForLeft = false;\n }\n\n while (true) {\n // eslint-disable-line no-constant-condition\n if (lookingForLeft) {\n nextIndex = text.indexOf(leftDelim, currIndex);\n if (nextIndex === -1) {\n break;\n }\n\n finalData.push({\n type: \"text\",\n data: text.slice(currIndex, nextIndex)\n });\n\n currIndex = nextIndex;\n } else {\n nextIndex = findEndOfMath(\n rightDelim,\n text,\n currIndex + leftDelim.length\n );\n if (nextIndex === -1) {\n break;\n }\n\n finalData.push({\n type: \"math\",\n data: text.slice(currIndex + leftDelim.length, nextIndex),\n rawData: text.slice(currIndex, nextIndex + rightDelim.length),\n display: display\n });\n\n currIndex = nextIndex + rightDelim.length;\n }\n\n lookingForLeft = !lookingForLeft;\n }\n\n finalData.push({\n type: \"text\",\n data: text.slice(currIndex)\n });\n } else {\n finalData.push(startData[i]);\n }\n }\n\n return finalData;\n};\n\nconst splitWithDelimiters = function(text, delimiters) {\n let data = [{ type: \"text\", data: text }];\n for (let i = 0; i < delimiters.length; i++) {\n const delimiter = delimiters[i];\n data = splitAtDelimiters(\n data,\n delimiter.left,\n delimiter.right,\n delimiter.display || false\n );\n }\n return data;\n};\n\n/* Note: optionsCopy is mutated by this method. If it is ever exposed in the\n * API, we should copy it before mutating.\n */\nconst renderMathInText = function(text, optionsCopy) {\n const data = splitWithDelimiters(text, optionsCopy.delimiters);\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < data.length; i++) {\n if (data[i].type === \"text\") {\n fragment.appendChild(document.createTextNode(data[i].data));\n } else {\n const tag = document.createElement(\"d-math\");\n const math = data[i].data;\n // Override any display mode defined in the settings with that\n // defined by the text itself\n optionsCopy.displayMode = data[i].display;\n try {\n tag.textContent = math;\n if (optionsCopy.displayMode) {\n tag.setAttribute(\"block\", \"\");\n }\n } catch (e) {\n if (!(e instanceof katex.ParseError)) {\n throw e;\n }\n optionsCopy.errorCallback(\n \"KaTeX auto-render: Failed to parse `\" + data[i].data + \"` with \",\n e\n );\n fragment.appendChild(document.createTextNode(data[i].rawData));\n continue;\n }\n fragment.appendChild(tag);\n }\n }\n\n return fragment;\n};\n\nconst renderElem = function(elem, optionsCopy) {\n for (let i = 0; i < elem.childNodes.length; i++) {\n const childNode = elem.childNodes[i];\n if (childNode.nodeType === 3) {\n // Text node\n const text = childNode.textContent;\n if (optionsCopy.mightHaveMath(text)) {\n const frag = renderMathInText(text, optionsCopy);\n i += frag.childNodes.length - 1;\n elem.replaceChild(frag, childNode);\n }\n } else if (childNode.nodeType === 1) {\n // Element node\n const shouldRender =\n optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) ===\n -1;\n\n if (shouldRender) {\n renderElem(childNode, optionsCopy);\n }\n }\n // Otherwise, it's something else, and ignore it.\n }\n};\n\nconst defaultAutoRenderOptions = {\n delimiters: [\n { left: \"$$\", right: \"$$\", display: true },\n { left: \"\\\\[\", right: \"\\\\]\", display: true },\n { left: \"\\\\(\", right: \"\\\\)\", display: false }\n // LaTeX uses this, but it ruins the display of normal `$` in text:\n // {left: '$', right: '$', display: false},\n ],\n\n ignoredTags: [\n \"script\",\n \"noscript\",\n \"style\",\n \"textarea\",\n \"pre\",\n \"code\",\n \"svg\"\n ],\n\n errorCallback: function(msg, err) {\n console.error(msg, err);\n }\n};\n\nexport const renderMathInElement = function(elem, options) {\n if (!elem) {\n throw new Error(\"No element provided to render\");\n }\n\n const optionsCopy = Object.assign({}, defaultAutoRenderOptions, options);\n const delimiterStrings = optionsCopy.delimiters.flatMap(d => [\n d.left,\n d.right\n ]);\n const mightHaveMath = text =>\n delimiterStrings.some(d => text.indexOf(d) !== -1);\n optionsCopy.mightHaveMath = mightHaveMath;\n renderElem(elem, optionsCopy);\n};\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport katex from 'katex';\nimport { renderMathInElement } from '../helpers/katex-auto-render';\n\nexport default function(dom, data) {\n let needsCSS = false;\n const body = dom.querySelector('body');\n\n if (!body) {\n console.warn(\"No body tag found!\");\n return;\n }\n\n if (data.katex && data.katex.delimiters) {\n global.document = dom;\n renderMathInElement(body, data.katex);\n }\n\n // render d-math tags\n const mathTags = body.querySelectorAll('d-math');\n if (mathTags.length > 0) {\n needsCSS = true;\n console.warn(`Prerendering ${mathTags.length} math tags...`);\n for (const mathTag of mathTags) {\n const localOptions = { displayMode: mathTag.hasAttribute('block') };\n const options = Object.assign(localOptions, data.katex);\n const html = katex.renderToString(mathTag.textContent, options);\n const container = dom.createElement('span');\n container.innerHTML = html;\n mathTag.parentElement.insertBefore(container, mathTag);\n mathTag.parentElement.removeChild(mathTag);\n }\n }\n\n if (needsCSS) {\n const katexCSSTag = '';\n dom.head.insertAdjacentHTML('beforeend', katexCSSTag);\n }\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// TODO: rewrite as template to make order dependencies easier\n\nimport favicon from '../assets/distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector('head');\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n `);\n\n if (data.title) {\n appendHead(`\n ${escape(data.title)}\n `);\n }\n\n if (data.url) {\n appendHead(`\n \n `);\n }\n\n\n if (data.publishedDate){\n appendHead(`\n \n \n \n \n `);\n }\n\n if (data.updatedDate) {\n appendHead(`\n \n `);\n }\n\n (data.authors || []).forEach((a) => {\n appendHtml(head, `\n `);\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta('citation_title', data.title);\n meta('citation_fulltext_html_url', data.url);\n meta('citation_volume', data.volume);\n meta('citation_issue', data.issue);\n meta('citation_firstpage', data.doiSuffix ? `e${data.doiSuffix}` : undefined);\n meta('citation_doi', data.doi);\n\n let journal = data.journal || {};\n meta('citation_journal_title', journal.full_title || journal.title);\n meta('citation_journal_abbrev', journal.abbrev_title);\n meta('citation_issn', journal.issn);\n meta('citation_publisher', journal.publisher);\n meta('citation_fulltext_world_readable', '', true);\n\n if (data.publishedDate){\n meta('citation_online_date', `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n meta('citation_publication_date', `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta('citation_author', `${a.lastName}, ${a.firstName}`);\n meta('citation_author_institution', a.affiliation);\n });\n } else {\n console.warn('No DOI suffix in data; not adding citation meta tags!');\n }\n\n if (data.citations) {\n data.citations.forEach(key => {\n if (data.bibliography && data.bibliography.has(key)) {\n const entry = data.bibliography.get(key);\n meta('citation_reference', citation_meta_content(entry) );\n } else {\n console.warn('No bibliography data found for ' + key);\n }\n });\n } else {\n console.warn('No citations found; not adding any references meta tags!');\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n\n if (ref.author && ref.author !== '') {\n ref.author.split(' and ').forEach(name => {\n name = name.trim();\n let last, firsts;\n if (name.indexOf(',') != -1){\n last = name.split(',')[0].trim();\n firsts = name.split(',')[1].trim();\n } else {\n last = name.split(' ').slice(-1)[0].trim();\n firsts = name.split(' ').slice(0,-1).join(' ');\n }\n content += `citation_author=${firsts} ${last};`;\n });\n }\n\n if ('year' in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n // Special test for arxiv\n let arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content; // arXiv is not considered a journal, so we don't need journal/volume/issue\n }\n if ('journal' in ref){\n content += `citation_journal_title=${escape(ref.journal)};`;\n }\n if ('volume' in ref) {\n content += `citation_volume=${escape(ref.volume)};`;\n }\n if ('issue' in ref || 'number' in ref){\n content += `citation_number=${escape(ref.issue || ref.number)};`;\n }\n return content;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport print from './styles-print.css';\nimport byline from './d-byline.css';\nimport article from './d-article.css';\nimport title from './d-title.css';\nimport math from './d-math.css';\n\nexport const styles = base + layout + title + byline + article + math + print;\n\nexport function makeStyleTag(dom) {\n\n const styleTagId = 'distill-prerendered-styles';\n const prerenderedTag = dom.getElementById(styleTagId);\n if (!prerenderedTag) {\n const styleTag = dom.createElement('style');\n styleTag.id = styleTagId;\n styleTag.type = 'text/css';\n const cssTextTag = dom.createTextNode(styles);\n styleTag.appendChild(cssTextTag);\n const firstScriptTag = dom.head.querySelector('script');\n dom.head.insertBefore(styleTag, firstScriptTag);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport class TOC extends HTMLElement {\n\n static get is() { return 'd-toc'; }\n\n connectedCallback() {\n if (!this.getAttribute('prerendered')) {\n window.onload = () => {\n const article = document.querySelector('d-article');\n const headings = article.querySelectorAll('h2, h3');\n renderTOC(this, headings);\n };\n }\n }\n\n}\n\nexport function renderTOC(element, headings) {\n\n let ToC =`\n \n \n

      Table of contents

      \n
        `;\n\n for (const el of headings) {\n // should element be included in TOC?\n const isInTitle = el.parentElement.tagName == 'D-TITLE';\n const isException = el.getAttribute('no-toc');\n if (isInTitle || isException) continue;\n // create TOC entry\n const title = el.textContent;\n const link = '#' + el.getAttribute('id');\n\n let newLine = '
      • ' + '' + title + '' + '
      • ';\n if (el.tagName == 'H3') {\n newLine = '
          ' + newLine + '
        ';\n } else {\n newLine += '
        ';\n }\n ToC += newLine;\n\n }\n\n ToC += '
      ';\n element.innerHTML = ToC;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { renderTOC } from '../components/d-toc';\n\nexport default function(dom) {\n const article = dom.querySelector('d-article');\n const toc = dom.querySelector('d-toc');\n if (toc) {\n const headings = article.querySelectorAll('h2, h3');\n renderTOC(toc, headings);\n toc.setAttribute('prerendered', 'true');\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport default function(dom) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n // TODO: Add back support for ligatures once their uppercased versions don't hang Chrome search anymore\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=862648\n // text = ligatures(text);\n n.nodeValue = text;\n }\n }\n}\n\n// 2018-07-11 shancarter@ and ludwigschubert@ no longer know what this was meant to accomplish\n// if it was trying to not replace text in any child nodes of those listed here,\n// then it does not accomplish that.\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute('class')) ? parent.getAttribute('class').includes('katex') || parent.getAttribute('class').includes('MathJax') : false;\n return parent &&\n parent.nodeName !== 'SCRIPT' &&\n parent.nodeName !== 'STYLE' &&\n parent.nodeName !== 'CODE' &&\n parent.nodeName !== 'PRE' &&\n parent.nodeName !== 'SPAN' &&\n parent.nodeName !== 'D-HEADER' &&\n parent.nodeName !== 'D-BYLINE' &&\n parent.nodeName !== 'D-MATH' &&\n parent.nodeName !== 'D-CODE' &&\n parent.nodeName !== 'D-BIBLIOGRAPHY' &&\n parent.nodeName !== 'D-FOOTER' &&\n parent.nodeName !== 'D-APPENDIX' &&\n parent.nodeName !== 'D-FRONTMATTER' &&\n parent.nodeName !== 'D-TOC' &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n// which has a CC0 license\n// http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/\\s*\\u2014\\s*/g,'\\u2009\\u2014\\u2009'); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = '\\u00a0';\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([!?:;.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s!?:;.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\"');\n text = text.replace(/\\\\”/, '\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nconst webcomponentPath = 'https://distill.pub/third-party/polyfills/webcomponents-lite.js';\nconst intersectionObserverPath = 'https://distill.pub/third-party/polyfills/intersection-observer.js';\n\n// const template = `\n// if ('IntersectionObserver' in window &&\n// 'IntersectionObserverEntry' in window &&\n// 'intersectionRatio' in IntersectionObserverEntry.prototype) {\n// // Platform supports IntersectionObserver natively! :-)\n// if (!('isIntersecting' in IntersectionObserverEntry.prototype)) {\n// Object.defineProperty(IntersectionObserverEntry.prototype,\n// 'isIntersecting', {\n// get: function () {\n// return this.intersectionRatio > 0;\n// }\n// });\n// }\n// } else {\n// // Platform does not support webcomponents--loading polyfills synchronously.\n// const scriptTag = document.createElement('script');\n// scriptTag.src = '${intersectionObserverPath}';\n// scriptTag.async = false;\n// document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);\n// }\n//\n// if ('registerElement' in document &&\n// 'import' in document.createElement('link') &&\n// 'content' in document.createElement('template')) {\n// // Platform supports webcomponents natively! :-)\n// } else {\n// // Platform does not support webcomponents--loading polyfills synchronously.\n// const scriptTag = document.createElement('script');\n// scriptTag.src = '${webcomponentPath}';\n// scriptTag.async = false;\n// document.currentScript.parentNode.insertBefore(scriptTag, document.currentScript.nextSibling);\n// }\n//\n//\n// `;\n\n\nconst addBackIn = `\nwindow.addEventListener('WebComponentsReady', function() {\n console.warn('WebComponentsReady');\n const loaderTag = document.createElement('script');\n loaderTag.src = 'https://distill.pub/template.v2.js';\n document.head.insertBefore(loaderTag, document.head.firstChild);\n});\n`;\n\nexport default function render(dom) {\n // pull out template script tag\n const templateTag = dom.querySelector('script[src*=\"template.v2.js\"]');\n if (templateTag) {\n templateTag.parentNode.removeChild(templateTag);\n } else {\n console.debug('FYI: Did not find template tag when trying to remove it. You may not have added it. Be aware that our polyfills will add it.')\n }\n\n // add loader\n const loaderTag = dom.createElement('script');\n loaderTag.src = 'https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.0.17/webcomponents-loader.js';\n dom.head.insertBefore(loaderTag, dom.head.firstChild);\n\n // add loader event listener to add tempalrte back in\n const addTag = dom.createElement('script');\n addTag.innerHTML = addBackIn;\n dom.head.insertBefore(addTag, dom.head.firstChild);\n\n\n // create polyfill script tag\n // const polyfillScriptTag = dom.createElement('script');\n // polyfillScriptTag.innerHTML = template;\n // polyfillScriptTag.id = 'polyfills';\n\n // insert at appropriate position--before any other script tag\n // const firstScriptTag = dom.head.querySelector('script');\n // dom.head.insertBefore(polyfillScriptTag, firstScriptTag);\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { bibliography_cite } from '../helpers/citation';\n\nconst styles = `\nd-citation-list {\n contain: style;\n}\n\nd-citation-list .references {\n grid-column: text;\n}\n\nd-citation-list .references .title {\n font-weight: 500;\n}\n`;\n\nexport function renderCitationList(element, entries, dom=document) {\n if (entries.size > 0) {\n element.style.display = '';\n let list = element.querySelector('.references');\n if (list) {\n list.innerHTML = '';\n } else {\n const stylesTag = dom.createElement('style');\n stylesTag.innerHTML = styles;\n element.appendChild(stylesTag);\n\n const heading = dom.createElement('h3');\n heading.id = 'references';\n heading.textContent = 'References';\n element.appendChild(heading);\n\n list = dom.createElement('ol');\n list.id = 'references-list';\n list.className = 'references';\n element.appendChild(list);\n }\n\n for (const [key, entry] of entries) {\n const listItem = dom.createElement('li');\n listItem.id = key;\n listItem.innerHTML = bibliography_cite(entry);\n list.appendChild(listItem);\n }\n } else {\n element.style.display = 'none';\n }\n}\n\nexport class CitationList extends HTMLElement {\n\n static get is() { return 'd-citation-list'; }\n\n connectedCallback() {\n if (!this.hasAttribute('distill-prerendered')) {\n this.style.display = 'none';\n }\n }\n\n set citations(citations) {\n renderCitationList(this, citations);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { renderCitationList } from '../components/d-citation-list'; // (element, entries)\n\nexport default function(dom, data) {\n const citationListTag = dom.querySelector('d-citation-list');\n if (citationListTag) {\n const entries = new Map(data.citations.map( citationKey => {\n return [citationKey, data.bibliography.get(citationKey)];\n }));\n renderCitationList(citationListTag, entries, dom);\n citationListTag.setAttribute('distill-prerendered', 'true');\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/*\n Try to only reorder things that MAY be user defined.\n Try to use templates etc to define the order of our own tags.\n*/\n\nexport default function render(dom) {\n const head = dom.head;\n\n const metaIE = head.querySelector('meta[http-equiv]');\n head.insertBefore(metaIE, head.firstChild);\n\n const metaViewport = head.querySelector('meta[name=viewport]');\n head.insertBefore(metaViewport, head.firstChild);\n\n const metaCharset = head.querySelector('meta[charset]');\n head.insertBefore(metaCharset, head.firstChild);\n}\n","import logo from '../assets/distill-logo.svg';\n\nexport const headerTemplate = `\n\n\n`;\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n\nimport { headerTemplate } from '../distill-components/distill-header-template';\n\nexport default function(dom, data) {\n const headerTag = dom.querySelector('distill-header');\n if (!headerTag) {\n const header = dom.createElement('distill-header');\n header.innerHTML = headerTemplate;\n header.setAttribute('distill-prerendered', \"\");\n const body = dom.querySelector('body');\n body.insertBefore(header, body.firstChild);\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { serializeFrontmatterToBibtex } from '../helpers/bibtex';\n\nconst styles = `\n\n`;\n\nexport function appendixTemplate(frontMatter) {\n let html = styles;\n\n if (typeof frontMatter.githubUrl !== 'undefined') {\n html += `\n

      Updates and Corrections

      \n

      `;\n if (frontMatter.githubCompareUpdatesUrl) {\n html += `View all changes to this article since it was first published.`;\n }\n html += `\n If you see mistakes or want to suggest changes, please create an issue on GitHub.

      \n `;\n }\n\n const journal = frontMatter.journal;\n if (typeof journal !== 'undefined' && journal.title === 'Distill') {\n html += `\n

      Reuse

      \n

      Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.

      \n `;\n }\n\n if (typeof frontMatter.publishedDate !== 'undefined') {\n html += `\n

      Citation

      \n

      For attribution in academic contexts, please cite this work as

      \n
      ${frontMatter.concatenatedAuthors}, \"${frontMatter.title}\", Distill, ${frontMatter.publishedYear}.
      \n

      BibTeX citation

      \n
      ${serializeFrontmatterToBibtex(frontMatter)}
      \n `;\n }\n\n return html;\n}\n\nexport class DistillAppendix extends HTMLElement {\n\n static get is() { return 'distill-appendix'; }\n\n set frontMatter(frontMatter) {\n this.innerHTML = appendixTemplate(frontMatter);\n }\n\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { appendixTemplate } from '../distill-components/distill-appendix';\n\nexport default function(dom, data) {\n\n const appendixTag = dom.querySelector('d-appendix');\n if (!appendixTag) {\n console.warn('No appendix tag found!');\n return;\n }\n const distillAppendixTag = appendixTag.querySelector('distill-appendix');\n if (!distillAppendixTag) {\n const distillAppendix = dom.createElement('distill-appendix');\n appendixTag.appendChild(distillAppendix);\n distillAppendix.innerHTML = appendixTemplate(data);\n }\n\n}\n","import logo from '../assets/distill-logo.svg';\n\nexport const footerTemplate = `\n\n\n\n\n`;\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { footerTemplate } from '../distill-components/distill-footer-template';\n\nexport default function(dom) {\n const footerTag = dom.querySelector('distill-footer');\n if(!footerTag) {\n const footer = dom.createElement('distill-footer');\n footer.innerHTML = footerTemplate;\n const body = dom.querySelector('body');\n body.appendChild(footer);\n }\n}\n","// Copyright 2018 The Distill Template Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/* eslint-env node, mocha */\n\nimport { FrontMatter } from './front-matter';\n\n/* Extractors */\nimport ExtractFrontmatter from './extractors/front-matter';\nimport ExtractBibliography from './extractors/bibliography';\nimport ExtractCitations from './extractors/citations';\n\nconst extractors = new Map([\n ['ExtractFrontmatter', ExtractFrontmatter],\n ['ExtractBibliography', ExtractBibliography],\n ['ExtractCitations', ExtractCitations],\n]);\n\n/* Transforms */\nimport HTML from './transforms/html';\nimport Byline from './transforms/byline';\nimport OptionalComponents from './transforms/optional-components';\nimport Mathematics from './transforms/mathematics';\nimport Meta from './transforms/meta';\nimport { makeStyleTag } from './styles/styles';\nimport TOC from './transforms/toc';\nimport Typeset from './transforms/typeset';\nimport Polyfills from './transforms/polyfills';\nimport CitationList from './transforms/citation-list';\nimport Reorder from './transforms/reorder';\n\nconst transforms = new Map([\n ['HTML', HTML],\n ['makeStyleTag', makeStyleTag],\n ['OptionalComponents', OptionalComponents],\n ['TOC', TOC],\n ['Byline', Byline],\n ['Mathematics', Mathematics],\n ['Meta', Meta],\n ['Typeset', Typeset],\n ['Polyfills', Polyfills],\n ['CitationList', CitationList],\n ['Reorder', Reorder] // keep last\n]);\n\n/* Distill Transforms */\nimport DistillHeader from './distill-transforms/distill-header';\nimport DistillAppendix from './distill-transforms/distill-appendix';\nimport DistillFooter from './distill-transforms/distill-footer';\n\nconst distillTransforms = new Map([\n ['DistillHeader', DistillHeader],\n ['DistillAppendix', DistillAppendix],\n ['DistillFooter', DistillFooter],\n]);\n\n/* Exported functions */\n\nexport function render(dom, data, verbose=true) {\n let frontMatter;\n if (data instanceof FrontMatter) {\n frontMatter = data;\n } else {\n frontMatter = FrontMatter.fromObject(data);\n }\n // first, we collect static data from the dom\n for (const [name, extract] of extractors.entries()) {\n if (verbose) console.warn('Running extractor: ' + name);\n extract(dom, frontMatter, verbose);\n }\n // secondly we use it to transform parts of the dom\n for (const [name, transform] of transforms.entries()) {\n if (verbose) console.warn('Running transform: ' + name);\n // console.warn('Running transform: ', transform);\n transform(dom, frontMatter, verbose);\n }\n dom.body.setAttribute('distill-prerendered', '');\n // the function calling us can now use the transformed dom and filled data object\n if (data instanceof FrontMatter) {\n // frontMatter will already have needed properties\n } else {\n frontMatter.assignToObject(data);\n }\n}\n\nexport function distillify(dom, data, verbose=true) {\n // thirdly, we can use these additional transforms when publishing on the Distill website\n for (const [name, transform] of distillTransforms.entries()) {\n if (verbose) console.warn('Running distillify: ', name);\n transform(dom, data, verbose);\n }\n}\n\nexport function usesTemplateV2(dom) {\n const tags = dom.querySelectorAll('script');\n let usesV2 = undefined;\n for (const tag of tags) {\n const src = tag.src;\n if (src.includes('template.v1.js')) {\n usesV2 = false;\n } else if (src.includes('template.v2.js')) {\n usesV2 = true;\n } else if (src.includes('template.')) {\n throw new Error('Uses distill template, but unknown version?!');\n }\n }\n\n if (usesV2 === undefined) {\n throw new Error('Does not seem to use Distill template at all.');\n } else {\n return usesV2;\n }\n}\n\nexport { FrontMatter }; // TODO: removable?\n\nexport const testing = {\n extractors: extractors,\n transforms: transforms,\n distillTransforms: distillTransforms\n};\n"],"names":["require","katex","escape","styles","render","Polyfills","Reorder"],"mappings":";;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;EAC5F,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EAClH,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1C;EACA,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE;EAC3B,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;EAC7C,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;EAC7C,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;EAC9C,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC;EAClD,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC;EAClD,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;EACnF,CAAC,CAAC;AACF;EACA,MAAM,aAAa,GAAG,SAAS,GAAG,EAAE;EACpC,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;EAC7D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;EAC3C,GAAG,EAAE,EAAE,CAAC,CAAC;EACT,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC,CAAC;AACF;EACA,MAAM,aAAa,GAAG,SAAS,MAAM,EAAE;EACvC,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;EACxB,EAAE,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;EAC/B,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;EACzC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC,CAAC;AACF;EACA,MAAM,MAAM,CAAC;AACb;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,EAAE,WAAW,CAAC,MAAM,EAAE;EACtB,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;EAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;EACxC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;EAC1C,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;EAChD,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;EAClD,GAAG;AACH;EACA;EACA,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtD,GAAG;AACH;EACA;EACA,EAAE,IAAI,QAAQ,GAAG;EACjB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACvC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAClC,GAAG;EACH,CAAC;AACD;EACO,SAAS,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE;EACxD,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC9B,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE;EACxB,IAAI,IAAI,MAAM,CAAC,SAAS,YAAY,IAAI,EAAE;EAC1C,MAAM,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;EAC9C,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,MAAM,EAAE;EACxD,MAAM,MAAM,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EACxD,KAAK;EACL,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE;EAC5B,IAAI,IAAI,MAAM,CAAC,aAAa,YAAY,IAAI,EAAE;EAC9C,MAAM,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;EAClD,KAAK,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,KAAK,MAAM,EAAE;EAC5D,MAAM,MAAM,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EAC5D,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;EAC3F,KAAK;EACL,GAAG;EACH,EAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;EAC1C,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;EACnF,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC9B,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;EACpC,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE;EAClB,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;EAC5B,GAAG;EACH,CAAC;AACD;EACO,MAAM,WAAW,CAAC;EACzB,EAAE,WAAW,GAAG;EAChB,IAAI,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;EACnC,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;EAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB;EACA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;EAClC,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACxB,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACpC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;EACzB,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;EACnC,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE;EACjB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EACtB,GAAG;EACH,EAAE,IAAI,GAAG,GAAG;EACZ,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;EACnB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;EACvB,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;EACrD,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;EACvD,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;EACjC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;EAC9B,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,IAAI,SAAS,GAAG;EAClB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EACzB,MAAM,OAAO,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;EACrD,KAAK,MAAM;EACX,MAAM,OAAO,SAAS,CAAC;EACvB,KAAK;EACL,GAAG;AACH;EACA;EACA;EACA,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;EAC7B,GAAG;EACH,EAAE,IAAI,UAAU,GAAG;EACnB,IAAI,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC;EAC7E,GAAG;AACH;EACA;EACA,EAAE,IAAI,gBAAgB,GAAG;EACzB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACnC,GAAG;AACH;EACA;EACA,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACjC,GAAG;AACH;EACA;EACA,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;EAC5C,GAAG;AACH;EACA;EACA,EAAE,IAAI,cAAc,GAAG;EACvB,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;EACjD,GAAG;AACH;EACA;EACA,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;EACxC,GAAG;AACH;EACA;EACA,EAAE,IAAI,oBAAoB,GAAG;EAC7B,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;EACtD,GAAG;AACH;EACA;EACA,EAAE,IAAI,kBAAkB,GAAG;EAC3B,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,IAAI,oBAAoB,GAAG;EAC7B,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1D,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG;EACf,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC7C,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE;EACpB,MAAM,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;EAC/E,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC7C,GAAG;AACH;EACA;EACA,EAAE,IAAI,mBAAmB,GAAG;EAC5B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EACjC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;EACnD,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1C,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;EACzE,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1C,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;EACtC,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,IAAI,aAAa,GAAG;EACtB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI;EACtC,MAAM,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;EACvD,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACrB,GAAG;AACH;EACA;EACA,EAAE,IAAI,IAAI,GAAG;EACb,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;EAClB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;EAC7B,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;EACrD,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC;EACjC,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;EACrD,KAAK;EACL,IAAI,OAAO,IAAI,IAAI,UAAU,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,IAAI,mBAAmB,GAAG;EAC5B,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,IAAI;EACtD,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACvD,MAAM,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;EAClC,KAAK,CAAC,CAAC,CAAC;EACR,GAAG;AACH;EACA,EAAE,IAAI,YAAY,CAAC,YAAY,EAAE;EACjC,IAAI,IAAI,YAAY,YAAY,GAAG,EAAE;EACrC,MAAM,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;EACxC,KAAK,MAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;EACjD,MAAM,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;EACvD,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,YAAY,GAAG;EACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,OAAO,UAAU,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;EAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;EACvC,IAAI,OAAO,WAAW,CAAC;EACvB,GAAG;AACH;EACA,EAAE,cAAc,CAAC,MAAM,EAAE;EACzB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EAChC,IAAI,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;EAClE,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC1B,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC1B,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EACtC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;EACxC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;EAC5B,MAAM,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAClC,MAAM,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,MAAM,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;EACtD,MAAM,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;EAChD,MAAM,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;EAClD,MAAM,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;EAC9C,MAAM,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;EAC9D,MAAM,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;EAC1D,KAAK;EACL,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;EAC1B,MAAM,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;EAClD,KAAK;EACL,IAAI,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;EAC1D,IAAI,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;EAC9C,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC5B,GAAG;AACH;EACA;;ECzVA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACO,SAAS,qCAAqC,CAAC,WAAW,EAAE;EACnE;EACA;EACA;EACA,EAAE,KAAK,IAAI,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;EAC1C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAC;EACnD,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAC;EACpD,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS;EAC/B,IAAI,IAAI,WAAW,EAAE;EACrB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,8GAA8G,CAAC,EAAC;EAC3J,KAAK,MAAM;EACX,MAAM,IAAI,cAAc,GAAG;EAC3B,QAAQ,MAAM,EAAE,MAAM,CAAC,WAAW;EAClC,QAAO;EACP,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;EAC5E,MAAM,MAAM,CAAC,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC;EAC7C,KAAK;EACL,GAAG;EACH,EAAE,OAAO,WAAW;EACpB,CAAC;AACD;EACO,SAAS,gBAAgB,CAAC,OAAO,EAAE;EAC1C,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;EAC9C,EAAE,IAAI,SAAS,EAAE;EACjB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAChD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE;EACtC,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;EAC5C,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACzC,MAAM,OAAO,qCAAqC,CAAC,MAAM,CAAC,CAAC;EAC3D,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;EAC1F,KAAK;EACL,GAAG,MAAM;EACT,IAAI,OAAO,CAAC,KAAK,CAAC,iIAAiI,CAAC,CAAC;EACrJ,GAAG;EACH,EAAE,OAAO,EAAE,CAAC;EACZ;;EClDA;AAgBA;EACe,2BAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;EACnC,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;EAC7D,EAAE,IAAI,CAAC,cAAc,EAAE;EACvB,IAAI,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;EAC/C,IAAI,OAAO;EACX,GAAG;EACH,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;EACzD,EAAE,uBAAuB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;EAC/C;;;;;;;;;;;;;;;ECzBA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC,SAAS,OAAO,EAAE;AACnB;EACA,IAAI,SAAS,YAAY,GAAG;EAC5B;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EAC3G,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;EACrB,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;AACnC;EACA,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B;EACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;EACpC,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EAC3B,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,UAAU,GAAG,WAAW;EACrC,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC;EAChC,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE;EACxC,YAAY,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;EACrE,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;EAChD,YAAY,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;EACnE,gBAAgB,aAAa,GAAG,IAAI,CAAC;EACrC,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;EAC/C,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;EAC1E,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;EACrC,aAAa,MAAM;EACnB,gBAAgB,MAAM,2BAA2B,GAAG,CAAC,GAAG,UAAU;EAClE,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzD,aACA,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;EAC/C,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;EACnD,YAAY,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;EACnE,gBAAgB,aAAa,GAAG,IAAI,CAAC;EACrC,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;EAC/C,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;EAC1E,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa,MAAM;EACnB,gBAAgB,OAAO,KAAK,CAAC;EAC7B,aAEA,SAAS,CAAC;AACV;EACA;EACA,QAAQ,IAAI,CAAC,OAAO,GAAG,WAAW;EAClC,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EAChF,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3B,aACA;EACA,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EAC7C,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aACA,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS,aAAa,EAAE;EACtD,YAAY,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;EAC5D,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3B,aACA,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,EAAE;EACtE,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;EACrD,oBAAoB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC/B,iBACA,gBAAgB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;EACnD,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;EACvC,YAAY,IAAI,UAAU,GAAG,CAAC,CAAC;EAC/B,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACnC,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;EACjC,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC;EAChC,YAAY,OAAO,IAAI,EAAE;EACzB,gBAAgB,IAAI,CAAC,OAAO,EAAE;EAC9B,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EACrD,wBAAwB,IAAI,UAAU,GAAG,CAAC,EAAE;EAC5C,4BAA4B,UAAU,EAAE,CAAC;EACzC,yBAAyB,MAAM;EAC/B,4BAA4B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC/C,4BAA4B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACnD,4BAA4B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACpE,yBACA,qBAAqB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EAC5D,wBAAwB,UAAU,EAAE,CAAC;EACrC,qBAAqB,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAClE,wBAAwB,MAAM,oBAAoB,CAAC;EACnD,qBACA,iBACA,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;EACpE,oBAAoB,OAAO,GAAG,IAAI,CAAC;EACnC;EACA,oBAAoB,OAAO,GAAG,KAAK,CAAC;EACpC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3B,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,aAAa,GAAG,WAAW;EACxC,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC;EACzB,YAAY,IAAI,QAAQ,GAAG,CAAC,CAAC;EAC7B,YAAY,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;EAClE,gBAAgB,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjD,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;EAC/C,oBAAoB,QAAQ,EAAE,CAAC;EAC/B,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;EAC/C,oBAAoB,QAAQ,EAAE,CAAC;EAC/B,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EACvD,oBAAoB,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EAC9E,iBACA,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3B,aACA,YAAY,OAAO,GAAG,CAAC;EACvB,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;EACvC,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACnC,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;EACjC,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC;EAChC,YAAY,OAAO,IAAI,EAAE;EACzB,gBAAgB,IAAI,CAAC,OAAO,EAAE;EAC9B,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EACrD,wBAAwB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC3C,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EAC/C,wBAAwB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAChE,qBAAqB,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAClE,wBAAwB,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EAClF,qBACA,iBAAiB;EACjB,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;EACpE,oBAAoB,OAAO,GAAG,IAAI,CAAC;EACnC;EACA,oBAAoB,OAAO,GAAG,KAAK,CAAC;EACpC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3B,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;EACvC,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;EACjC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACpC,gBAAgB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;EAC3C,aAAa,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EAC3C,gBAAgB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;EAC3C,aAAa,MAAM;EACnB,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACnC,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;EACvC,oBAAoB,OAAO,CAAC,CAAC;EAC7B,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;EAClE,oBAAoB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;EAC3C;EACA,oBAAoB,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;EAC7F;EACA,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW;EAChC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;EAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;EAC7C,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACvC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;EACjD,aACA,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACnC,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,GAAG,GAAG,WAAW;EAC9B,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;EACjC,YAAY,OAAO,IAAI,EAAE;EACzB,gBAAgB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EACnD,oBAAoB,MAAM,aAAa,CAAC;EACxC,iBACA;EACA;EACA,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;EACpE,oBAAoB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACjE,iBAAiB,MAAM;EACvB,oBAAoB,IAAI,CAAC,GAAG,EAAE,CAAC;EAC/B;EACA,iBACA,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,WAAW;EAC3C,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACjC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACpC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACvC,gBAAgB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACpC,aAAa,MAAM;EACnB,gBAAgB,MAAM,4CAA4C;EAClE,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzD,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,cAAc,GAAG,WAAW;EACzC,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC7C,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;EAChD,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC1D,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACvC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC;EACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACxC,oBAAoB,MAAM;EAC1B,iBAAiB;EAEjB,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC7C,gBAAgB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9D,aACA,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;EACtC,YAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACnC,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAC1D,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC5D,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5B,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;EAClC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACjD,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,SAAS,GAAG,WAAW;EACpC,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5B,YAAY,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EACpC,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,WAAW;EACnC,YAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACnC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;EACxD,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;EAC9D,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACjD,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,OAAO,GAAG,WAAW;EAClC,YAAY,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACnC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;EACvD,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;EAC9D,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACjD,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EACjC,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC/B,SAAS,CAAC;AACV;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,WAAW;EACjC,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE;EACnC,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EACzC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC,gBAAgB,IAAI,CAAC,IAAI,SAAS,EAAE;EACpC,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;EAClC,iBAAiB,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE;EAC7C,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC;EACpC,iBAAiB,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;EAC5C,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC;EACnC,iBAAiB,MAAM;EACvB,oBAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAClC,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAChC,aACA,SAAS,CAAC;EACV,KACA;EACA,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;EACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;EACnC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC3B,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;EACnB,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC;EACzB,KAAK,CAAC;AACN;EACA;EACA,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EACtC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;EACrB,QAAQ,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;EAC7B,YAAY,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;EAC3C,YAAY,GAAG,IAAI,GAAG,CAAC;EACvB,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;EACnC,gBAAgB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;EAClD,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;EAC7B,gBAAgB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;EACtC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;EACnC,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC;EAC9B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;EACnD,oBAAoB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;EACxC,wBAAwB,IAAI,IAAI,IAAI,CAAC;EACrC,oBAAoB,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EACvE,iBAAiB;EACjB,gBAAgB,GAAG,IAAI,IAAI,CAAC;EAC5B,aAAa;EACb,YAAY,GAAG,IAAI,OAAO,CAAC;EAC3B,SAAS;EACT,QAAQ,OAAO,GAAG,CAAC;EACnB;EACA,KAAK,CAAC;AACN;EACA,CAAC,GAA8D,OAAO,CAAC,CAAC;AACxE;EACA;;;ECjUA;AAeA;EACA,SAAS,YAAY,CAAC,MAAM,EAAE;EAC9B,EAAE,OAAO,MAAM;EACf,KAAK,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;EAC9B,KAAK,OAAO,CAAC,mCAAmC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;EAC1E,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC;EACtD,CAAC;AACD;EACO,SAAS,WAAW,CAAC,MAAM,EAAE;EACpC,EAAE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;EACjC,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;EACnD,EAAE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;EACrC;EACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;EAChE,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;EAC/D,KAAK;EACL,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;EAC3C;EACA,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;EACzD,GAAG;EACH,EAAE,OAAO,YAAY,CAAC;EACtB,CAAC;AACD;EACO,SAAS,4BAA4B,CAAC,WAAW,EAAE;EAC1D,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC;AACtC,YAAY,EAAE,WAAW,CAAC,aAAa,CAAC;AACxC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC;AAC/B,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,UAAU,EAAE,WAAW,CAAC,aAAa,CAAC;AACtC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC;AAC5B,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC;AAC3B,CAAC,CAAC,CAAC;EACH;;EC/CA;AAeA;EACO,SAAS,iBAAiB,CAAC,OAAO,EAAE;EAC3C,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;EAC9C,EAAE,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE;EACnD,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,aAAa,EAAE;EACzC,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;EAC3D,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;EACjC,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,EAAE;EAC9C,MAAM,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;EACxD,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,IAAI,CAAC,4CAA4C,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAClF,KAAK;EACL,GAAG,MAAM;EACT,IAAI,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;EAC9D,GAAG;EACH;;EC9BA;AAiBA;EACe,4BAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;EACnC,EAAE,MAAM,eAAe,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;EAC9D,EAAE,IAAI,CAAC,eAAe,EAAE;EACxB,IAAI,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;EAC/C,IAAI,OAAO;EACX,GAAG;AACH;EACA,EAAE,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EAClD,EAAE,IAAI,GAAG,EAAE;EACX,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC;EACjD,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAChD,IAAI,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC3C,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EAClD,IAAI,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;EACjC,IAAI,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;EAC9D,IAAI,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;EAC3C,IAAI,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EAC3C,GAAG;AACH;EACA,EAAE,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;EACzD;;ECtCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACO,SAAS,iBAAiB,CAAC,GAAG,GAAG,QAAQ,EAAE;EAClD,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;EAC9B,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;EAClD,EAAE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;EAC9B,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;EAChF,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;EACzD,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;EAC5B,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACzB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;EACxB,CAAC;AA8BD;EACA,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;EACrD,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE;EAC1B,IAAI,OAAO,EAAE,CAAC;EACd,GAAG;EACH,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;EACxC,EAAE,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI;EACvC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;EACvB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;EACjC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;EAC3C,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACtC,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;EACxC,MAAM,IAAI,IAAI,GAAG,IAAI;EACrB,SAAS,KAAK,CAAC,GAAG,CAAC;EACnB,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,SAAS,IAAI,EAAE,CAAC;EAChB,MAAM,IAAI,MAAM,GAAG,IAAI;EACvB,SAAS,KAAK,CAAC,GAAG,CAAC;EACnB,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrB,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC;EACnB,KAAK,MAAM;EACX,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;EAC7B,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;EACtB,IAAI,IAAI,MAAM,IAAI,SAAS,EAAE;EAC7B,MAAM,QAAQ,GAAG,MAAM;EACvB,SAAS,IAAI,EAAE;EACf,SAAS,KAAK,CAAC,GAAG,CAAC;EACnB,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,QAAQ;EACnB,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;EAC9B,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;EAC5B,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;EAChC,OAAO,IAAI,EAAE,CAAC;EACd,GAAG,CAAC,CAAC;EACL,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EACxB,IAAI,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAChE,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9D,IAAI,OAAO,GAAG,CAAC;EACf,GAAG,MAAM;EACT,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,CAAC;AACD;EACA,SAAS,YAAY,CAAC,GAAG,EAAE;EAC3B,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;EAChD,EAAE,IAAI,QAAQ,IAAI,GAAG,EAAE;EACvB,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;EACxC,IAAI,KAAK,GAAG,KAAK,IAAI,SAAS,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;EACxD,IAAI,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1C,GAAG;EACH,EAAE,IAAI,OAAO,IAAI,GAAG,EAAE;EACtB,IAAI,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;EACjC,GAAG;EACH,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC;EAC/B,EAAE,IAAI,WAAW,IAAI,GAAG,EAAE;EAC1B,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC;EAC1B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC;EAClD,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;AACD;EACA,SAAS,WAAW,CAAC,GAAG,EAAE;EAC1B,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE;EACpB,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;EACtB,IAAI,IAAI,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9D,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;EAC7B,MAAM,GAAG,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACzD,KAAK;AACL;EACA,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE;EACjC,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC;EACxB,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;EACzC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;EAC9D,GAAG;EACH;EACA,WAAW;EACX,IAAI,OAAO,EAAE,CAAC;EACd,GAAG;EACH,CAAC;EACD,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;EACnC,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE;EACpB,IAAI,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,0BAA0B;AAC/D,MAAM,GAAG,CAAC,GAAG;AACb,KAAK,wCAAwC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7D,GAAG,MAAM;EACT,IAAI,OAAO,EAAE,CAAC;EACd,GAAG;EACH,CAAC;AACD;EACA,SAAS,YAAY,CAAC,GAAG,EAAE;EAC3B,EAAE,OAAO,sBAAsB,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC;EACzD,CAAC;AACD;EACO,SAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE;EAC9C,EAAE,IAAI,GAAG,EAAE;EACX,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;EACjC,IAAI,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACtC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;EACpB,MAAM,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9D,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;EAChC,QAAQ,IAAI,IAAI,IAAI,CAAC;EACrB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;EAC9B,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;EAC5C,KAAK,MAAM;EACX,MAAM,IAAI,IAAI,IAAI,CAAC;EACnB,KAAK;EACL,IAAI,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;EAC9B,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,OAAO,IAAI,CAAC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG,MAAM;EACT,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;EACH;;ECzLA;AAeA;EACe,yBAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;EACnC,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5C,EAAE,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE;EACvC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EAC5B,GAAG;EACH,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACzC;;ECvBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACe,aAAQ,CAAC,GAAG,EAAE;AAC7B;EACA,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACzC;EACA;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;EACvD,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACzD,GAAG;AACH;EACA;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;EAC3C,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EAC3B,GAAG;AACH;EACA;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;EACjD,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;EAC1C,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;EACxE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EAC3B,GAAG;EACH;;ECrCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;AACA;EACO,SAAS,cAAc,CAAC,WAAW,EAAE;EAC5C,EAAE,OAAO,CAAC;AACV;AACA;AACA;AACA;AACA,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC;AAC3C;AACA,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC;AAClC,kCAAkC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAChF,+BAA+B,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD;AACA;AACA,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW;AAC7C,UAAU,WAAW,CAAC,GAAG,GAAG,CAAC,6BAA6B,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/J,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB;AACA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB;AACA;AACA;AACA,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,CAAC;AACrC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5G,0CAA0C,CAAC,CAAC;AAC5C;AACA;AACA,CAAC,CAAC;EACF;;EC3CA;AAeA;EACe,eAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;EACnC,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EAC/C,EAAE,IAAI,MAAM,EAAE;EACd,IAAI,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;EAC5C,GAAG;EACH;;ECrBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;AACA;EACe,2BAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;EACnC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;EACxB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAClD;EACA;EACA,EAAE,IAAI,CAAC,OAAO,EAAE;EAChB,IAAI,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;EACjF,IAAI,OAAO;EACX,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EAC7C,EAAE,IAAI,CAAC,MAAM,EAAE;EACf,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;EACtB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACzC,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;EAC3F,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EAC3C,EAAE,IAAI,CAAC,KAAK,EAAE;EACd,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACrC,GAAG;AACH;EACA,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;EACrC,EAAE,IAAI,CAAC,EAAE,EAAE;EACX,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;EACjC,IAAI,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC;EAC3D,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;EAC1D,EAAE,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE;EACpC,IAAI,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;EACpD,IAAI,MAAM,WAAW,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;EACpF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE;EACpC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;EACzD,MAAM,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;EAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EACvD,KAAK;EACL,GAAG,MAAM,IAAI,CAAC,WAAW,IAAI,YAAY,EAAE;EAC3C,IAAI,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EACjD,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EAC/C,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnC,GAAG;AACH;EACA,EAAE,IAAI,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EAC1D,EAAE,IAAI,CAAC,YAAY,EAAE;EACrB,IAAI,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACxD,IAAI,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;EACvC,GAAG;AACH;EACA,EAAE,IAAI,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EAC1D,EAAE,IAAI,CAAC,YAAY,EAAE;EACrB,IAAI,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACxD,IAAI,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;EACvC,GAAG;AACH;EACA;;;ECxFA,CAAC,SAAS,CAAC,CAAC,CAA2D,CAAC,cAAc,CAAC,CAAC,GAAE,CAAoO,CAAC,EAAE,UAAU,CAA2B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAOA,eAAO,EAAE,UAAU,EAAEA,eAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAOA,eAAO,EAAE,UAAU,EAAEA,eAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE50B;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1C;EACA,IAAI,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACnD;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC5C;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC5C;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACpC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;EAC5D,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACxC;EACA,IAAI,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnD;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EAC9D,IAAI,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7E;EACA,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;EACrC,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,YAAY,EAAE;EAC9C,QAAQ,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,6DAA6D,GAAG,iCAAiC,CAAC,CAAC;AAC1J;EACA,QAAQ,MAAM,GAAG,SAAS,MAAM,GAAG;EACnC,YAAY,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;EACjF,SAAS,CAAC;EACV,KAAK;EACL,CAAC;AACD;EACA;EACA;EACA;EACA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE;EAClE,IAAI,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnD;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EAC9D,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC3E,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE;EACxE,IAAI,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACnD,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EAC1D,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG;EACjB,IAAI,MAAM,EAAE,MAAM;EAClB,IAAI,cAAc,EAAE,cAAc;EAClC;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,iBAAiB;EAC9B,IAAI,UAAU,EAAE,YAAY,CAAC,OAAO;EACpC,CAAC,CAAC;AACF;EACA,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC7I,MAAM,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,mCAAmC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;EAC/F,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC9E,MAAM,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,2CAA2C,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;EACvG,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAEtF;EACA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B;EACA,OAAO,CAAC,OAAO,GAAG,UAAU,QAAQ,EAAE,WAAW,EAAE;EACnD,EAAE,IAAI,EAAE,QAAQ,YAAY,WAAW,CAAC,EAAE;EAC1C,IAAI,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;EAC7D,GAAG;EACH,CAAC,CAAC;EACF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAEzC;EACA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B;EACA,IAAI,eAAe,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACnE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAC/D;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA,OAAO,CAAC,OAAO,GAAG,YAAY;EAC9B,EAAE,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;EAC7D,MAAM,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;EACrC,MAAM,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC5D,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;EACxE,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,UAAU,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;EACzD,IAAI,IAAI,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;EACxE,IAAI,IAAI,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAChE,IAAI,OAAO,WAAW,CAAC;EACvB,GAAG,CAAC;EACJ,CAAC,EAAE,CAAC;EACJ,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC9E,IAAI,IAAI,IAAI,OAAO,CAAC,qBAAqB,CAAC;EAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;EACnE,MAAM,CAAC,OAAO,GAAG,SAAS,SAAS,CAAC,EAAE,CAAC;EACvC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EACjD,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EACjE,OAAO,CAAC,0CAA0C,CAAC,CAAC;EACpD,IAAI,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;EACpD,MAAM,CAAC,OAAO,GAAG,SAAS,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC;EACvD,EAAE,OAAO,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EAC/C,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC/G,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;EAC7B,EAAE,GAAG,OAAO,EAAE,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC;EACzE,EAAE,OAAO,EAAE,CAAC;EACZ,CAAC,CAAC;EACF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EACzC,IAAI,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;EACvC,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;EAC7B,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,SAAS,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC;EAC9D,EAAE,OAAO,EAAE,CAAC;EACZ,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC3D,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAC/C,GAAG,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;EACrC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1C;EACA,IAAI,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;EACzC,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC;EAC3C,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;EAChB,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;EAClC,EAAE,OAAO,MAAM;EACf,IAAI,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,CAAC;EAC9B,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EAC9B,KAAK,CAAC;EACN,IAAI,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;EACjC,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACjC,KAAK,CAAC;EACN,IAAI,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACpC,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO,uBAAuB;EAChC,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EACrC,GAAG,CAAC;EACJ,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC3D;EACA,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU;EAChD,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/E,CAAC,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EACvD,IAAI,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;EACtC,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ;EAC5C;EACA,IAAI,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;EAChE,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;EAC7B,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;EAC9C,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1E,IAAI,MAAM,MAAM,OAAO,CAAC,WAAW,CAAC;EACpC,IAAI,IAAI,QAAQ,OAAO,CAAC,SAAS,CAAC;EAClC,IAAI,GAAG,SAAS,OAAO,CAAC,QAAQ,CAAC;EACjC,IAAI,IAAI,QAAQ,OAAO,CAAC,SAAS,CAAC;EAClC,IAAI,SAAS,GAAG,WAAW,CAAC;AAC5B;EACA,IAAI,OAAO,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;EAC1C,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;EAClC,MAAM,OAAO,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;EACpE,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;EACpC,MAAM,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC;EACjG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACpB,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;EAC7B,EAAE,IAAI,GAAG,IAAI,MAAM,CAAC;EACpB;EACA,IAAI,GAAG,GAAG,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;EAC5D,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS;EACtC;EACA,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC1C;EACA,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;EAC9E;EACA,MAAM,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;EACvC;EACA,MAAM,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;EAClD,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC/B,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC;EAC7B,UAAU,OAAO,SAAS,CAAC,MAAM;EACjC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC;EACjC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,YAAY,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACvC,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAC1C,OAAO,CAAC;EACR,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;EAClC,MAAM,OAAO,CAAC,CAAC;EACf;EACA,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,IAAI,OAAO,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EACnF;EACA,IAAI,GAAG,QAAQ,CAAC;EAChB,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EAC7D;EACA,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACjF,KAAK;EACL,GAAG;EACH,CAAC,CAAC;EACF;EACA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EACd,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;EACf,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;EACf,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;EACf,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC;EAChB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;EACzB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC9F,MAAM,CAAC,OAAO,GAAG,SAAS,IAAI,CAAC;EAC/B,EAAE,IAAI;EACN,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;EACpB,GAAG,CAAC,MAAM,CAAC,CAAC;EACZ,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,CAAC,CAAC;EACF,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1C;EACA,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,MAAM,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;EACjF,IAAI,MAAM,GAAG,OAAO,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;EAChG,GAAG,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC;EACvC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1C,IAAI,EAAE,WAAW,OAAO,CAAC,cAAc,CAAC;EACxC,IAAI,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;EAC7C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;EACzE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;EACjD,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;EAChC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACtB,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EACrG,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU;EAC9E,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5G,CAAC,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC9F,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;EAC7B,EAAE,OAAO,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,EAAE,KAAK,UAAU,CAAC;EACzE,CAAC,CAAC;EACF,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1C,IAAI,QAAQ,SAAS,OAAO,CAAC,cAAc,CAAC;EAC5C,IAAI,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;EACjD,IAAI,WAAW,MAAM,OAAO,CAAC,iBAAiB,CAAC;EAC/C,IAAI,EAAE,eAAe,MAAM,CAAC,cAAc,CAAC;AAC3C;EACA,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;EACzG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;EACd,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC3B,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;EACvB,EAAE,GAAG,cAAc,CAAC,IAAI;EACxB,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;EAChC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe;EAC3B,EAAE,GAAG,KAAK,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,0BAA0B,CAAC,CAAC;EAC5F,EAAE,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;EACnD,EAAE,OAAO,CAAC,CAAC;EACX,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1H,MAAM,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE,KAAK,CAAC;EACxC,EAAE,OAAO;EACT,IAAI,UAAU,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;EAC/B,IAAI,YAAY,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;EAC/B,IAAI,QAAQ,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;EAC/B,IAAI,KAAK,SAAS,KAAK;EACvB,GAAG,CAAC;EACJ,CAAC,CAAC;EACF,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC1C;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;EACvC;EACA;EACA,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;EAChC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;EAC7B,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC;EACd,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;EAC7F,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;EACvF,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;EAC9F,EAAE,MAAM,SAAS,CAAC,yCAAyC,CAAC,CAAC;EAC7D,CAAC,CAAC;EACF,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAC3D,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;EACnC;EACA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACnH,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAI9F;EACA,SAAS,cAAc,CAAC,EAAE,EAAE;EAC5B;EACA,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE;EAChC;EACA;EACA;EACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC;EACA;EACA,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;EACtG;EACA;EACA,KAAK;AACL;EACA,IAAI,EAAE,CAAC,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;EACxD,GAAG;EACH,EAAE,OAAO,EAAE,CAAC,oBAAoB,CAAC;EACjC,CAAC;AACD;EACA,SAAS,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;EAC/B,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE;EAC9B,IAAI,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;EAC3E,GAAG;EACH,EAAE,IAAI,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;EACjC,EAAE,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;EACxB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9B;EACA;EACA,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;EACvC;EACA,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG,MAAM;EACT,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG;EACH,CAAC;AACD;EACA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;EACzB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;EAE1C;EACA,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;EACrD,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AAC7D;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE;EACvB,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;EACxC,EAAE,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;EAC/E,EAAE;AACF;EACA,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;EACpB,CAAC;AACD;EACA,SAAS,eAAe,GAAG;EAC3B,CAAC,IAAI;EACL,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;EACtB,GAAG,OAAO,KAAK,CAAC;EAChB,GAAG;AACH;EACA;AACA;EACA;EACA,EAAE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;EAChC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAClB,EAAE,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACpD,GAAG,OAAO,KAAK,CAAC;EAChB,GAAG;AACH;EACA;EACA,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;EACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC/B,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;EAClE,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACnB,GAAG,CAAC,CAAC;EACL,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,YAAY,EAAE;EACxC,GAAG,OAAO,KAAK,CAAC;EAChB,GAAG;AACH;EACA;EACA,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;EACjB,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;EAC7D,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC1B,GAAG,CAAC,CAAC;EACL,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;EACpD,IAAI,sBAAsB,EAAE;EAC5B,GAAG,OAAO,KAAK,CAAC;EAChB,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd,EAAE,CAAC,OAAO,CAAC,EAAE;EACb;EACA,EAAE,OAAO,KAAK,CAAC;EACf,EAAE;EACF,CAAC;AACD;EACA,MAAM,CAAC,OAAO,GAAG,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;EAC/E,CAAC,IAAI,IAAI,CAAC;EACV,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC3B,CAAC,IAAI,OAAO,CAAC;AACb;EACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,EAAE,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B;EACA,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;EACxB,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;EACvC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;EACxB,IAAI;EACJ,GAAG;AACH;EACA,EAAE,IAAI,MAAM,CAAC,qBAAqB,EAAE;EACpC,GAAG,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;EAChD,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5C,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;EACjD,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,KAAK;EACL,IAAI;EACJ,GAAG;EACH,EAAE;AACF;EACA,CAAC,OAAO,EAAE,CAAC;EACX,CAAC,CAAC;AACF;EACA,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE1C;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACnC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,KAAK,GAAG,YAAY;EACxB,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;EAC5C,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD;EACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;EACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,KAAK;AACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;EACvC,QAAQ,GAAG,EAAE,OAAO;EACpB,QAAQ,KAAK,EAAE,SAAS,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;EAC9C,YAAY,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;EAC/C,gBAAgB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;EACvC,aAAa;EACb,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;EACzE,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,UAAU,GAAG,IAAI,MAAM,CAAC,eAAe;EAC3C,8CAA8C;EAC9C,iCAAiC;EACjC,qCAAqC;EACrC,GAAG,CAAC,CAAC;AACL;EACA;EACA;EACA;AACA;EACA,IAAI,KAAK,GAAG,YAAY;EACxB,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE;EAC1B,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;EACrB,KAAK;AACL;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;EACvC,QAAQ,GAAG,EAAE,KAAK;EAClB,QAAQ,KAAK,EAAE,SAAS,GAAG,GAAG;EAC9B,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACnC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC/B,YAAY,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,EAAE;EACtC,gBAAgB,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EACxD,aAAa;EACb,YAAY,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;EACvE,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE;EAChC,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EACxI,aAAa;EACb,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;EACvC,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;EACjC,YAAY,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;EACxC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EAC/B,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EACrD,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB;EACA,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAExJ;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAClC;EACA,IAAI,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC/C;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7C;EACA,IAAI,cAAc,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC3D;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,aAAa,GAAG,YAAY;EAChC,IAAI,SAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;EAC1C,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AAC3D;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAChD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAChF,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACxB,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;EACtC,KAAK;AACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;EAC/C,QAAQ,GAAG,EAAE,WAAW;EACxB,QAAQ,KAAK,EAAE,SAAS,SAAS,GAAG;EACpC,YAAY,SAAS;EACrB,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7C,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EACtD,iBAAiB;EACjB,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;EAChD,gBAAgB,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;EACzC,gBAAgB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE;EACpF,oBAAoB,OAAO,QAAQ,CAAC;EACpC,iBAAiB;EACjB,gBAAgB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EACjC,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAClD,gBAAgB,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;EACnD,oBAAoB,IAAI,OAAO,GAAG,CAAC,CAAC;EACpC,oBAAoB,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;EACvD,wBAAwB,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EACpE,wBAAwB,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;EAC7E,4BAA4B,EAAE,OAAO,CAAC;EACtC,yBAAyB;EACzB,qBAAqB;EACrB,oBAAoB,IAAI,SAAS,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;EACnE,oBAAoB,SAAS,GAAG,EAAE,CAAC;EACnC,oBAAoB,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;EAC1C,oBAAoB,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;EAC/C,wBAAwB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5C,wBAAwB,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;EAC9C,qBAAqB;EACrB,oBAAoB,SAAS,CAAC,OAAO,EAAE,CAAC;EACxC,oBAAoB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;EAChD,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;EAClD,iBAAiB;EACjB,gBAAgB,IAAI,SAAS,CAAC,OAAO,EAAE;EACvC,oBAAoB,IAAI,IAAI,GAAG,EAAE,CAAC;EAClC,oBAAoB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;EACnC;EACA,oBAAoB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;EAC5D,wBAAwB,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACxD,wBAAwB,IAAI,UAAU,CAAC,IAAI,KAAK,GAAG,EAAE;EACrD,4BAA4B,IAAI,GAAG,GAAG,EAAE,CAAC;EACzC,4BAA4B,IAAI,KAAK,GAAG,CAAC,CAAC;EAC1C,4BAA4B,OAAO,KAAK,KAAK,CAAC,EAAE;EAChD,gCAAgC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACtD,gCAAgC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,gCAAgC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EACtD,oCAAoC,EAAE,KAAK,CAAC;EAC5C,iCAAiC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAC7D,oCAAoC,EAAE,KAAK,CAAC;EAC5C,iCAAiC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;EAC/D,oCAAoC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC;EACjH,iCAAiC;EACjC,6BAA6B;EAC7B,4BAA4B,GAAG,CAAC,GAAG,EAAE,CAAC;EACtC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC;EAC1C,4BAA4B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC1C,yBAAyB,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE;EAC9D,4BAA4B,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC;EAC9G,yBAAyB,MAAM;EAC/B,4BAA4B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;EACnD,yBAAyB;EACzB,qBAAqB;EACrB;EACA,oBAAoB,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;EAClD,oBAAoB,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EAChE,wBAAwB,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3C,wBAAwB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAC9C,4BAA4B,IAAI,CAAC,KAAK,CAAC,EAAE;EACzC,gCAAgC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;EACnH,6BAA6B;EAC7B,4BAA4B,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;EACjD,4BAA4B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAClD;EACA,gCAAgC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3D,6BAA6B,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;EACjE;EACA;EACA;EACA,gCAAgC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACrG,6BAA6B,MAAM;EACnC,gCAAgC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;EACnG,6BAA6B;EAC7B,yBAAyB;EACzB,qBAAqB;EACrB,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EAC1D,aAAa;EACb,SAAS;EACT,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,KAAK;EAClB,QAAQ,KAAK,EAAE,SAAS,GAAG,CAAC,WAAW,EAAE;EACzC,YAAY,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;EAC1C,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EACzC,YAAY,IAAI,WAAW,EAAE;EAC7B,gBAAgB,OAAO,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;EAC3C,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzD,oBAAoB,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EAC7C,iBAAiB;EACjB,aAAa;EACb,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,OAAO;EACpB,QAAQ,KAAK,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE;EACrC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,YAAY,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1D,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;EAChE,aAAa;EACb,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,aAAa,CAAC;EACzB,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;AAC/B;EACA,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAExL;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA,IAAI,QAAQ,GAAG,CAAC,CAAC;EACjB;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,YAAY,GAAG;EACnB;EACA;EACA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACT,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;EACV,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACb;EACA,IAAI,eAAe,GAAG;EACtB;EACA;EACA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9D;EACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;EACpD,IAAI,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;EAC1E,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,OAAO,GAAG,YAAY;EAC1B,IAAI,SAAS,OAAO,CAAC,IAAI,EAAE;EAC3B,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACrD;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;EAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;EACnD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;EACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EAC9B,QAAQ,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;EAC7D,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EACjC,KAAK;AACL;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;EACzC,QAAQ,GAAG,EAAE,QAAQ;EACrB,QAAQ,KAAK,EAAE,SAAS,MAAM,CAAC,SAAS,EAAE;EAC1C,YAAY,IAAI,IAAI,GAAG;EACvB,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;EACjC,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI;EAC/B,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ;EACvC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;EACjC,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO;EACrC,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI;EAC/B,aAAa,CAAC;AACd;EACA,YAAY,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;EACvC,gBAAgB,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;EACnD,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/C,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;EACrC,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,aAAa;EAC1B,QAAQ,KAAK,EAAE,SAAS,WAAW,CAAC,KAAK,EAAE;EAC3C,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;EACtC,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC;EACnC,oBAAoB,KAAK,EAAE,KAAK;EAChC,oBAAoB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;EAC3D,iBAAiB,CAAC,CAAC;EACnB,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,oBAAoB;EACjC,QAAQ,KAAK,EAAE,SAAS,kBAAkB,GAAG;EAC7C,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;EACxD,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,CAAC,IAAI,EAAE;EACzC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;EAC9D,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC;EACnC,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;EAC5C,oBAAoB,IAAI,EAAE,IAAI;EAC9B,oBAAoB,QAAQ,EAAE,IAAI;EAClC,iBAAiB,CAAC,CAAC;EACnB,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,iBAAiB;EAC9B,QAAQ,KAAK,EAAE,SAAS,eAAe,CAAC,KAAK,EAAE;EAC/C,YAAY,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;EAC/C,YAAY,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EACxD,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;EAC9F,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC;EACnC,oBAAoB,KAAK,EAAE,KAAK;EAChC,oBAAoB,IAAI,EAAE,QAAQ;EAClC,oBAAoB,QAAQ,EAAE,QAAQ;EACtC,iBAAiB,CAAC,CAAC;EACnB,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,WAAW;EACxB,QAAQ,KAAK,EAAE,SAAS,SAAS,CAAC,KAAK,EAAE;EACzC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC;EAC/B,gBAAgB,KAAK,EAAE,KAAK;EAC5B,aAAa,CAAC,CAAC;EACf,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,aAAa;EAC1B,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;EACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC;EAC/B,gBAAgB,OAAO,EAAE,IAAI;EAC7B,aAAa,CAAC,CAAC;EACf,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,UAAU;EACvB,QAAQ,KAAK,EAAE,SAAS,QAAQ,CAAC,IAAI,EAAE;EACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC;EAC/B,gBAAgB,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;EACvC,aAAa,CAAC,CAAC;EACf,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,eAAe;EAC5B,QAAQ,KAAK,EAAE,SAAS,aAAa,CAAC,UAAU,EAAE;EAClD,YAAY,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;EAC/C,gBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;EACtF,aAAa,MAAM;EACnB,gBAAgB,OAAO,EAAE,CAAC;EAC1B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,mBAAmB;EAChC,QAAQ,KAAK,EAAE,SAAS,iBAAiB,GAAG;EAC5C,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;EACxC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;EAC/E,aAAa,MAAM;EACnB,gBAAgB,OAAO,EAAE,CAAC;EAC1B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,aAAa;EAC1B,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;EACtC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;EACpC,gBAAgB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpF,aAAa;EACb,YAAY,OAAO,IAAI,CAAC,YAAY,CAAC;EACrC,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,UAAU;AACvB;AACA;EACA;EACA;EACA;EACA;EACA,QAAQ,KAAK,EAAE,SAAS,QAAQ,GAAG;EACnC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;EAC9B,gBAAgB,OAAO,aAAa,CAAC;EACrC,aAAa,MAAM;EACnB,gBAAgB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;EAClE,aAAa;EACb,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,OAAO,CAAC;EACnB,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;AACA;AACA;EACA,OAAO,CAAC,QAAQ,GAAG;EACnB,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,WAAW,EAAE,SAAS;EAC1B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,YAAY,EAAE,MAAM;EACxB,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,YAAY,EAAE,SAAS;EAC3B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,eAAe,EAAE,SAAS;EAC9B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,aAAa,EAAE,SAAS;EAC5B,IAAI,cAAc,EAAE,SAAS;EAC7B,IAAI,eAAe,EAAE,SAAS;EAC9B,CAAC,CAAC;EACF,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B;EACA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;EACA,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE3I;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE;EACrD,IAAI,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACpD;EACA,IAAI,IAAI,KAAK,GAAG,qBAAqB,GAAG,OAAO,CAAC;EAChD,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EACvB,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;AACrB;EACA,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;EAC1D;AACA;EACA;EACA,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC;EACA;EACA,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EAC5B,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;EACxB,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE;EACpC,YAAY,KAAK,IAAI,oBAAoB,CAAC;EAC1C,SAAS,MAAM;EACf,YAAY,KAAK,IAAI,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAC1D,SAAS;AACT;EACA;EACA,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7E;EACA;EACA,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EAC1B,QAAQ,IAAI,KAAK,GAAG,EAAE,EAAE;EACxB,YAAY,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;EACxD,SAAS,MAAM;EACf,YAAY,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACzC,SAAS;EACT,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EAC3B,QAAQ,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;EACrC,YAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;EACrD,SAAS,MAAM;EACf,YAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrC,SAAS;EACT,QAAQ,KAAK,IAAI,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC;EAC3C,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;EAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAC1C;EACA,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;AACA;AACA;EACA,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACjD;EACA,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;AAC5B;EACA,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAElF;EACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC7C,IAAI,KAAK,EAAE,IAAI;EACf,CAAC,CAAC,CAAC;AACH;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE;EAC7E,IAAI,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACnD;EACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,UAAU,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE;EAC5E,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;EACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;EACtC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,UAAU,EAAE,GAAG,CAAC;EACjD,KAAK;EACL,CAAC,CAAC;AACF;EACA,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B;EACA,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAElF;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC9C;EACA,IAAI,cAAc,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC3D;EACA,IAAI,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD;EACA,IAAI,eAAe,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAC7D;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAClD;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;EACxD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB;EACA,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,CAAC;AACD;EACA,IAAI,MAAM,GAAG,YAAY;EACzB,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;EACrC,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD;EACA;EACA;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC1E;EACA;EACA,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE;EACvC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;EAC1D,SAAS;EACT;EACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACjC;EACA,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;EAChC,KAAK;AACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;EACxC,QAAQ,GAAG,EAAE,QAAQ;EACrB,QAAQ,KAAK,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;EAC9C,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;EAC9C,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7H,aAAa;EACb,YAAY,IAAI,OAAO,KAAK,KAAK,EAAE;EACnC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,SAAS;EACtB,QAAQ,KAAK,EAAE,SAAS,OAAO,GAAG;EAClC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;EACnE,SAAS;EACT,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,EAAE;EAC5C,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC9C,YAAY,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;EAChC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;EAC3B,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,OAAO;EACpB,QAAQ,KAAK,EAAE,SAAS,KAAK,GAAG;EAChC;EACA,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC/B,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;EAC3B,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;EAC1C,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,GAAG;EACrC;EACA,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACzD;EACA,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EACtC,YAAY,OAAO,UAAU,CAAC;EAC9B,SAAS;EACT,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,iBAAiB;AAC9B;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,KAAK,EAAE,SAAS,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE;EACxE,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;EAC1B;EACA;EACA,YAAY,OAAO,IAAI,EAAE;EACzB,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;EACzC,gBAAgB,IAAI,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;EACrE,oBAAoB,MAAM;EAC1B,iBAAiB;EACjB,gBAAgB,IAAI,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;EACvE,oBAAoB,MAAM;EAC1B,iBAAiB;EACjB,gBAAgB,IAAI,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;EAC1G,oBAAoB,MAAM;EAC1B,iBAAiB;EACjB,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;EAC5C,gBAAgB,IAAI,CAAC,IAAI,EAAE;EAC3B,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;EAC7E,wBAAwB,IAAI,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;EACpE,wBAAwB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC7C,wBAAwB,SAAS;EACjC,qBAAqB;AACrB;EACA,oBAAoB,MAAM;EAC1B,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAChC,aAAa;EACb,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC/C,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,kBAAkB;EAC/B,QAAQ,KAAK,EAAE,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC/C,YAAY,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;EAC/B,YAAY,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AAClC;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnC,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;EAC3C,oBAAoB,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;EAC1C,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,mCAAmC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC9G,qBAAqB;EACrB,oBAAoB,SAAS,GAAG,CAAC,CAAC;EAClC,oBAAoB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;EACtD,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;EAClC,gBAAgB,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EACvC,gBAAgB,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvC;EACA,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;EACzD,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC1D;EACA,gBAAgB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;EAChF,oBAAoB,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC7C,iBAAiB,MAAM;EACvB,oBAAoB,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1F,iBAAiB;AACjB;EACA,gBAAgB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;EAChF,oBAAoB,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC7C,iBAAiB,MAAM;EACvB,oBAAoB,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1F,iBAAiB;AACjB;EACA,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;EACtF,gBAAgB,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/E,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,SAAS;AACT;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,oBAAoB;AACjC;AACA;EACA;EACA;EACA;EACA,QAAQ,KAAK,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;EACjD,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;EAC7C,YAAY,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;EAC1C,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;EAC3B,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1C;EACA,YAAY,IAAI,CAAC,KAAK,EAAE;EACxB,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;EACpF,oBAAoB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;EACvD,iBAAiB,MAAM;EACvB,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,wBAAwB,GAAG,MAAM,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC;EACzG,iBAAiB;EACjB,aAAa,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;EACzC;EACA;EACA,gBAAgB,IAAI,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;EAClF,gBAAgB,IAAI,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE;EAC/D,oBAAoB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACrD,iBAAiB,MAAM;EACvB,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,sBAAsB,GAAG,KAAK,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC;EACzI,iBAAiB;EACjB,aAAa,MAAM;EACnB,gBAAgB,OAAO,KAAK,CAAC,MAAM,CAAC;EACpC,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,sBAAsB;EACnC,QAAQ,KAAK,EAAE,SAAS,oBAAoB,GAAG;EAC/C,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;EAC3C,YAAY,IAAI,YAAY,GAAG,EAAE,CAAC;AAClC;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;EACvF,aAAa;AACb;EACA,YAAY,IAAI,QAAQ,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;EAC3D,gBAAgB,IAAI,EAAE,YAAY;EAClC,gBAAgB,IAAI,EAAE,MAAM;EAC5B,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B;EACA,YAAY,IAAI,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE;EAC7D,gBAAgB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;EAC/C,gBAAgB,KAAK,EAAE,CAAC,QAAQ,CAAC;EACjC,gBAAgB,IAAI,EAAE,OAAO;EAC7B,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B;EACA,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;EAC3B,YAAY,OAAO,SAAS,CAAC;EAC7B,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,WAAW;EACxB,QAAQ,KAAK,EAAE,SAAS,SAAS,GAAG;EACpC;EACA;EACA,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACjD;EACA;EACA,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;EACtC,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;AACb;EACA;AACA;EACA,YAAY,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EACrC,YAAY,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EACnC,YAAY,OAAO,IAAI,EAAE;EACzB;EACA,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC;EACA,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;EAC1E;EACA,oBAAoB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;EACrD,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;EAC1G,qBAAqB,MAAM;EAC3B,wBAAwB,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;EAC7D,wBAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;EACnD,wBAAwB,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;EAC7D,qBAAqB;EACrB,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC;EACnC,iBAAiB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAC7C;EACA,oBAAoB,IAAI,WAAW,EAAE;EACrC,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;EAClF,qBAAqB;EACrB,oBAAoB,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;EACzE,iBAAiB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAC7C;EACA,oBAAoB,IAAI,SAAS,EAAE;EACnC,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;EAChF,qBAAqB;EACrB,oBAAoB,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;EACrE,iBAAiB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;EAC7C;EACA,oBAAoB,IAAI,WAAW,EAAE;EACrC,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;EAClF,qBAAqB;EACrB,oBAAoB,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF;EACA;EACA,oBAAoB,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;EACzC,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC;EACnC;EACA,oBAAoB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;EACxD;EACA,wBAAwB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC3C,wBAAwB,IAAI,CAAC,OAAO,EAAE,CAAC;EACvC,qBAAqB;EACrB;EACA;EACA,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;EACrD,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;EAC5E,qBAAqB;EACrB;EACA,oBAAoB,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EACzF,iBAAiB,MAAM;EACvB;EACA,oBAAoB,MAAM;EAC1B,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,WAAW,IAAI,SAAS,EAAE;EAC1C;EACA,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE;EACzD,oBAAoB,IAAI,EAAE,IAAI;EAC9B,oBAAoB,GAAG,EAAE,WAAW;EACpC,oBAAoB,GAAG,EAAE,SAAS;EAClC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,aAAa,MAAM;EACnB;EACA,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,SAAS;AACT;EACA;AACA;AACA;EACA;AACA;AACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,oBAAoB;AACjC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,KAAK,EAAE,SAAS,kBAAkB,GAAG;EAC7C,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3C;EACA,YAAY,IAAI,KAAK,IAAI,IAAI,EAAE;EAC/B;EACA,gBAAgB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;EAC5C,aAAa;AACb;EACA,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;AACpC;EACA,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE;EACnC;EACA;EACA,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACrD;EACA,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC;EACtC,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACvD,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC;EACtC;EACA,gBAAgB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;EAC9C,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;EACjD,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;EAC5D,oBAAoB,IAAI,EAAE,IAAI;EAC9B,oBAAoB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;EAC1C,oBAAoB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;EAC5C,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,aAAa,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;EAC3C;EACA,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACtD,gBAAgB,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EAC/C,gBAAgB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;EACrE,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,uBAAuB,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;EAC7G,iBAAiB;EACjB;EACA;EACA,gBAAgB,IAAI,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC1D,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;EAChF,gBAAgB,IAAI,OAAO,GAAG;EAC9B,oBAAoB,IAAI,EAAE,IAAI,CAAC,IAAI;EACnC,oBAAoB,OAAO,EAAE,OAAO;EACpC,oBAAoB,MAAM,EAAE,IAAI;EAChC,oBAAoB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;EACzC,iBAAiB,CAAC;EAClB,gBAAgB,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACxD,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EAC5C,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;EAClD,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;EAC/C,gBAAgB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;EAChD,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,YAAY,CAAC,CAAC;EACrJ,iBAAiB;EACjB,gBAAgB,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;EAC/C,gBAAgB,OAAO,MAAM,CAAC;EAC9B,aAAa,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;EACzE;EACA,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;EACrC,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACxD,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE;EACzD;EACA,oBAAoB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC;EAC7E,oBAAoB,KAAK,EAAE,KAAK;EAChC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,aAAa,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;EAC1E;EACA,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;EACrC,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;EACxD,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE;EAC1D;EACA;EACA,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACzD,oBAAoB,KAAK,EAAE,MAAM;EACjC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,aAAa,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;EACpD,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;EACtD;EACA,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;EACrC,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;EACxD,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;EAClD,oBAAoB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;EAC3D,wBAAwB,KAAK,EAAE,KAAK;EACpC,wBAAwB,IAAI,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;EACpF,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,iBAAiB,MAAM;EACvB,oBAAoB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;EAC3D,wBAAwB,IAAI,EAAE,KAAK;EACnC,wBAAwB,IAAI,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;EACpF,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,iBAAiB;EACjB,aAAa,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;EAC3C;EACA,gBAAgB,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACxD,gBAAgB,IAAI,CAAC,KAAK,EAAE;EAC5B,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;EACpF,iBAAiB;EACjB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;EACxD,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE;EACxD,oBAAoB,IAAI,EAAE,OAAO;EACjC,oBAAoB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;EAC7C,oBAAoB,KAAK,EAAE,MAAM;EACjC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EAC9B,aAAa,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;EACrC,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;EAC1C,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;EACzE,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;EAC1C,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;EACxC,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC9D,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvC,gBAAgB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EAC3C,gBAAgB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE;EAC1D,oBAAoB,KAAK,EAAE,MAAM;EACjC,oBAAoB,KAAK,EAAE,MAAM;EACjC,iBAAiB,EAAE,MAAM,CAAC,CAAC;EAC3B,aAAa,MAAM;EACnB;EACA,gBAAgB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EACjD,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,eAAe;EAC5B,QAAQ,KAAK,EAAE,SAAS,aAAa,CAAC,SAAS,EAAE;EACjD,YAAY,IAAI,CAAC,SAAS,EAAE;EAC5B,gBAAgB,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;EAC9C,aAAa;AACb;EACA,YAAY,IAAI,SAAS,EAAE;EAC3B,gBAAgB,IAAI,SAAS,CAAC,UAAU,EAAE;EAC1C,oBAAoB,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;EAChD,oBAAoB,IAAI,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7D,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EACzE,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,GAAG,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;EAC1H,qBAAqB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE;EACzF,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,GAAG,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;EAC1H,qBAAqB;AACrB;EACA,oBAAoB,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACnE,oBAAoB,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;EAChD,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;EAClF,oBAAoB,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;EACnF,iBAAiB,MAAM;EACvB,oBAAoB,OAAO,SAAS,CAAC,MAAM,CAAC;EAC5C,iBAAiB;EACjB,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,cAAc;EAC3B,QAAQ,KAAK,EAAE,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;EACnE,YAAY,IAAI,OAAO,GAAG;EAC1B,gBAAgB,QAAQ,EAAE,IAAI;EAC9B,gBAAgB,MAAM,EAAE,IAAI;EAC5B,gBAAgB,SAAS,EAAE,SAAS;EACpC,gBAAgB,KAAK,EAAE,KAAK;EAC5B,aAAa,CAAC;EACd,YAAY,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACpE,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,gBAAgB;EAC7B,QAAQ,KAAK,EAAE,SAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;EACvD,YAAY,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;EACxE,YAAY,IAAI,SAAS,KAAK,CAAC,EAAE;EACjC,gBAAgB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACpC,aAAa;AACb;EACA,YAAY,IAAI,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC;EACrD,YAAY,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1B;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EAChD,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC/C,gBAAgB,IAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACxE,gBAAgB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EACjC,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE;EAClD,oBAAoB,IAAI,OAAO,EAAE;EACjC,wBAAwB,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACnE,qBAAqB,MAAM;EAC3B,wBAAwB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;EACpD,qBAAqB;EACrB,oBAAoB,IAAI,CAAC,GAAG,EAAE;EAC9B,wBAAwB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACxC,wBAAwB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjD,wBAAwB,SAAS;EACjC,qBAAqB;EACrB,iBAAiB,MAAM;EACvB,oBAAoB,IAAI,OAAO,EAAE;EACjC,wBAAwB,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;EAC7D,qBAAqB,MAAM;EAC3B,wBAAwB,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;EAChD,qBAAqB;EACrB,oBAAoB,IAAI,CAAC,GAAG,EAAE;EAC9B,wBAAwB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;EAC5F,4BAA4B,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;EACjH,yBAAyB,MAAM;EAC/B,4BAA4B,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,CAAC,CAAC;EAC7G,yBAAyB;EACzB,qBAAqB;EACrB,iBAAiB;EACjB,gBAAgB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;EACrC,gBAAgB,IAAI,GAAG,CAAC,UAAU,EAAE;EACpC,oBAAoB,IAAI,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;EACnF,oBAAoB,IAAI,aAAa,GAAG,cAAc,EAAE;EACxD,wBAAwB,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;EAC1D,qBAAqB,MAAM;EAC3B,wBAAwB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,CAAC,CAAC;EAC1I,qBAAqB;EACrB,iBAAiB,MAAM;EACvB,oBAAoB,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;EACzC,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACnC,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzC,aAAa;AACb;EACA,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC;EACA,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,kBAAkB;EAC/B,QAAQ,KAAK,EAAE,SAAS,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE;EAC9D,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;EACtC;EACA,YAAY,IAAI,SAAS,KAAK,UAAU,EAAE;EAC1C,gBAAgB,SAAS,GAAG,SAAS,CAAC;EACtC,aAAa;AACb;EACA,YAAY,IAAI,SAAS,KAAK,OAAO,EAAE;EACvC,gBAAgB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;EACtD,aAAa;EACb,YAAY,IAAI,SAAS,KAAK,MAAM,EAAE;EACtC,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;EACrD,aAAa;AACb;EACA,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACvC,YAAY,IAAI,SAAS,KAAK,MAAM,EAAE;EACtC;EACA;EACA,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;EACrC,aAAa;EACb;EACA;EACA,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAChD,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;EACvC,YAAY,OAAO,GAAG,CAAC;EACvB,SAAS;EACT,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,eAAe;EAC5B,QAAQ,KAAK,EAAE,SAAS,aAAa,GAAG;EACxC,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;EAChD,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,kBAAkB;EAC/B,QAAQ,KAAK,EAAE,SAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE;EAC7D,YAAY,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;EACzD,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;EACtC,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC9C,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC;EACzB,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;EAC5C,YAAY,IAAI,SAAS,GAAG,UAAU,CAAC;EACvC,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;EACnE,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;EACnD,oBAAoB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,6BAA6B,GAAG,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;EACpI,iBAAiB;EACjB,gBAAgB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC3C,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;EACtC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,aAAa;EACb,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAClC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC9C,YAAY,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;EACpD,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,iBAAiB;EAC9B,QAAQ,KAAK,EAAE,SAAS,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE;EACzD,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;EACtC,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC/B,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;EAC5C,YAAY,IAAI,SAAS,GAAG,UAAU,CAAC;EACvC,YAAY,IAAI,GAAG,GAAG,EAAE,CAAC;EACzB,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;EAC3F,gBAAgB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC3C,gBAAgB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;EACtC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,aAAa;EACb,YAAY,IAAI,GAAG,KAAK,EAAE,EAAE;EAC5B,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC;EAClH,aAAa;EACb,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAClC,YAAY,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;EACpD,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,iBAAiB;EAC9B,QAAQ,KAAK,EAAE,SAAS,eAAe,CAAC,QAAQ,EAAE;EAClD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC/D,YAAY,IAAI,CAAC,GAAG,EAAE;EACtB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,YAAY,IAAI,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAChE,YAAY,IAAI,CAAC,KAAK,EAAE;EACxB,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;EACzF,aAAa;EACb,YAAY,OAAO,IAAI,mBAAmB,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;EACzG,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,gBAAgB;EAC7B,QAAQ,KAAK,EAAE,SAAS,cAAc,CAAC,QAAQ,EAAE;EACjD,YAAY,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EAC7B,YAAY,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;EAC1D,gBAAgB,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,iDAAiD,EAAE,MAAM,CAAC,CAAC;EACtG,aAAa,MAAM;EACnB,gBAAgB,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;EAC9D,aAAa;EACb,YAAY,IAAI,CAAC,GAAG,EAAE;EACtB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,YAAY,IAAI,KAAK,GAAG,4CAA4C,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACpF,YAAY,IAAI,CAAC,KAAK,EAAE;EACxB,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;EACxF,aAAa;EACb,YAAY,IAAI,IAAI,GAAG;EACvB,gBAAgB,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9C,gBAAgB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;EAC9B,aAAa,CAAC;EACd,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;EAClD,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;EACzF,aAAa;EACb,YAAY,OAAO,IAAI,mBAAmB,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;EACpG,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,CAAC,QAAQ,EAAE;EAC7C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;EAC5C;EACA,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;EAChE;EACA,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,gBAAgB,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;EACpF,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAC/C;EACA,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAClD,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;EAC1C,oBAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;EACnD,iBAAiB;EACjB,gBAAgB,OAAO,IAAI,mBAAmB,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;EACzI,aAAa,MAAM;EACnB;EACA,gBAAgB,OAAO,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;EAC5D,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,eAAe;EAC5B,QAAQ,KAAK,EAAE,SAAS,aAAa,CAAC,KAAK,EAAE;EAC7C,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACrC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EACxC,gBAAgB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACjC,gBAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;EAChC,gBAAgB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;EAC7D,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;EACjE,wBAAwB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/G,wBAAwB,CAAC,IAAI,CAAC,CAAC;EAC/B,qBAAqB,MAAM;EAC3B,wBAAwB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9G,wBAAwB,CAAC,IAAI,CAAC,CAAC;EAC/B,qBAAqB;EACrB,iBAAiB;EACjB,gBAAgB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;EAC1E,oBAAoB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3G,oBAAoB,CAAC,IAAI,CAAC,CAAC;EAC3B,iBAAiB;EACjB,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,aAAa;EAC1B,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;EACtC,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC;EACA,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;EACnD,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B;EACA;EACA,gBAAgB,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC5E,aAAa,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;EACnE,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B;EACA;EACA,gBAAgB,OAAO,IAAI,mBAAmB,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EAC5K,aAAa,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;EAC5F,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;EAC/B,gBAAgB,OAAO,IAAI,mBAAmB,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EACrI,aAAa,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;EAC7C,gBAAgB,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7E,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EACxE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;EAC7B,MAAM,CAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;EAC/J,MAAM,CAAC,UAAU,GAAG,CAAC,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;EAC9F,MAAM,CAAC,YAAY,GAAG;EACtB,IAAI,MAAM,EAAE,QAAQ;EACpB,IAAI,MAAM,EAAE,QAAQ;EACpB,IAAI,MAAM,EAAE,QAAQ;EACpB,IAAI,MAAM,EAAE,QAAQ;EACpB,IAAI,MAAM,EAAE,QAAQ;EACpB,CAAC,CAAC;AACF;AACA;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;AACjD;EACA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AACxB;EACA,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAEpR;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC1C,EAAE,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChD;EACA;EACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;EAC1B,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;EACvE,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;EACxE,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;EACzE,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;EACrC,EAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EACjF,CAAC,CAAC;EACF;EACA;EACA;AACA;EACA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC1B;EACA,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE/F;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA,IAAI,KAAK,GAAG,YAAY;EACxB,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;EACtC,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD;EACA,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;EACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,KAAK;AACL;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;EACvC,QAAQ,GAAG,EAAE,KAAK;EAClB,QAAQ,KAAK,EAAE,SAAS,GAAG,GAAG;EAC9B,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,KAAK;EAClB,QAAQ,KAAK,EAAE,SAAS,GAAG,GAAG;EAC9B,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,SAAS;EACtB,QAAQ,KAAK,EAAE,SAAS,OAAO,GAAG;EAClC,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7C,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,SAAS;EACtB,QAAQ,KAAK,EAAE,SAAS,OAAO,GAAG;EAClC,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7C,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,OAAO;EACpB,QAAQ,KAAK,EAAE,SAAS,KAAK,GAAG;EAChC,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3C,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,MAAM;EACnB,QAAQ,KAAK,EAAE,SAAS,IAAI,GAAG;EAC/B,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1C,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,SAAS;EACtB,QAAQ,KAAK,EAAE,SAAS,OAAO,GAAG;EAClC,YAAY,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EAClC,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC,EAAE,CAAC;AACJ;EACA;AACA;AACA;EACA,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ;EACA;EACA,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAChN;EACA;EACA,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAChD,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;EAChD,IAAI,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACpD,IAAI,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EAChD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC;EACA;EACA;EACA,MAAM,CAAC,OAAO,GAAG;EACjB,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;EACnB,IAAI,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;EACrB,IAAI,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;EAC5B,CAAC,CAAC;AACF;EACA,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAExH;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,aAAa,GAAG,CAAC,SAAS;EAC9B,SAAS;EACT,UAAU,CAAC,CAAC;AACZ;EACA;EACA;EACA;EACA;EACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;EAClE;EACA,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;EAClF,QAAQ,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;EACvD,KAAK;EACL,IAAI,OAAO;EACX,QAAQ,KAAK,EAAE,KAAK;EACpB,QAAQ,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC;EAC7E,KAAK,CAAC;EACN,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;EAChF,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;EACvD,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;EACjC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB;EACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,OAAO,EAAE;EACjB,QAAQ,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EACpC,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;EAC7B,YAAY,MAAM,GAAG,CAAC,CAAC;EACvB,SAAS;EACT,QAAQ,UAAU,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC3H,KAAK,MAAM;EACX;EACA,QAAQ,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,KAAK,GAAG,cAAc,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC;EACjI,QAAQ,UAAU,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;EAClF,KAAK;AACL;EACA,IAAI,IAAI,OAAO,EAAE;EACjB,QAAQ,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;EACxD,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;EACrC,YAAY,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS;EACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;EAChC,YAAY,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;EACxD,SAAS;EACT,KAAK;AACL;EACA,IAAI,OAAO,UAAU,CAAC;EACtB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;EAC9D;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;EAC1E,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK,MAAM;EACX,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1F,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;EAC5E,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;EAC5B,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,KAA6B,CAAC,CAAC;EAC/D,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC7G,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;EACnC,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;EACzF,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;EAC5B,YAAY,OAAO,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC9F,SAAS,MAAM;EACf;EACA,YAAY,OAAO,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChG,SAAS;EACT,KAAK,MAAM;EACX,QAAQ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC;EACxE,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;EAC5D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACrC;EACA;EACA,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;EACpD,QAAQ,OAAO;EACf,YAAY,QAAQ,EAAE,aAAa;EACnC,YAAY,SAAS,EAAE,QAAQ;EAC/B,SAAS,CAAC;EACV,KAAK,MAAM;EACX,QAAQ,OAAO;EACf,YAAY,QAAQ,EAAE,aAAa;EACnC,YAAY,SAAS,EAAE,QAAQ;EAC/B,SAAS,CAAC;EACV,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EAC1B,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B;EACA,IAAI,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B;EACA,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC5B,IAAI,IAAI,IAAI,EAAE;EACd,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAChC,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;EACjF,YAAY,UAAU,GAAG,MAAM,CAAC,KAA6B,CAAC,CAAC;EAC/D,SAAS,MAAM;EACf,YAAY,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;EACvC,SAAS;EACT,QAAQ,IAAI,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;EACpE,YAAY,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;EACzH,SAAS,MAAM;EACf,YAAY,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EACpE,SAAS;EACT,KAAK,MAAM;EACX,QAAQ,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EAChE,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,uBAAuB,GAAG,SAAS,uBAAuB,CAAC,IAAI,EAAE;EACrE,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;EACnB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB;EACA,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;EACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvD,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;EAClD,gBAAgB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;EACjD,aAAa;EACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE;EAChD,gBAAgB,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;EAC/C,aAAa;EACb,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,EAAE;EAC5D,gBAAgB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;EAC3D,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;EACnC,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;EAC7D,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtE;EACA,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAClC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC/D,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD;EACA,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,QAAQ,EAAE;EACnD,IAAI,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpE;EACA,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACtC;EACA,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE;EAClF,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EACvB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;EACnB,IAAI,IAAI,YAAY,KAAK,iBAAiB,EAAE;EAC5C,QAAQ,IAAI,WAAW,GAAG,QAAQ,CAAC;EACnC,QAAQ,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC;EACA;EACA;EACA,QAAQ,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;EAClE,QAAQ,OAAO,GAAG,KAAK,CAAC;EACxB,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjD,YAAY,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;EACnF,YAAY,IAAI,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/F;EACA,YAAY,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AACrC;EACA,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;EACxD,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,SAAS;EACT,KAAK,MAAM,IAAI,YAAY,KAAK,KAAK,EAAE;EACvC;EACA;EACA,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC;EAClC,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;EAC7C,gBAAgB,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EAC3C,aAAa,MAAM;EACnB,gBAAgB,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;EAC3E,aAAa;EACb,SAAS;EACT,QAAQ,KAAK,GAAG,MAAM,CAAC;EACvB,KAAK,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;EAC1C,QAAQ,KAAK,GAAG,CAAC,YAAY,CAAC;EAC9B,KAAK,MAAM,IAAI,YAAY,KAAK,OAAO,EAAE;EACzC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;EACvD,KAAK,MAAM,IAAI,YAAY,KAAK,eAAe,EAAE;EACjD,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;EACxC,KAAK,MAAM;EACX,QAAQ,KAAK,GAAG,CAAC,CAAC;EAClB,KAAK;AACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;EACzC,YAAY,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EACzC,YAAY,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;EAC/E,SAAS;EACT,KAAK;EACL,IAAI,UAAU,IAAI,CAAC,CAAC;EACpB,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;AAC5C;EACA;EACA,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;EAC1B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC;EACvB,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;EACzC,YAAY,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;EACxC,SAAS,MAAM;EACf,YAAY,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C;EACA,YAAY,IAAI,SAAS,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;EAC3D,YAAY,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;EAC9E,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;EACxC,gBAAgB,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;EACpE,aAAa;EACb,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;EACzC,gBAAgB,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;EACtE,aAAa;AACb;EACA,YAAY,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACzC,YAAY,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;EACpD,SAAS;EACT,QAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3C,QAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3C,KAAK;AACL;EACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;EAClD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AACvC;EACA;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE;EACpB,QAAQ,IAAI,UAAU,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;EACjD,QAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AACjD;EACA;EACA;EACA,QAAQ,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3F;EACA,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC/F,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAChD,KAAK;AACL;EACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;EAC7C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;EAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACxC,KAAK;EACL,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EAC3B,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC,CAAC;AACF;EACA;EACA;EACA,IAAI,gBAAgB,GAAG;EACvB,IAAI,SAAS,EAAE;EACf,QAAQ,IAAI,EAAE,KAAK;EACnB,QAAQ,SAAS,EAAE,OAAO;EAC1B,KAAK;EACL,IAAI,QAAQ,EAAE;EACd,QAAQ,IAAI,EAAE,KAAK;EACnB,QAAQ,SAAS,EAAE,MAAM;EACzB,KAAK;EACL,IAAI,WAAW,EAAE;EACjB,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,SAAS,EAAE,SAAS;EAC5B,KAAK;EACL,IAAI,KAAK,EAAE;EACX,QAAQ,IAAI,EAAE,YAAY;EAC1B,QAAQ,SAAS,EAAE,YAAY;EAC/B,KAAK;EACL,IAAI,KAAK,EAAE;EACX,QAAQ,IAAI,EAAE,WAAW;EACzB,QAAQ,SAAS,EAAE,aAAa;EAChC,KAAK;EACL,IAAI,KAAK,EAAE;EACX,QAAQ,IAAI,EAAE,WAAW;EACzB,QAAQ,SAAS,EAAE,WAAW;EAC9B,KAAK;EACL,IAAI,KAAK,EAAE;EACX,QAAQ,IAAI,EAAE,YAAY;EAC1B,QAAQ,SAAS,EAAE,mBAAmB;EACtC,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,GAAG;EACd;EACA,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,MAAM;EACvB,QAAQ,QAAQ,EAAE,WAAW;EAC7B,KAAK;EACL,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,QAAQ;EACzB,QAAQ,QAAQ,EAAE,cAAc;EAChC,KAAK;EACL,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,QAAQ;EACzB,QAAQ,QAAQ,EAAE,aAAa;EAC/B,KAAK;AACL;EACA;EACA;EACA;AACA;EACA;EACA,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,eAAe;EAChC,QAAQ,QAAQ,EAAE,aAAa;EAC/B,KAAK;EACL,IAAI,SAAS,EAAE;EACf,QAAQ,OAAO,EAAE,QAAQ;EACzB,QAAQ,QAAQ,EAAE,qBAAqB;EACvC,KAAK;EACL,IAAI,UAAU,EAAE;EAChB,QAAQ,OAAO,EAAE,SAAS;EAC1B,QAAQ,QAAQ,EAAE,iBAAiB;EACnC,KAAK;EACL,IAAI,SAAS,EAAE;EACf,QAAQ,OAAO,EAAE,QAAQ;EACzB,QAAQ,QAAQ,EAAE,gBAAgB;EAClC,KAAK;EACL,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,YAAY;EAC7B,QAAQ,QAAQ,EAAE,mBAAmB;EACrC,KAAK;EACL,IAAI,QAAQ,EAAE;EACd,QAAQ,OAAO,EAAE,WAAW;EAC5B,QAAQ,QAAQ,EAAE,oBAAoB;EACtC,KAAK;EACL,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG;EACjB,IAAI,OAAO,EAAE,OAAO;EACpB,IAAI,UAAU,EAAE,UAAU;EAC1B,IAAI,OAAO,EAAE,OAAO;EACpB,IAAI,QAAQ,EAAE,QAAQ;EACtB,IAAI,YAAY,EAAE,YAAY;EAC9B,IAAI,SAAS,EAAE,SAAS;EACxB,IAAI,OAAO,EAAE,OAAO;EACpB,IAAI,eAAe,EAAE,eAAe;EACpC,IAAI,gBAAgB,EAAE,gBAAgB;EACtC,CAAC,CAAC;AACF;EACA,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAEvG;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACjE;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC;EACA,IAAI,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACnD;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,IAAI,EAAE;EACrC,IAAI,OAAO,IAAI,YAAY,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;EAClF,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,IAAI,EAAE;EACjC,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;EAC9C,CAAC,CAAC;AACF;EACA,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE;EACxE;EACA;EACA;EACA,IAAI,IAAI,IAAI,EAAE;EACd,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACrG,KAAK,MAAM;EACX,QAAQ,OAAO,WAAW,CAAC;EAC3B,KAAK;EACL,CAAC,CAAC;AACF;EACA,IAAI,mBAAmB,GAAG,SAAS,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE;EAC1E,IAAI,IAAI,IAAI,EAAE;EACd,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EACvF,KAAK,MAAM;EACX,QAAQ,OAAO,WAAW,CAAC;EAC3B,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE;EACtD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;EACxD,QAAQ,CAAC,EAAE,CAAC;EACZ,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK,MAAM;EACX,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACzC,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;EACjF;EACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAChD,QAAQ,IAAI,MAAM,YAAY,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE;EAClE,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,SAAS,MAAM;EACf,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAChC,SAAS;EACT,KAAK;EACL;AACA;EACA;EACA;EACA;EACA;EACA,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;EAC/C,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;EAC9C,QAAQ,IAAI,MAAM,EAAE;EACpB;EACA,YAAY,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;EACpC;EACA,gBAAgB,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;EACxE,oBAAoB,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACzG,iBAAiB;EACjB,gBAAgB,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;EAC1E,aAAa,MAAM;EACnB;EACA,gBAAgB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC3D,gBAAgB,MAAM;EACtB,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA;EACA,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;EAClD,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,kBAAkB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE;EAC3I,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAC5C,SAAS;EACT,KAAK;AACL;EACA;EACA;EACA;EACA;EACA,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;EAClD,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;EACvE,YAAY,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACtD;EACA,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;EAC7C;EACA;EACA;EACA;EACA;EACA,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EACpD,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1C;EACA;EACA;EACA,YAAY,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;EAClD,YAAY,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1E;EACA;EACA,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;EAChD;EACA,gBAAgB,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC;EAC3D,aAAa;AACb;EACA;EACA,YAAY,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EAClD,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;EAC7C,SAAS;EACT,KAAK;AACL;EACA,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC,CAAC;AACF;EACA;EACA,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE;EACvD,IAAI,IAAI,IAAI,YAAY,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE;EAC5D,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EAClC,YAAY,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC7E,SAAS;EACT,KAAK,MAAM;EACX,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;EAC/H,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnC,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE;EACrE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;EAC3B,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK,MAAM;EACX,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EACpC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;EAChC;EACA;EACA,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;EAC/H,SAAS,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC3C,YAAY,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnD,SAAS,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;EAC/C,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;EACvD,YAAY,OAAO,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;EAC/C,SAAS,MAAM;EACf,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;EACT,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE;EAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;EAC1C,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EACtC,YAAY,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/C,SAAS,MAAM;EACf,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;EACvC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAC5C,YAAY,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrD,SAAS,MAAM;EACf,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;EACtC,QAAQ,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC7C,KAAK,MAAM;EACX,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,KAAK,EAAE;EACpD,IAAI,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC;EACA;EACA,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;EAC/O,CAAC,CAAC;AACF;EACA,IAAI,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;EACrE,IAAI,IAAI,WAAW,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;EAC5E,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;EACnE,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EACpE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EACpE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC3C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;EACrF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC3C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;EACrF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EACtF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EACvF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EACvF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EACvF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAChD,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;EACtG,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACzD,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;EACpE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;EAC/C,YAAY,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EACnC,YAAY,CAAC,EAAE,CAAC;EAChB,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;EAC3E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,IAAI,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACnG;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;EAC5D,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C;EACA;AACA;EACA;EACA;EACA,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;EAC5C,QAAQ,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EACjE,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACrD,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AACtB;EACA,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;AAC5B;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;EACrB,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACzB,QAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC9D,QAAQ,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAChE,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;EAC/C,YAAY,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;EAC3H,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACzB,QAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC9D,QAAQ,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAChE,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;EAC/C,YAAY,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;EAC1H,SAAS;EACT,KAAK;AACL;EACA;EACA,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;EACnD,QAAQ,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;EACnC,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;EACtC,QAAQ,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;EACnC,KAAK,MAAM;EACX,QAAQ,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;EACnC,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;EAC5C,IAAI,IAAI,WAAW,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;AAChE;EACA,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EAC1B;EACA,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACzF;EACA,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;EACjF;EACA;EACA;EACA,QAAQ,IAAI,IAAI,YAAY,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;EAC1D,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC1D,SAAS;AACT;EACA,QAAQ,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;EACxF,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACjC;EACA,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACxF;EACA,QAAQ,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;EACxI,KAAK,MAAM;EACX,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;EACxF,QAAQ,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACpD;EACA,QAAQ,IAAI,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC;AACrD;EACA;EACA,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE;EAC9E,YAAY,QAAQ,GAAG,CAAC,GAAG,SAAS,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7E,YAAY,IAAI,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EACtE,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;EACzB,gBAAgB,QAAQ,IAAI,GAAG,CAAC;EAChC,gBAAgB,QAAQ,IAAI,GAAG,CAAC;EAChC,aAAa;EACb,SAAS;AACT;EACA,QAAQ,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;EAC7K;EACA,QAAQ,IAAI,IAAI,YAAY,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;EAC1D,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC3D,SAAS;AACT;EACA,QAAQ,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC/F,KAAK;AACL;EACA;EACA,IAAI,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;EAClD,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACpH,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;EAC9B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;EACxC,QAAQ,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;EACxC,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;EAC5C,QAAQ,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;EACrC,KAAK;AACL;EACA,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;EACjC,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;EACjC,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;AAC5B;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EAC7C,IAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACpE;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EAC7C,IAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACpE;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;EAChC,QAAQ,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAClD,QAAQ,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;EAChC,QAAQ,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;EAClC,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,IAAI,CAAC;EACpB,QAAQ,SAAS,GAAG,CAAC,CAAC;EACtB,QAAQ,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC;EACjE,KAAK;AACL;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;EACrD,QAAQ,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;EAC9C,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;EAC3B,YAAY,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC;EACxC,SAAS,MAAM;EACf,YAAY,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC;EACxC,SAAS;EACT,QAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;EAClD,KAAK,MAAM;EACX,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;EAC3B,YAAY,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;EAClD,YAAY,SAAS,GAAG,WAAW,CAAC;EACpC,SAAS,MAAM;EACf,YAAY,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;EAClD,YAAY,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC;EACxC,SAAS;EACT,QAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;EAClD,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE;EACzB;EACA,QAAQ,IAAI,kBAAkB,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;EACxF,QAAQ,IAAI,kBAAkB,GAAG,SAAS,EAAE;EAC5C,YAAY,QAAQ,IAAI,GAAG,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC;EAC/D,YAAY,UAAU,IAAI,GAAG,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC;EACjE,SAAS;AACT;EACA,QAAQ,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACxL,KAAK,MAAM;EACX;EACA,QAAQ,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;AAC1D;EACA,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE;EAClF,YAAY,QAAQ,IAAI,SAAS,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;EAC/F,SAAS;AACT;EACA,QAAQ,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,SAAS,EAAE;EACrF,YAAY,UAAU,IAAI,SAAS,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;EACpG,SAAS;AACT;EACA,QAAQ,IAAI,QAAQ,GAAG,EAAE,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;AACvD;EACA,QAAQ,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACvO,KAAK;AACL;EACA;EACA;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;EACtE,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AACrE;EACA;EACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;EACrD,QAAQ,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;EACjD,KAAK,MAAM;EACX,QAAQ,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;EACjD,KAAK;AACL;EACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;EACvC,QAAQ,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EAC1D,KAAK,MAAM;EACX,QAAQ,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EACpJ,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;EACxC,QAAQ,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC5D,KAAK,MAAM;EACX,QAAQ,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EACvJ,KAAK;AACL;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;EAC3K,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;EACnB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;EACnB,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;EACrC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7B;EACA;EACA,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;EAC/C,IAAI,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7B;EACA;EACA,IAAI,IAAI,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC;EAC/B;EACA;EACA,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;EACrB;EACA;EACA,IAAI,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;EAC1E,IAAI,IAAI,SAAS,GAAG,YAAY,GAAG,YAAY,CAAC;EAChD,IAAI,IAAI,aAAa,GAAG,GAAG,GAAG,SAAS,CAAC;EACxC,IAAI,IAAI,YAAY,GAAG,GAAG,GAAG,SAAS,CAAC;AACvC;EACA,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;EACxB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxC,QAAQ,IAAI,MAAM,GAAG,aAAa,CAAC;EACnC,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC;AACjC;EACA,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;EAC/B,YAAY,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;EAC9B,SAAS;AACT;EACA,QAAQ,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EAC7C,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3C,YAAY,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACpD,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;EACnC,gBAAgB,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;EAClC,aAAa;EACb,YAAY,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;EACrC,gBAAgB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACpC,aAAa;EACb,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC5B,SAAS;AACT;EACA,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;EACpB,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;EACpC,YAAY,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EACvF,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;EACzB;EACA,gBAAgB,GAAG,IAAI,YAAY,CAAC;EACpC,gBAAgB,IAAI,KAAK,GAAG,GAAG,EAAE;EACjC,oBAAoB,KAAK,GAAG,GAAG,CAAC;EAChC,iBAAiB;EACjB,gBAAgB,GAAG,GAAG,CAAC,CAAC;EACxB,aAAa;EACb,SAAS;EACT;EACA;EACA;EACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;EAChC,YAAY,KAAK,IAAI,GAAG,CAAC;EACzB,SAAS;AACT;EACA,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EAC/B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,QAAQ,WAAW,IAAI,MAAM,CAAC;EAC9B,QAAQ,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;EACjC,QAAQ,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;EACnC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EACzB,KAAK;AACL;EACA,IAAI,IAAI,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;EACpE,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;EACjD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;EAClB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC;EAC/B;EACA;EACA,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE;AACxE;EACA,QAAQ,IAAI,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC1D;EACA,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC;EAClC,QAAQ,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;EAC9C;EACA;EACA,YAAY,IAAI,CAAC,cAAc,EAAE;EACjC,gBAAgB,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;EACzE,gBAAgB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;EAChF,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAClC,aAAa;AACb;EACA,YAAY,IAAI,QAAQ,CAAC,SAAS,KAAK,GAAG,EAAE;EAC5C,gBAAgB,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;EACvF,gBAAgB,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;EAC5D,gBAAgB,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC/E;EACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACrC,aAAa,MAAM;EACnB,gBAAgB,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,0BAA0B,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;EAChG,aAAa;AACb;EACA,YAAY,WAAW,EAAE,CAAC;EAC1B,YAAY,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC1D,YAAY,cAAc,GAAG,KAAK,CAAC;EACnC,SAAS;AACT;EACA,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE;EACrB,YAAY,SAAS;EACrB,SAAS;AACT;EACA,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE;EACtD,YAAY,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EAC3E,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;EAChC,gBAAgB,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;EACzE,gBAAgB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;EACrD,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAClC,aAAa;EACb,SAAS;AACT;EACA,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;EACrB,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;EACjC,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9B,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9B,YAAY,IAAI,CAAC,IAAI,EAAE;EACvB,gBAAgB,SAAS;EACzB,aAAa;EACb,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;EACzC,YAAY,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;EACnC,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACrC,YAAY,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;EACjE,SAAS;AACT;EACA,QAAQ,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACrF,QAAQ,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1F,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB;EACA,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE;EAC3D,YAAY,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;EAC5E,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;EAChC,gBAAgB,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;EACzE,gBAAgB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;EACrD,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAClC,aAAa;EACb,SAAS;EACT,KAAK;EACL,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;EACxD,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;EACjE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EAC1G;EACA;EACA;EACA,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;EACnC,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EAC5E,SAAS,MAAM;EACf,YAAY,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACtI,SAAS;EACT,KAAK,MAAM;EACX;EACA;EACA,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;EAClI,KAAK;EACL,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/F,IAAI,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/F,IAAI,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,EAAE,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC1C;EACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC1B,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;EAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;EACjC;EACA;EACA;EACA,QAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;EACnC,QAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;EACnC,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EACjC,QAAQ,SAAS,GAAG,IAAI,CAAC;EACzB,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B;EACA;EACA,IAAI,IAAI,WAAW,GAAG,CAAC,YAAY,CAAC,CAAC;AACrC;EACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;EACtB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACvI;EACA;EACA,QAAQ,KAAK,GAAG,IAAI,CAAC;EACrB,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;EAC5B;EACA,QAAQ,IAAI,QAAQ,GAAG,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC;EACjE,QAAQ,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;EACpJ,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAClC;EACA,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EACtE,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;EACpF,YAAY,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5B,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EACpC,SAAS,MAAM;EACf,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EACvE,SAAS;EACT,KAAK,MAAM;EACX;EACA;EACA;EACA;EACA,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;EACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1D,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EACxF,SAAS;EACT,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACpE,KAAK;AACL;EACA;EACA,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;EACtB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,IAAI,YAAY,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;EACtD;EACA;EACA;EACA;EACA;EACA,QAAQ,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;AACtF;EACA;EACA,QAAQ,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;EAC5B,KAAK;AACL;EACA,IAAI,IAAI,SAAS,EAAE;EACnB;EACA;EACA,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD;EACA,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EAC1B,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;EAC7B,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EAC1B,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;EAC7B,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAChC;EACA;EACA,QAAQ,IAAI,QAAQ,EAAE;EACtB,YAAY,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,YAAY,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7D;EACA,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EACtH,SAAS;AACT;EACA,QAAQ,IAAI,QAAQ,EAAE;EACtB,YAAY,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,YAAY,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7D;EACA,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;EACvH,SAAS;AACT;EACA;EACA;EACA,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAChC,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EACzB,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EAC5B,QAAQ,IAAI,CAAC,QAAQ,EAAE;EACvB,YAAY,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC1C;EACA;EACA;EACA;EACA;EACA,YAAY,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;EACrQ,SAAS,MAAM,IAAI,CAAC,QAAQ,EAAE;EAC9B,YAAY,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5C;EACA,YAAY,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EAC1Q,SAAS,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;EAC3C;EACA;EACA;EACA,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS,MAAM;EACf,YAAY,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvH;EACA,YAAY,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;EACja,SAAS;AACT;EACA,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;EACvF,KAAK,MAAM;EACX,QAAQ,IAAI,SAAS,EAAE;EACvB,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;EAC7C,YAAY,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;EAC9C,SAAS;AACT;EACA,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC3C,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EACxC;EACA,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;EACtC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EACnG,SAAS;EACT,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EACtF,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;EACpE,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EAChF,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;EAC9C,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EACzF,KAAK,MAAM;EACX,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EACxF,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EACzE,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EACnE,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;EACvC,QAAQ,IAAI,QAAQ,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EACxK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EAC5C,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;EAChF;EACA,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EAC1F,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;EAC1C,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EACvG,aAAa;EACb,SAAS,MAAM;EACf,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACxD,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;EAC1F,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;EAC9F,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EACzE,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EACnE,KAAK;AACL;EACA,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACrD,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C;EACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACzG,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzG;EACA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;EACvC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;AACtC;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACzG,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzG;EACA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;EACjC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;AAC/B;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzG;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACxF,CAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;EACxE,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;EACpE,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC;EAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EACtD,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;EAC3B,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAChD;AACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAChF;EACA;EACA,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACtD;EACA;EACA,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClO;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EAC9E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACjD;EACA;EACA,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D;EACA;EACA,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACvD;EACA;EACA,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACrO;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C;AACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC3E;EACA;EACA;EACA,IAAI,IAAI,KAAK,YAAY,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE;EAC7D,QAAQ,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EACjE,KAAK;AACL;EACA;EACA,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC;AAC7C;EACA,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;EACpB,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;EACpD,QAAQ,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;EAC5C,KAAK;AACL;EACA;EACA,IAAI,IAAI,aAAa,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;AACxC;EACA,IAAI,IAAI,kBAAkB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;AAC3G;EACA;EACA,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7G;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,iBAAiB,GAAG,GAAG,CAAC,cAAc,CAAC;AACjF;EACA,IAAI,IAAI,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5C;EACA;EACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,EAAE;EACjE,QAAQ,aAAa,GAAG,CAAC,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;EACtF,KAAK;AACL;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;AACzE;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;EACjD,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC;EAC5C,KAAK,MAAM;EACX,QAAQ,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACvD;EACA;EACA,QAAQ,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACpO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC/D,KAAK;AACL;EACA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC5B,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;EAC7E,KAAK,MAAM;EACX;AACA;EACA;EACA,QAAQ,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;EAC3E,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACvE;EACA;EACA;EACA,QAAQ,IAAI,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD;EACA;EACA,QAAQ,IAAI,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACrH;EACA;EACA,QAAQ,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E;EACA,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;EAC5F,KAAK;EACL,CAAC,CAAC;AACF;EACA,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE;EAClD,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACvD,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AACzE;EACA;EACA;EACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EACtE,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;EACrB,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;EAC7F,SAAS,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE;EAC9E;EACA;EACA;EACA,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC;EACxE,SAAS;AACT;EACA,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;EACtC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC;EACrC,KAAK;AACL;EACA,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACrD,CAAC;AACD;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC1D,IAAI,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC/D,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C;AACA;EACA;EACA,IAAI,IAAI,QAAQ,GAAG;EACnB,QAAQ,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;EAC1C,QAAQ,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;EACpC,QAAQ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;EACxC,QAAQ,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;EACpD,KAAK,CAAC;AACN;EACA,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC/C,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnD,IAAI,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC/D,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EAChC,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;EAChE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACnD,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC;EACA,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;EACvB;EACA;EACA,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EAChE,KAAK;AACL;EACA;EACA,IAAI,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9G,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACjD;EACA,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACjE;EACA,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;AAC1B;EACA;EACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;EAC/B,YAAY,SAAS,GAAG,IAAI,CAAC;EAC7B,SAAS,MAAM;EACf,YAAY,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;EACjE,YAAY,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;EAC9D,SAAS;EACT,KAAK;AACL;EACA;EACA;EACA;EACA,IAAI,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;EAC1C,IAAI,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;AACzC;EACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;EAClC;EACA,QAAQ,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EAC1D,KAAK,MAAM;EACX;EACA;EACA,QAAQ,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EAClI,KAAK;EACL;EACA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC7B;EACA;EACA,IAAI,IAAI,SAAS,EAAE;EACnB,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;EACrD,YAAY,IAAI,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;EACzC,YAAY,IAAI,WAAW,CAAC,QAAQ,EAAE;EACtC;EACA,gBAAgB,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;EACnK;EACA,gBAAgB,IAAI,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;EACnE,gBAAgB,IAAI,MAAM,EAAE;EAC5B,oBAAoB,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;EAC9E,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EACnC,QAAQ,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EAC5D,KAAK,MAAM;EACX,QAAQ,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;EACrI,KAAK;EACL;EACA,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3B;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;EAClE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EACnC,QAAQ,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;EACrD,KAAK,MAAM;EACX,QAAQ,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;EACpG,QAAQ,WAAW,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;EAC9E,KAAK;EACL,IAAI,OAAO,WAAW,CAAC;EACvB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AACzE;EACA;EACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B,QAAQ,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC1E,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC1E,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5E;EACA;EACA,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,GAAG,IAAI,CAAC;EAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;AACrC;EACA;EACA,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACvB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;EACjC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;EACxB;EACA;EACA;EACA,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/D;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AACzE;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE;EAC/B,QAAQ,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;EACtF,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;EACjD,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC;EACA,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;EACjC;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;EAC3B;EACA,QAAQ,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;EAClC;EACA,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EAChC;EACA,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AACjC;EACA;EACA;EACA,QAAQ,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAClD,KAAK;AACL;EACA;EACA,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC9D;EACA;EACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACjE;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;EACjB,IAAI,IAAI,SAAS,EAAE;EACnB;EACA;EACA,QAAQ,IAAI,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;EACzC;EACA,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;EAC3E;EACA,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;EAC9B;EACA;EACA;EACA;EACA,KAAK;AACL;EACA;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;AACzE;EACA;EACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;EACjC,QAAQ,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9G;EACA;EACA,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC;EAC/B,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE;EAC3C,YAAY,WAAW,GAAG,YAAY,CAAC;EACvC,SAAS,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE;EAChD,YAAY,WAAW,GAAG,kBAAkB,CAAC;EAC7C,SAAS;AACT;EACA,QAAQ,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9D,QAAQ,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F;EACA;EACA;EACA;EACA,QAAQ,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD;EACA,QAAQ,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC7L,KAAK,MAAM;EACX,QAAQ,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChE;EACA,QAAQ,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACzJ;EACA,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvE,QAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC5C,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;EACtB;EACA,YAAY,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;EACtE,YAAY,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;EACzD,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F;EACA,IAAI,IAAI,WAAW,EAAE;EACrB;EACA;EACA,QAAQ,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC7C;EACA;EACA;EACA,QAAQ,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7E;EACA;EACA,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACxC;EACA,QAAQ,OAAO,WAAW,CAAC;EAC3B,KAAK,MAAM;EACX,QAAQ,OAAO,UAAU,CAAC;EAC1B,KAAK;EACL,CAAC,CAAC;AACF;EACA,UAAU,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAClD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B;EACA,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;EAC5C,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC;EAC7B,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,SAAS,EAAE;EACnB;EACA;EACA;EACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EAC7B,YAAY,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,YAAY,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC3E,SAAS,MAAM;EACf,YAAY,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,YAAY,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC3E,SAAS;EACT,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EACjC,KAAK;AACL;EACA;EACA,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F;EACA;EACA,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EACvB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;EAC5B,QAAQ,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAChL,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC5E,KAAK,MAAM;EACX,QAAQ,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACxM,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC5E,KAAK;AACL;EACA,IAAI,IAAI,SAAS,EAAE;EACnB;EACA;EACA;AACA;EACA;EACA;EACA;AACA;EACA,QAAQ,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACpH;EACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;EAChC,YAAY,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACvL,SAAS,MAAM;EACf,YAAY,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAClN,SAAS;EACT,KAAK;AACL;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EAC3G,CAAC,CAAC;AACF;EACA,UAAU,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACnD;EACA,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D;EACA,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAChE,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC1D;EACA;EACA,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACrM;EACA,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxE;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EACjF,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C;EACA,IAAI,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD;EACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC5C,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;EACvC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB;EACA,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;EAC1B,QAAQ,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;EAC/D,QAAQ,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,oBAAoB,GAAG,KAAK,CAAC;EACxE,QAAQ,QAAQ,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;EACxD,KAAK,MAAM;EACX;EACA,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AACvE;EACA;EACA,QAAQ,IAAI,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACzD;EACA;EACA,QAAQ,GAAG,GAAG,KAAK,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;EAC5D,QAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AACrC;EACA,QAAQ,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3K;EACA,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;EAC1B,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EAC5E,KAAK;AACL;EACA,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9B;EACA;EACA,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EACpF,KAAK,MAAM;EACX,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EACtE,KAAK;EACL,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B;EACA;EACA;AACA;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EACtD,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EACvE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3C;EACA,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B;EACA,QAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EACtD,QAAQ,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EACxE,QAAQ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EAC/C,KAAK;AACL;EACA,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D;EACA,IAAI,IAAI,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;EACzE,IAAI,IAAI,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;AAClF;EACA;EACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EACvB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B,QAAQ,IAAI,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;EAC1G,QAAQ,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACxP,KAAK,MAAM;EACX,QAAQ,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACjM,KAAK;AACL;EACA,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxE;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EAC7E,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;AACpF;EACA;EACA;EACA,IAAI,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;EAC5D,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACrE;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;EAC/E,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE;EAClE,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,GAAG,CAAC;EAC5C,KAAK;AACL;EACA,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;EAChC;EACA,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D;EACA;EACA;EACA,QAAQ,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;EAC9D,YAAY,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7G;EACA,YAAY,IAAI,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AACjF;EACA,YAAY,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC;EAC3C,YAAY,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC;EAC1C,SAAS;AACT;EACA,QAAQ,OAAO,SAAS,CAAC;EACzB,KAAK,MAAM;EACX,QAAQ,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,8BAA8B,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;EAC1F,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE;EAClD;EACA;EACA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACtD;EACA;EACA,IAAI,IAAI,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EAC1D,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACzE;EACA;EACA;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;EACzD,IAAI,IAAI,WAAW,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE;EACA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC/C,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAC/D;EACA;EACA;EACA,IAAI,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACzD;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7F;EACA,IAAI,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACjD;EACA,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3B;EACA,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE9M;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC;EACA,IAAI,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACnD;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;EAC7C,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;EAChF,QAAQ,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;EACrD,KAAK;AACL;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EACnD,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EACrD,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EAC1B,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC3B,QAAQ,OAAO,QAAQ,CAAC;EACxB,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EAC5B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE;EACjE,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;AACL;EACA,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;EAClF,QAAQ,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;EACvD,KAAK;AACL;EACA,IAAI,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;EACvD,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;EACpE,QAAQ,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;EAC1D,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB;EACA,IAAI,cAAc,GAAG;EACrB,IAAI,IAAI,EAAE,QAAQ;EAClB,IAAI,IAAI,EAAE,QAAQ;EAClB,IAAI,OAAO,EAAE,QAAQ;EACrB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC;EACzD,IAAI,IAAI,OAAO,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EAC/C,QAAQ,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACjD;EACA,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC;AACzD;EACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;EAC/B,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;EAClE,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EAC1C;EACA;EACA,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/D,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;EAC1C,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/D,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/D,KAAK;EACL,IAAI,IAAI,OAAO,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EAC/C,QAAQ,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;EAClD,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;EAClC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;EAClC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE;EACnC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE;EACpC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE;EACpC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE;EACpC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC3C;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACtD;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChE;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC;EACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;EAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EAClD,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,IAAI,IAAI,EAAE;EAC5D,YAAY,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC9E,SAAS,MAAM;EACf,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/B,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EACzC,gBAAgB,WAAW,GAAG,MAAM,CAAC;EACrC,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAC5B,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;EACxB,KAAK,MAAM;EACX,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;EAChE,KAAK;EACL,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5D;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClE;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C;EACA,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;EACxB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;EACvB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;EAC1B,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;EAC1D,YAAY,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;EACnD,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EACzD,gBAAgB,OAAO,GAAG,IAAI,CAAC;EAC/B,gBAAgB,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;EACvD,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,oBAAoB,GAAG,IAAI,CAAC;EACpC,IAAI,IAAI,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACjF;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACzB,QAAQ,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;EAClF,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACzB,QAAQ,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;EAClF,KAAK;AACL;EACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC1B,IAAI,IAAI,OAAO,EAAE;EACjB,QAAQ,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;EAC/C,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACjC,QAAQ,QAAQ,GAAG,MAAM,CAAC;EAC1B,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;EACjC,QAAQ,QAAQ,GAAG,MAAM,CAAC;EAC1B,KAAK,MAAM;EACX,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EACpC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;EACpF,YAAY,QAAQ,GAAG,YAAY,CAAC;EACpC,SAAS,MAAM;EACf,YAAY,QAAQ,GAAG,SAAS,CAAC;EACjC,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrE;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5I;EACA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;EACjC,QAAQ,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;EAClD,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;EACzE,QAAQ,IAAI,UAAU,GAAG,EAAE,CAAC;AAC5B;EACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;EAC3C,YAAY,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7H;EACA,YAAY,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;EACA,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACpC,SAAS;AACT;EACA,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B;EACA,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;EAC5C,YAAY,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/H;EACA,YAAY,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClD;EACA,YAAY,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACrC,SAAS;AACT;EACA,QAAQ,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC9E;EACA,QAAQ,OAAO,SAAS,CAAC;EACzB,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC7C,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;EAC3F,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;EAChF,YAAY,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EACzF,SAAS,CAAC,CAAC,CAAC;EACZ,KAAK,CAAC,CAAC,CAAC;EACR,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAC3I,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EACnG,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;EAClC,QAAQ,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzG;EACA,QAAQ,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C;EACA,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EAChC,KAAK;AACL;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EACnC,QAAQ,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3G;EACA,QAAQ,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAChD;EACA,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrE;EACA,IAAI,OAAO,SAAS,CAAC;EACrB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACzG,IAAI,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC7C,IAAI,OAAO,UAAU,CAAC;EACtB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;EAChC,QAAQ,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACtE,KAAK,MAAM;EACX,QAAQ,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxG,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/G;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE;EACtC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AACtB;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EAC1G,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvG,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3D;EACA,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EAC7F,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,EAAE,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC1C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AACtB;EACA;AACA;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;EAC5B;EACA,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACjG,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAClC;EACA,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;EACpG,KAAK,MAAM;EACX;EACA;EACA;EACA;EACA,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACvH,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC3C,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EACzE,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACzF,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;EACvC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3F,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC3B,QAAQ,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;EAClD,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC1B,QAAQ,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;EAC1E,KAAK;EACL,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;EACzE,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACzF,KAAK;AACL;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EAC1D,CAAC,CAAC;AACF;EACA,UAAU,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE;EACpC,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxG;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;EAChC,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;EAChE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;EAC1C,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;EACnC,QAAQ,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EAC/D,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjE;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;EAC3E;EACA;EACA,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC3C,KAAK,MAAM;EACX;EACA;EACA,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EAC5C,KAAK;AACL;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C;EACA;EACA;EACA,IAAI,IAAI,QAAQ,GAAG;EACnB,QAAQ,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;EAC1C,QAAQ,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;EACpC,QAAQ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;EACxC,QAAQ,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;EACpD,KAAK,CAAC;AACN;EACA,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC/C,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnD;EACA,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/D;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClE;EACA,IAAI,IAAI,eAAe,GAAG;EAC1B,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;EAC9B,QAAQ,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;EAChC,QAAQ,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;EACtC,KAAK,CAAC;AACN;EACA,IAAI,IAAI,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EAC1D,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/D;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClE;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AACpE;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC1G,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC9C;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;EAC7G,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC1G,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC9C;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;EAC9G,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EACnD,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACtE,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;EAChH,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EAC7C,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EACtG,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;EACtB,IAAI,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK;EAC7B,QAAQ,KAAK,WAAW;EACxB,YAAY,QAAQ,GAAG,oBAAoB,CAAC;EAC5C,YAAY,MAAM;EAClB,QAAQ,KAAK,QAAQ;EACrB,YAAY,QAAQ,GAAG,kBAAkB,CAAC;EAC1C,YAAY,MAAM;EAClB,QAAQ,KAAK,QAAQ;EACrB,YAAY,QAAQ,GAAG,KAAK,CAAC;EAC7B,YAAY,MAAM;EAClB,QAAQ;EACR,YAAY,QAAQ,GAAG,kBAAkB,CAAC;EAC1C,KAAK;EACL,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;EAC5C,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAClD,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACtE,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;EAC3I,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACrE,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;EACtB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AAC3B;EACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;EAC1B,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9D,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAC/B,YAAY,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC/D,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;EACtG,SAAS,MAAM;EACf,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;EACtF,SAAS;EACT,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;EAClC,QAAQ,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC3D,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;EACnF,KAAK,MAAM;EACX,QAAQ,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;EACvE,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE;EACnC;EACA;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzD;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE;EACnC;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzD;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACrG;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;EAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC5C,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACrG;EACA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC/C,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC5D,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;EAChE,CAAC,CAAC;AACF;EACA,UAAU,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;EAC9C,IAAI,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC5D,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EAC9D,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE;EACpE,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChD,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;EAChD,KAAK;AACL;EACA;AACA;EACA,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EACrD,IAAI,IAAI,oBAAoB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACzG;EACA,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACzD,KAAK;AACL;EACA,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;EAChC;EACA,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC5D,QAAQ,IAAI,oBAAoB,EAAE;EAClC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;EACxE,gBAAgB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC1C,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK,MAAM;EACX,QAAQ,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,8BAA8B,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;EAC1F,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;EACrE,IAAI,IAAI,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD;EACA;EACA;EACA,IAAI,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxE;EACA;EACA,IAAI,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACzH;EACA,IAAI,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAC7D;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1F;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE;EACA;EACA,IAAI,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;EAChE,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC;AAC7B;EACA,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE5K;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC;EACA,IAAI,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACnD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC/D,IAAI,QAAQ,GAAG,QAAQ,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtD;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;EAC1C,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE;EAC9B,QAAQ,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;EAC7C,KAAK;AACL;EACA;EACA,IAAI,IAAI,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC;EACxC,QAAQ,KAAK,EAAE,UAAU;EACzB,KAAK,CAAC,CAAC;AACP;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;EAC3E,IAAI,IAAI,QAAQ,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClF;EACA,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE;EAC9B,QAAQ,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;EAC1E,KAAK,MAAM;EACX,QAAQ,OAAO,SAAS,CAAC;EACzB,KAAK;EACL,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3B;EACA,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE5I;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AACzD;EACA,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC;EACA,IAAI,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACjD;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;EACnD,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;EAClF,QAAQ,OAAO,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EACvG,KAAK,MAAM;EACX,QAAQ,OAAO,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACvE,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;EACrE,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACtD;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvH;EACA,IAAI,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;EAClF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC;EAC3C,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC;AACjD;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;EAC3D,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;EACpD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;AAC5G;EACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;EACzB,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;EACxB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EAC3F,IAAI,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACtF,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;EACxD,IAAI,IAAI,MAAM,EAAE;EAChB,QAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACjE,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9F,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EAC1F,IAAI,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACvD,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;EAC/I,IAAI,IAAI,MAAM,EAAE;EAChB,QAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;EACvD,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;EAC3B;EACA,IAAI,IAAI,IAAI,KAAK,eAAe,EAAE;EAClC,QAAQ,SAAS,GAAG,aAAa,CAAC;EAClC,KAAK,MAAM,IAAI,IAAI,KAAK,eAAe,EAAE;EACzC,QAAQ,SAAS,GAAG,aAAa,CAAC;EAClC,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtK;EACA;EACA;EACA,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACzC,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EACrG;EACA;EACA,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;EACrB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;EACxB,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;EAClC,IAAI,MAAM,GAAG,IAAI,CAAC;EAClB;EACA,IAAI,IAAI,IAAI,GAAG,eAAe,CAAC;AAC/B;EACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,KAAK,WAAW,EAAE;EAC/B,QAAQ,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;EACnC,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW,EAAE;EACtC,QAAQ,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;EACnC,KAAK,MAAM,IAAI,KAAK,KAAK,aAAa,EAAE;EACxC,QAAQ,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;EAChC,KAAK,MAAM,IAAI,KAAK,KAAK,aAAa,EAAE;EACxC,QAAQ,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;EAChC,KAAK,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE;EAC1C,QAAQ,GAAG,GAAG,WAAW,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,aAAa,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE;EAC1C,QAAQ,GAAG,GAAG,WAAW,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,aAAa,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,UAAU,EAAE;EACtD,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,UAAU,EAAE;EACtD,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;EACrC,QAAQ,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;EAChC,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;EACpC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;EACnC,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;EACrC,QAAQ,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;EAChC,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;EACpC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;EACnC,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE;EAC9B,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE;EAC9B,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU,EAAE;EACxD,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU,EAAE;EACxD,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;EACrC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;EACrC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE;EACzC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE;EACzC,QAAQ,GAAG,GAAG,QAAQ,CAAC;EACvB,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,MAAM,GAAG,QAAQ,CAAC;EAC1B,QAAQ,IAAI,GAAG,eAAe,CAAC;EAC/B,KAAK;AACL;EACA;EACA,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAC3C,IAAI,IAAI,cAAc,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;EAC9D,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,IAAI,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;EACvE,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,IAAI,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;EACvE,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC;EAC9B,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;EACzB,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;EACzB,QAAQ,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;EACrD,QAAQ,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;EACvE,QAAQ,YAAY,GAAG,CAAC,CAAC;EACzB,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,SAAS,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAC3E;EACA;EACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,SAAS,KAAK,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;AAChG;EACA;EACA,IAAI,IAAI,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,iBAAiB,CAAC;AACrF;EACA;EACA;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC;EACtD,IAAI,IAAI,MAAM,EAAE;EAChB,QAAQ,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;EAC7C,KAAK;EACL;EACA,IAAI,IAAI,KAAK,GAAG,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC;AACjD;EACA;AACA;EACA;EACA,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB;EACA;EACA,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C;EACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;EACzB;EACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EAC9C,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACvD,SAAS;EACT,KAAK,MAAM;EACX;EACA;EACA,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,EAAE;EACjD,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACvD,SAAS;EACT,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACnD,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,EAAE,GAAG,EAAE,EAAE;EACpD,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACvD,SAAS;EACT,KAAK;AACL;EACA;EACA,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C;EACA;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACnE,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACrF;EACA,IAAI,OAAO,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;EACvI,CAAC,CAAC;AACF;EACA,IAAI,YAAY,GAAG;EACnB;EACA,IAAI,IAAI,EAAE,qdAAqd;AAC/d;EACA;EACA,IAAI,CAAC,EAAE,8fAA8f;AACrgB;EACA;EACA,IAAI,CAAC,EAAE,ifAAif;AACxf;EACA;EACA,IAAI,CAAC,EAAE,mhBAAmhB;AAC1hB;EACA;EACA,IAAI,CAAC,EAAE,6dAA6d;AACpe;EACA;EACA,IAAI,IAAI,EAAE,gQAAgQ;EAC1Q,CAAC,CAAC;AACF;EACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;EACzD;EACA,IAAI,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;EAC/D,IAAI,IAAI,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAChD;EACA,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;EAChC;EACA,QAAQ,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC9D,QAAQ,cAAc,GAAG,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC5E;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC;EACzC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC/C,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,cAAc,CAAC;EAChD;AACA;EACA,QAAQ,IAAI,CAAC,SAAS,GAAG,4BAA4B,GAAG,IAAI,CAAC,MAAM,GAAG,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;EAC7H,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;EACvC;EACA;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;EACnE,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC/C,QAAQ,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,cAAc,CAAC;AAC9C;EACA,QAAQ,IAAI,CAAC,SAAS,GAAG,+BAA+B,GAAG,IAAI,CAAC,MAAM,GAAG,qBAAqB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;EACrI,KAAK,MAAM;EACX;EACA;EACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;EAC9C,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC/C,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,cAAc,CAAC;EAChD,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;EAC3D,QAAQ,IAAI,WAAW,GAAG,aAAa,GAAG,EAAE,CAAC;AAC7C;EACA;EACA;EACA;EACA,QAAQ,IAAI,CAAC,SAAS,GAAG,4BAA4B,GAAG,IAAI,CAAC,MAAM,GAAG,6CAA6C,GAAG,aAAa,GAAG,kGAAkG,GAAG,WAAW,GAAG,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;EAC5S,KAAK;AACL;EACA,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,CAAC;AACF;EACA;EACA;EACA,IAAI,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtK;EACA;EACA,IAAI,qBAAqB,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAC3P;EACA;EACA,IAAI,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAClG;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9C;EACA;EACA;EACA;EACA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EAClF;EACA,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;EAC3C,QAAQ,KAAK,GAAG,UAAU,CAAC;EAC3B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;EAClD,QAAQ,KAAK,GAAG,UAAU,CAAC;EAC3B,KAAK;AACL;EACA;EACA,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;EACxH,QAAQ,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC1E,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE;EACvE,QAAQ,OAAO,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC7F,KAAK,MAAM;EACX,QAAQ,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;EAC7E,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA,IAAI,2BAA2B,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7S;EACA;EACA,IAAI,4BAA4B,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACjN;EACA;EACA;EACA,IAAI,2BAA2B,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAChU;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,IAAI,EAAE;EACrD,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;EAC/B,QAAQ,OAAO,cAAc,CAAC;EAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;EACtC,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;EAC/C,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;EACtC,QAAQ,OAAO,eAAe,CAAC;EAC/B,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;EACnF;EACA;EACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpD,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;EAC1C;EACA,YAAY,MAAM;EAClB,SAAS;AACT;EACA,QAAQ,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACtE,QAAQ,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;AACzD;EACA;EACA;AACA;EACA,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;EAC1C,YAAY,IAAI,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACxE,YAAY,WAAW,IAAI,UAAU,CAAC,cAAc,CAAC;EACrD,SAAS;AACT;EACA;EACA,QAAQ,IAAI,WAAW,GAAG,MAAM,EAAE;EAClC,YAAY,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC/B,SAAS;EACT,KAAK;AACL;EACA;EACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACzC,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,oBAAoB,GAAG,SAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EACxG,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;EAC3C,QAAQ,KAAK,GAAG,UAAU,CAAC;EAC3B,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;EAClD,QAAQ,KAAK,GAAG,UAAU,CAAC;EAC3B,KAAK;AACL;EACA;EACA,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;EAC1B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;EAC/D,QAAQ,QAAQ,GAAG,2BAA2B,CAAC;EAC/C,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;EACtE,QAAQ,QAAQ,GAAG,2BAA2B,CAAC;EAC/C,KAAK,MAAM;EACX,QAAQ,QAAQ,GAAG,4BAA4B,CAAC;EAChD,KAAK;AACL;EACA;EACA,IAAI,IAAI,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvE;EACA,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;EAC5B;EACA,QAAQ,OAAO,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACpD,KAAK,MAAM;EACX;EACA;EACA;EACA,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;EACxC,YAAY,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC1F,SAAS,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;EAC/C,YAAY,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACzF,SAAS,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;EAC/C,YAAY,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACnF,SAAS;EACT,KAAK;EACL,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EACnG;EACA,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/E;EACA;EACA,IAAI,IAAI,eAAe,GAAG,GAAG,CAAC;EAC9B,IAAI,IAAI,eAAe,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;AAC9D;EACA,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAC5E;EACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,eAAe,GAAG,GAAG,GAAG,eAAe,EAAE,CAAC,GAAG,eAAe,GAAG,eAAe,CAAC,CAAC;AACpF;EACA;EACA;EACA,IAAI,OAAO,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAClF,CAAC,CAAC;AACF;EACA,MAAM,CAAC,OAAO,GAAG;EACjB,IAAI,UAAU,EAAE,cAAc;EAC9B,IAAI,gBAAgB,EAAE,oBAAoB;EAC1C,IAAI,cAAc,EAAE,kBAAkB;EACtC,CAAC,CAAC;AACF;EACA,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE1I;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE;EACA,IAAI,aAAa,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACjE;EACA,IAAI,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAC1D;EACA,IAAI,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAClD;EACA,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAC/D;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,IAAI,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC7C;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,OAAO,EAAE;EAChD,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;EAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAClD,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;EACzB,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACjC,SAAS;EACT,KAAK;AACL;EACA,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,IAAI,GAAG,YAAY;EACvB,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;EAC9C,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClD;EACA,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;EACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;EACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;EACxB,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC;EACvB,QAAQ,IAAI,OAAO,EAAE;EACrB,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;EACzC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC5C,aAAa;EACb,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;EACpC,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;EACtD,aAAa;EACb,SAAS;EACT,KAAK;AACL;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;EACtC,QAAQ,GAAG,EAAE,cAAc;EAC3B,QAAQ,KAAK,EAAE,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE;EACvD,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;EAC/C,SAAS;EACT,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,EAAE;EAC5C,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,QAAQ;EACrB,QAAQ,KAAK,EAAE,SAAS,MAAM,GAAG;EACjC,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACtD;EACA;EACA,YAAY,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD;EACA;EACA,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1C,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;EAC7E,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC1D,iBAAiB;EACjB,aAAa;AACb;EACA;EACA,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EAC9C,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;EACjF,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;EACnE,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;EAChC,gBAAgB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;EAChD,aAAa;AACb;EACA;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EAC5D,aAAa;AACb;EACA,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,UAAU;EACvB,QAAQ,KAAK,EAAE,SAAS,QAAQ,GAAG;EACnC,YAAY,IAAI,MAAM,GAAG,OAAO,CAAC;AACjC;EACA;EACA,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;EACrC,gBAAgB,MAAM,IAAI,WAAW,CAAC;EACtC,gBAAgB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;EAC5E,gBAAgB,MAAM,IAAI,IAAI,CAAC;EAC/B,aAAa;AACb;EACA,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B;EACA;EACA,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;EACtD,oBAAoB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;EAC/F,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,MAAM,EAAE;EACxB,gBAAgB,MAAM,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;EAC9E,aAAa;AACb;EACA;EACA,YAAY,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EAC9C,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;EACjF,oBAAoB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;EACjD,oBAAoB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;EAC5E,oBAAoB,MAAM,IAAI,IAAI,CAAC;EACnC,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,MAAM,IAAI,GAAG,CAAC;AAC1B;EACA,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;EAChC,gBAAgB,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;EACzC,aAAa;AACb;EACA;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,gBAAgB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;EACtD,aAAa;AACb;EACA,YAAY,MAAM,IAAI,SAAS,CAAC;AAChC;EACA,YAAY,OAAO,MAAM,CAAC;EAC1B,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC,EAAE,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,gBAAgB,GAAG,YAAY;EACnC,IAAI,SAAS,gBAAgB,CAAC,QAAQ,EAAE;EACxC,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC9D;EACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;EACvC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;EAC7B,KAAK;AACL;EACA;EACA;EACA;AACA;AACA;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;EAClD,QAAQ,GAAG,EAAE,QAAQ;EACrB,QAAQ,KAAK,EAAE,SAAS,MAAM,GAAG;EACjC;EACA,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;AACzD;EACA;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EAC5D,aAAa;AACb;EACA,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,UAAU;EACvB,QAAQ,KAAK,EAAE,SAAS,QAAQ,GAAG;EACnC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B;EACA;EACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,gBAAgB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;EACtD,aAAa;AACb;EACA,YAAY,OAAO,MAAM,CAAC;EAC1B,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,gBAAgB,CAAC;EAC5B,CAAC,EAAE,CAAC;AACJ;EACA,IAAI,aAAa,GAAG;EACpB,IAAI,GAAG,EAAE,cAAc;EACvB,IAAI,GAAG,EAAE,cAAc;EACvB,IAAI,GAAG,EAAE,cAAc;EACvB;EACA,IAAI,GAAG,EAAE,cAAc;EACvB,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,UAAU,GAAG,YAAY;EAC7B,IAAI,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;EAC5E,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACxD;EACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;EACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EAClC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;EAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EAClC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;EACrC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;EACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC7B;EACA;EACA;EACA;EACA;EACA,QAAQ,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC3D;EACA;EACA;EACA,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAClE,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;EACrD,aAAa,MAAM;EACnB,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;EAClD,aAAa;EACb,SAAS;AACT;EACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACvC;EACA,YAAY,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnD,SAAS;EACT,KAAK;AACL;EACA,IAAI,IAAI,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;EAC5C,QAAQ,GAAG,EAAE,YAAY;EACzB,QAAQ,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,EAAE;EAC5C,YAAY,IAAI,CAAC,OAAO,IAAI,EAAE,OAAO,YAAY,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE;EACzN,gBAAgB,OAAO,KAAK,CAAC;EAC7B,aAAa;EACb,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;EACpG,oBAAoB,OAAO,KAAK,CAAC;EACjC,iBAAiB;EACjB,aAAa;EACb,YAAY,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE;EAC9C,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;EAC1G,oBAAoB,OAAO,KAAK,CAAC;EACjC,iBAAiB;EACjB,aAAa;EACb,YAAY,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;EACxC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAChE,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EAC7D,YAAY,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;EACzC,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;AACT;EACA;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,QAAQ;EACrB,QAAQ,KAAK,EAAE,SAAS,MAAM,GAAG;EACjC,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC3D,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC;AAC5B;EACA,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACjC,gBAAgB,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACtD,gBAAgB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;EAC5D,aAAa;AACb;EACA,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EACzC,gBAAgB,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAC9D,gBAAgB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3D,aAAa;AACb;EACA,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;EACtD,oBAAoB,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAClE,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC1D,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,IAAI,EAAE;EACtB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACvC,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa,MAAM;EACnB,gBAAgB,OAAO,IAAI,CAAC;EAC5B,aAAa;EACb,SAAS;AACT;EACA;EACA;EACA;AACA;EACA,KAAK,EAAE;EACP,QAAQ,GAAG,EAAE,UAAU;EACvB,QAAQ,KAAK,EAAE,SAAS,QAAQ,GAAG;EACnC;EACA;EACA,YAAY,IAAI,SAAS,GAAG,KAAK,CAAC;AAClC;EACA,YAAY,IAAI,MAAM,GAAG,OAAO,CAAC;AACjC;EACA,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;EACrC,gBAAgB,SAAS,GAAG,IAAI,CAAC;EACjC,gBAAgB,MAAM,IAAI,WAAW,CAAC;EACtC,gBAAgB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;EAC5E,gBAAgB,MAAM,IAAI,IAAI,CAAC;EAC/B,aAAa;AACb;EACA,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B;EACA,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACjC,gBAAgB,MAAM,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAChE,aAAa;EACb,YAAY,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;EAC1C,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;EACtD,oBAAoB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;EAC/F,iBAAiB;EACjB,aAAa;AACb;EACA,YAAY,IAAI,MAAM,EAAE;EACxB,gBAAgB,SAAS,GAAG,IAAI,CAAC;EACjC,gBAAgB,MAAM,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;EAC9E,aAAa;AACb;EACA,YAAY,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC7D,YAAY,IAAI,SAAS,EAAE;EAC3B,gBAAgB,MAAM,IAAI,GAAG,CAAC;EAC9B,gBAAgB,MAAM,IAAI,OAAO,CAAC;EAClC,gBAAgB,MAAM,IAAI,SAAS,CAAC;EACpC,gBAAgB,OAAO,MAAM,CAAC;EAC9B,aAAa,MAAM;EACnB,gBAAgB,OAAO,OAAO,CAAC;EAC/B,aAAa;EACb,SAAS;EACT,KAAK,CAAC,CAAC,CAAC;EACR,IAAI,OAAO,UAAU,CAAC;EACtB,CAAC,EAAE,CAAC;AACJ;EACA,MAAM,CAAC,OAAO,GAAG;EACjB,IAAI,IAAI,EAAE,IAAI;EACd,IAAI,gBAAgB,EAAE,gBAAgB;EACtC,IAAI,UAAU,EAAE,UAAU;EAC1B,CAAC,CAAC;AACF;EACA,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE3J;EACA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC;EACA,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACrD;EACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1C;EACA,IAAI,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACvD;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;EAC3C,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACjB,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACrB,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;EACrB,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACvD,QAAQ,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;EACtE,QAAQ,IAAI,KAAK,EAAE;EACnB,YAAY,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE;EACtD,gBAAgB,KAAK,EAAE,KAAK;EAC5B,gBAAgB,KAAK,EAAE,CAAC,IAAI,CAAC;EAC7B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;EACzC,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE;EAC1B,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;EAC7B,SAAS,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;EACrC,YAAY,MAAM;EAClB,SAAS,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EACvD,YAAY,IAAI,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;EAC5C,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACxC,YAAY,GAAG,GAAG,EAAE,CAAC;EACrB,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3B,SAAS,MAAM;EACf,YAAY,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;EAC5F,SAAS;EACT,KAAK;EACL,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACvB,IAAI,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;EAC7B,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;EACrE,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;EAClD,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACnC,QAAQ,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACnC,QAAQ,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;EACnC,KAAK;EACL;EACA,IAAI,IAAI,IAAI,GAAG;EACf,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;EACnC,QAAQ,QAAQ,EAAE,KAAK,CAAC,QAAQ;EAChC,QAAQ,UAAU,EAAE,CAAC;EACrB,QAAQ,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;EAC5C,QAAQ,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;EACnD,QAAQ,OAAO,EAAE,OAAO;EACxB,KAAK,CAAC;EACN,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC3C,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EACxC,KAAK;EACL,CAAC;AACD;EACA;EACA;EACA,SAAS,UAAU,CAAC,OAAO,EAAE;EAC7B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;EACtC,QAAQ,OAAO,SAAS,CAAC;EACzB,KAAK,MAAM;EACX,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,iBAAiB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;EACvC,IAAI,OAAO,EAAE,CAAC;EACd,CAAC,EAAE,UAAU,OAAO,EAAE,IAAI,EAAE;EAC5B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;EAChE,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;EAC5C,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;EAC5B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;EACtC,YAAY,OAAO;EACnB,gBAAgB,IAAI,EAAE,OAAO;EAC7B,gBAAgB,KAAK,EAAE,EAAE;EACzB,aAAa,CAAC;EACd,SAAS,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE;EAC/B,YAAY,OAAO;EACnB,gBAAgB,IAAI,EAAE,WAAW;EACjC,gBAAgB,SAAS,EAAE,GAAG;EAC9B,aAAa,CAAC;EACd,SAAS;EACT,QAAQ,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACxF,KAAK,CAAC,CAAC;EACP,IAAI,IAAI,GAAG,GAAG;EACd,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,IAAI,EAAE,IAAI;EAClB,QAAQ,mBAAmB,EAAE,IAAI,EAAE,CAAC;EACpC,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;EACvE,IAAI,OAAO,GAAG,CAAC;EACf,CAAC,CAAC,CAAC;AACH;EACA;EACA;EACA,iBAAiB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,OAAO,EAAE;EAC5G,IAAI,IAAI,UAAU,GAAG;EACrB,QAAQ,QAAQ,EAAE,IAAI;EACtB,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,QAAQ,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;EACjC,QAAQ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,QAAQ,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;EACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACvB,IAAI,IAAI,GAAG,GAAG;EACd,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,mBAAmB,EAAE,KAAK,EAAE,CAAC;EACrC,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;EACvE,IAAI,IAAI,UAAU,EAAE;EACpB,QAAQ,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;EACnD,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC;EACvB,YAAY,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;EAC/B,YAAY,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;EAChC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC,CAAC,CAAC;AACH;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,OAAO,EAAE;EAC9D,IAAI,IAAI,GAAG,GAAG;EACd,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,YAAY,EAAE,GAAG;EACzB,QAAQ,IAAI,EAAE,CAAC;EACf,YAAY,IAAI,EAAE,OAAO;EACzB,YAAY,KAAK,EAAE,GAAG;EACtB,YAAY,MAAM,EAAE,CAAC;EACrB;EACA;EACA;EACA;EACA,YAAY,OAAO,EAAE,GAAG,EAAE,EAAE;EAC5B,YAAY,IAAI,EAAE,OAAO;EACzB,YAAY,KAAK,EAAE,GAAG;EACtB,YAAY,MAAM,EAAE,CAAC;EACrB,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS,CAAC;EACV,KAAK,CAAC;EACN,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;EACvE,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;EAC/C,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC;EACnB,QAAQ,IAAI,EAAE,KAAK;EACnB,QAAQ,KAAK,EAAE,GAAG;EAClB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;EACrB,IAAI,OAAO,GAAG,CAAC;EACf,CAAC,CAAC,CAAC;AACH;EACA;EACA;EACA;EACA;EACA,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,OAAO,EAAE;EACpD,IAAI,IAAI,GAAG,GAAG;EACd,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,IAAI,EAAE,EAAE;EAChB,QAAQ,MAAM,EAAE,IAAI;EACpB,KAAK,CAAC;EACN,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;EACrD;EACA;EACA;EACA;EACA,IAAI,IAAI,UAAU,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;EAC3E,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;EAC1C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAChD;EACA,YAAY,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACjD,YAAY,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;EAC/C,SAAS;EACT,QAAQ,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE;EAClC,YAAY,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;EACjC,SAAS;EACT,KAAK,CAAC,CAAC;EACP,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE;EACtC,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC;EACvB,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EACzB,YAAY,KAAK,GAAG,GAAG,CAAC;EACxB,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EAC1B,YAAY,MAAM,GAAG,CAAC,CAAC;EACvB,SAAS;EACT,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EAC5B,YAAY,IAAI,EAAE,OAAO;EACzB,YAAY,KAAK,EAAE,KAAK;EACxB,YAAY,MAAM,EAAE,MAAM;EAC1B,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS,CAAC;EACV,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC,CAAC,CAAC;AACH;EACA;EACA;EACA;EACA,iBAAiB,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,OAAO,EAAE;EACrD,IAAI,IAAI,GAAG,GAAG;EACd,QAAQ,IAAI,EAAE,OAAO;EACrB,QAAQ,IAAI,EAAE,CAAC;EACf,YAAY,IAAI,EAAE,OAAO;EACzB,YAAY,KAAK,EAAE,GAAG;EACtB,SAAS,CAAC;EACV,QAAQ,MAAM,EAAE,IAAI;EACpB,KAAK,CAAC;EACN,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;EACrD,IAAI,OAAO,GAAG,CAAC;EACf,CAAC,CAAC,CAAC;AACH;EACA,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE5E;EACA,IAAI,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAClD;EACA,IAAI,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACpD;EACA,IAAI,iBAAiB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AACjE;EACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,YAAY,GAAG;EACnB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAChC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAChC,IAAI,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAClC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACjC,IAAI,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAClC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACrC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACjC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACjC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC/B,IAAI,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAClC,IAAI,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAClC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACjC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACjC,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACrC;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;EAC9C,IAAI,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACxC,IAAI,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EACxC,IAAI,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAClC,IAAI,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;EACtC,IAAI,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;AACtC;EACA;EACA;EACA,IAAI,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzC;EACA;EACA;EACA;EACA;EACA,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/B;EACA;EACA;EACA,IAAI,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAClC,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;AACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,iBAAiB,GAAG;EACxB;EACA,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;AACZ;EACA;EACA,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,GAAG,EAAE,GAAG;EACZ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AO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC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Q,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EACrC,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EACrC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,OAAO,EAAE,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AAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ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,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACzC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACrC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC9C,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,QAAQ,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAC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O,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;EACrC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACzC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;EACtC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC1C,QAAQ,KAAK,EAA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AAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7B,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACzC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC3B,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC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CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;EAC5C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;EACtC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,aAAa,EAAE;EACnB,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,C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AI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC5C,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACtC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EACnD,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EACnD,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EACnD,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EACnD,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAA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AAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;EACpC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC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C,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;EACxC,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,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;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EAChC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;EACjC,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAA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"} \ No newline at end of file diff --git a/assets/js/masonry.js b/assets/js/masonry.js new file mode 100644 index 0000000..054f3a0 --- /dev/null +++ b/assets/js/masonry.js @@ -0,0 +1,12 @@ +$(document).ready(function() { + // Init Masonry + var $grid = $('.grid').masonry({ + gutter: 10, + horizontalOrder: true, + itemSelector: '.grid-item', + }); + // Layout Masonry after each image loads + $grid.imagesLoaded().progress( function() { + $grid.masonry('layout'); + }); +}); diff --git a/assets/js/mdb.min.js b/assets/js/mdb.min.js new file mode 100644 index 0000000..18f7dfb --- /dev/null +++ b/assets/js/mdb.min.js @@ -0,0 +1,20 @@ +/*! + * MDB5 + * Version: FREE 6.4.0 + * + * + * Copyright: Material Design for Bootstrap + * https://mdbootstrap.com/ + * + * Read the license: https://mdbootstrap.com/general/license/ + * + * + * Documentation: https://mdbootstrap.com/docs/standard/ + * + * Support: https://mdbootstrap.com/support/ + * + * Contact: contact@mdbootstrap.com + * + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("mdb",[],e):"object"==typeof exports?exports.mdb=e():t.mdb=e()}(this,function(){return n=[function(t,e,n){"use strict";var i=n(16),o=n(68),r=n(44),s=n(25),a=n(11).f,c=n(110),l=n(113),u=n(24),n=n(8),h="Array Iterator",d=s.set,f=s.getterFor(h),s=(t.exports=c(Array,"Array",function(t,e){d(this,{type:h,target:i(t),index:0,kind:e})},function(){var t=f(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,l(void 0,!0)):l("keys"==n?i:"values"==n?e[i]:[i,e[i]],!1)},"values"),r.Arguments=r.Array);if(o("keys"),o("values"),o("entries"),!u&&n&&"values"!==s.name)try{a(s,"name",{value:"values"})}catch(t){}},function(t,e,n){function i(e,t){if(e){if(e[u]!==d)try{l(e,u,d)}catch(t){e[u]=d}if(e[h]||l(e,h,t),s[t])for(var n in c)if(e[n]!==c[n])try{l(e,n,c[n])}catch(t){e[n]=c[n]}}}var o,r=n(6),s=n(114),a=n(115),c=n(0),l=n(15),n=n(7),u=n("iterator"),h=n("toStringTag"),d=c.values;for(o in s)i(r[o]&&r[o].prototype,o);i(a,"DOMTokenList")},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var n=n(47),i=n.all;t.exports=n.IS_HTMLDDA?function(t){return"function"==typeof t||t===i}:function(t){return"function"==typeof t}},function(t,e,n){var n=n(30),i=Function.prototype,o=i.call,i=n&&i.bind.bind(o,o);t.exports=n?i:function(t){return function(){return o.apply(t,arguments)}}},function(t,e,n){"use strict";var i=n(22),n=n(43);i({target:"RegExp",proto:!0,forced:/./.exec!==n},{exec:n})},function(n,t,e){!function(t){function e(t){return t&&t.Math==Math&&t}n.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||this||Function("return this")()}.call(this,e(72))},function(t,e,n){var i=n(6),o=n(34),r=n(9),s=n(53),a=n(50),n=n(49),c=i.Symbol,l=o("wks"),u=n?c.for||c:c&&c.withoutSetter||s;t.exports=function(t){return r(l,t)||(l[t]=a&&r(c,t)?c[t]:u("Symbol."+t)),l[t]}},function(t,e,n){n=n(2);t.exports=!n(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var i=n(4),o=n(37),r=i({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return r(o(t),e)}},function(t,e,n){"use strict";var i=n(22),o=n(59).includes,r=n(2),n=n(68);i({target:"Array",proto:!0,forced:r(function(){return!Array(1).includes()})},{includes:function(t){return o(this,t,1")})||!n||h)},function(t,e,n){var l=n(6),u=n(45).f,h=n(15),d=n(19),f=n(36),p=n(82),g=n(61);t.exports=function(t,e){var n,i,o,r=t.target,s=t.global,a=t.stat,c=s?l:a?l[r]||f(r,{}):(l[r]||{}).prototype;if(c)for(n in e){if(i=e[n],o=t.dontCallGetSet?(o=u(c,n))&&o.value:c[n],!g(s?n:r+(a?".":"#")+n,t.forced)&&void 0!==o){if(typeof i==typeof o)continue;p(i,o)}(t.sham||o&&o.sham)&&h(i,"sham",!0),d(c,n,i,t)}}},function(t,e,n){var i=n(6),o=n(3);t.exports=function(t,e){return arguments.length<2?(n=i[t],o(n)?n:void 0):i[t]&&i[t][e];var n}},function(t,e){t.exports=!1},function(t,e,n){var i,o,r,s,a=n(81),c=n(6),l=n(13),u=n(15),h=n(9),d=n(35),f=n(40),n=n(41),p="Object already initialized",g=c.TypeError,c=c.WeakMap,m=a||d.state?((r=d.state||(d.state=new c)).get=r.get,r.has=r.has,r.set=r.set,i=function(t,e){if(r.has(t))throw g(p);return e.facade=t,r.set(t,e),e},o=function(t){return r.get(t)||{}},function(t){return r.has(t)}):(n[s=f("state")]=!0,i=function(t,e){if(h(t,s))throw g(p);return e.facade=t,u(t,s,e),e},o=function(t){return h(t,s)?t[s]:{}},function(t){return h(t,s)});t.exports={set:i,get:o,has:m,enforce:function(t){return m(t)?o(t):i(t,{})},getterFor:function(e){return function(t){if(l(t)&&(t=o(t)).type===e)return t;throw g("Incompatible receiver, "+e+" required")}}}},function(t,e,n){var i=n(85);t.exports=function(t){t=+t;return t!=t||0==t?0:i(t)}},function(t,e,n){function i(){}function o(t){t.write(g("")),t.close();var e=t.parentWindow.Object;return t=null,e}var r,s=n(14),a=n(90),c=n(42),l=n(41),u=n(92),h=n(38),n=n(40),d="prototype",f="script",p=n("IE_PROTO"),g=function(t){return"<"+f+">"+t+""},m=function(){try{r=new ActiveXObject("htmlfile")}catch(t){}m="undefined"==typeof document||document.domain&&r?o(r):(t=h("iframe"),e="java"+f+":",t.style.display="none",u.appendChild(t),t.src=String(e),(e=t.contentWindow.document).open(),e.write(g("document.F=Object")),e.close(),e.F);for(var t,e,n=c.length;n--;)delete m[d][c[n]];return m()};l[p]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(i[d]=s(t),n=new i,i[d]=null,n[p]=t):n=m(),void 0===e?n:a.f(n,e)}},function(t,e,n){"use strict";var i=n(22),o=n(93).trim;i({target:"String",proto:!0,forced:n(94)("trim")},{trim:function(){return o(this)}})},function(N,R,t){var e=t(8),n=t(6),i=t(4),o=t(61),l=t(95),u=t(15),r=t(57).f,h=t(33),d=t(98),f=t(20),p=t(99),s=t(63),a=t(100),c=t(19),g=t(2),m=t(9),_=t(25).enforce,v=t(101),b=t(7),y=t(64),w=t(65),E=b("match"),x=n.RegExp,C=x.prototype,A=n.SyntaxError,T=i(C.exec),O=i("".charAt),L=i("".replace),S=i("".indexOf),H=i("".slice),B=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,I=/a/g,k=/a/g,t=new x(I)!==I,D=s.MISSED_STICKY,W=s.UNSUPPORTED_Y,b=e&&(!t||D||y||w||g(function(){return k[E]=!1,x(I)!=I||x(k)==k||"/a/i"!=x(I,"i")}));if(o("RegExp",b)){function j(t,e){var n,i,o=h(C,this),r=d(t),s=void 0===e,a=[],c=t;if(!o&&r&&s&&t.constructor===j)return t;if((r||h(C,t))&&(t=t.source,s)&&(e=p(c)),t=void 0===t?"":f(t),e=void 0===e?"":f(e),c=t,r=e=y&&"dotAll"in I&&(n=!!e&&-1"===e&&c:if(""===u||m(s,u))throw new A("Invalid capture group name");s[u]=!0,c=!(r[r.length]=[u,l]),u="";continue}c?u+=e:o+=e}return[o,r]}(t))[0],a=s[1]),s=l(x(t,e),o?this:C,j),(n||i||a.length)&&(e=_(s),n&&(e.dotAll=!0,e.raw=j(function(t){for(var e,n=t.length,i=0,o="",r=!1;i<=n;i++)"\\"===(e=O(t,i))?o+=e+O(t,++i):r||"."!==e?("["===e?r=!0:"]"===e&&(r=!1),o+=e):o+="[\\s\\S]";return o}(t),r)),i&&(e.sticky=!0),a.length)&&(e.groups=a),t!==c)try{u(s,"source",""===c?"(?:)":c)}catch(t){}return s}for(var M=r(x),P=0;M.length>P;)a(j,x,M[P++]);(C.constructor=j).prototype=C,c(n,"RegExp",j,{constructor:!0})}v("RegExp")},function(t,e,n){n=n(2);t.exports=!n(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t){return null==t}},function(t,e,n){n=n(4);t.exports=n({}.isPrototypeOf)},function(t,e,n){var i=n(24),o=n(35);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.30.2",mode:i?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,n){var i=n(6),n=n(36),o="__core-js_shared__",i=i[o]||n(o,{});t.exports=i},function(t,e,n){var i=n(6),o=Object.defineProperty;t.exports=function(e,n){try{o(i,e,{value:n,configurable:!0,writable:!0})}catch(t){i[e]=n}return n}},function(t,e,n){var i=n(18),o=Object;t.exports=function(t){return o(i(t))}},function(t,e,n){var i=n(6),n=n(13),o=i.document,r=n(o)&&n(o.createElement);t.exports=function(t){return r?o.createElement(t):{}}},function(t,e,n){var i=n(8),n=n(9),o=Function.prototype,r=i&&Object.getOwnPropertyDescriptor,n=n(o,"name"),s=n&&"something"===function(){}.name,i=n&&(!i||r(o,"name").configurable);t.exports={EXISTS:n,PROPER:s,CONFIGURABLE:i}},function(t,e,n){var i=n(34),o=n(53),r=i("keys");t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e){t.exports={}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){"use strict";var p=n(12),i=n(4),g=n(20),m=n(62),o=n(63),r=n(34),_=n(27),v=n(25).get,s=n(64),n=n(65),b=r("native-string-replace",String.prototype.replace),y=RegExp.prototype.exec,w=y,E=i("".charAt),x=i("".indexOf),C=i("".replace),A=i("".slice),T=(r=/b*/g,p(y,i=/a/,"a"),p(y,r,"a"),0!==i.lastIndex||0!==r.lastIndex),O=o.BROKEN_CARET,L=void 0!==/()??/.exec("")[1];(T||L||O||s||n)&&(w=function(t){var e,n,i,o,r,s,a=this,c=v(a),t=g(t),l=c.raw;if(l)return l.lastIndex=a.lastIndex,h=p(w,l,t),a.lastIndex=l.lastIndex,h;var u=c.groups,l=O&&a.sticky,h=p(m,a),c=a.source,d=0,f=t;if(l&&(h=C(h,"y",""),-1===x(h,"g")&&(h+="g"),f=A(t,a.lastIndex),0o;)!s(i,n=e[o++])||~c(r,n)||u(r,n);return r}},function(t,e,n){function i(a){return function(t,e,n){var i,o=c(t),r=u(o),s=l(n,r);if(a&&e!=e){for(;sb)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")})},function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(t,e,n){var o=n(96),r=n(14),s=n(97);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,i=!1,t={};try{(n=o(Object.prototype,"__proto__","set"))(t,[]),i=t instanceof Array}catch(t){}return function(t,e){return r(t),s(e),i?n(t,e):t.__proto__=e,t}}():void 0)},function(t,e,n){var i=n(7),o=n(27),n=n(11).f,r=i("unscopables"),s=Array.prototype;null==s[r]&&n(s,r,{configurable:!0,value:o(null)}),t.exports=function(t){s[r][t]=!0}},function(t,e,n){"use strict";var i,o,r=n(2),s=n(3),a=n(13),c=n(27),l=n(70),u=n(19),h=n(7),n=n(24),d=h("iterator"),h=!1;[].keys&&("next"in(o=[].keys())?(l=l(l(o)))!==Object.prototype&&(i=l):h=!0),!a(i)||r(function(){var t={};return i[d].call(t)!==t})?i={}:n&&(i=c(i)),s(i[d])||u(i,d,function(){return this}),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:h}},function(t,e,n){var i=n(9),o=n(3),r=n(37),s=n(40),n=n(112),a=s("IE_PROTO"),c=Object,l=c.prototype;t.exports=n?c.getPrototypeOf:function(t){var e,t=r(t);return i(t,a)?t[a]:(e=t.constructor,o(e)&&t instanceof e?e.prototype:t instanceof c?l:null)}},function(t,e,n){var i=n(11).f,o=n(9),r=n(7)("toStringTag");t.exports=function(t,e,n){(t=t&&!n?t.prototype:t)&&!o(t,r)&&i(t,r,{configurable:!0,value:e})}},function(t,e){var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var i={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!i.call({1:2},1);e.f=r?function(t){t=o(this,t);return!!t&&t.enumerable}:i},function(t,e,n){var i=n(4),o=n(2),r=n(17),s=Object,a=i("".split);t.exports=o(function(){return!s("z").propertyIsEnumerable(0)})?function(t){return"String"==r(t)?a(t,""):s(t)}:s},function(t,e,n){var i=n(12),o=n(13),r=n(48),s=n(51),a=n(79),n=n(7),c=TypeError,l=n("toPrimitive");t.exports=function(t,e){if(!o(t)||r(t))return t;var n=s(t,l);if(n){if(n=i(n,t,e=void 0===e?"default":e),!o(n)||r(n))return n;throw c("Can't convert object to primitive value")}return a(t,e=void 0===e?"number":e)}},function(t,e,n){var i,o,r=n(6),n=n(77),s=r.process,r=r.Deno,s=s&&s.versions||r&&r.version,r=s&&s.v8;!(o=r?0<(i=r.split("."))[0]&&i[0]<4?1:+(i[0]+i[1]):o)&&n&&(!(i=n.match(/Edge\/(\d+)/))||74<=i[1])&&(i=n.match(/Chrome\/(\d+)/))&&(o=+i[1]),t.exports=o},function(t,e){t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(t,e){var n=String;t.exports=function(t){try{return n(t)}catch(t){return"Object"}}},function(t,e,n){var o=n(12),r=n(3),s=n(13),a=TypeError;t.exports=function(t,e){var n,i;if("string"===e&&r(n=t.toString)&&!s(i=o(n,t)))return i;if(r(n=t.valueOf)&&!s(i=o(n,t)))return i;if("string"!==e&&r(n=t.toString)&&!s(i=o(n,t)))return i;throw a("Can't convert object to primitive value")}},function(t,e,n){var i=n(4),o=n(3),n=n(35),r=i(Function.toString);o(n.inspectSource)||(n.inspectSource=function(t){return r(t)}),t.exports=n.inspectSource},function(t,e,n){var i=n(6),n=n(3),i=i.WeakMap;t.exports=n(i)&&/native code/.test(String(i))},function(t,e,n){var c=n(9),l=n(83),u=n(45),h=n(11);t.exports=function(t,e,n){for(var i=l(e),o=h.f,r=u.f,s=0;s]*>)/g,_=/\$([$&'`]|\d{1,2})/g;t.exports=function(r,s,a,c,l,t){var u=a+r.length,h=c.length,e=_;return void 0!==l&&(l=o(l),e=m),p(t,e,function(t,e){var n;switch(f(e,0)){case"$":return"$";case"&":return r;case"`":return g(s,0,a);case"'":return g(s,u);case"<":n=l[g(e,1,-1)];break;default:var i,o=+e;if(0==o)return t;if(h{"use strict";n.d(e,{Z:()=>i});e=n(645),n=n.n(e)()(function(t){return t[1]});n.push([t.id,"INPUT:-webkit-autofill,SELECT:-webkit-autofill,TEXTAREA:-webkit-autofill{animation-name:onautofillstart}INPUT:not(:-webkit-autofill),SELECT:not(:-webkit-autofill),TEXTAREA:not(:-webkit-autofill){animation-name:onautofillcancel}@keyframes onautofillstart{}@keyframes onautofillcancel{}",""]);const i=n},645:t=>{"use strict";t.exports=function(n){var c=[];return c.toString=function(){return this.map(function(t){var e=n(t);return t[2]?"@media ".concat(t[2]," {").concat(e,"}"):e}).join("")},c.i=function(t,e,n){"string"==typeof t&&(t=[[null,t,""]]);var i={};if(n)for(var o=0;o{if("undefined"!=typeof window)try{var t=new window.CustomEvent("test",{cancelable:!0});if(t.preventDefault(),!0!==t.defaultPrevented)throw new Error("Could not prevent default")}catch(t){function e(t,e){var n,i;return(e=e||{}).bubbles=!!e.bubbles,e.cancelable=!!e.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(t){this.defaultPrevented=!0}},n}e.prototype=window.Event.prototype,window.CustomEvent=e}},379:(t,e,o)=>{"use strict";i={};var n,i,r=function(t){if(void 0===i[t]){var e=document.querySelector(t);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(t){e=null}i[t]=e}return i[t]},l=[];function u(t){for(var e=-1,n=0;n{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=o(379),t=o.n(t),e=o(454);function n(t){var e;t.hasAttribute("autocompleted")||(t.setAttribute("autocompleted",""),e=new window.CustomEvent("onautocomplete",{bubbles:!0,cancelable:!0,detail:null}),t.dispatchEvent(e))||(t.value="")}function i(t){t.hasAttribute("autocompleted")&&(t.removeAttribute("autocompleted"),t.dispatchEvent(new window.CustomEvent("onautocomplete",{bubbles:!0,cancelable:!1,detail:null})))}t()(e.Z,{insert:"head",singleton:!1}),e.Z.locals,o(810),document.addEventListener("animationstart",function(t){("onautofillstart"===t.animationName?n:i)(t.target)},!0),document.addEventListener("input",function(t){("insertReplacementText"!==t.inputType&&"data"in t?i:n)(t.target)},!0)})()},,,function(N,t,e){"use strict";e.r(t),e.d(t,"Alert",function(){return Be}),e.d(t,"Button",function(){return ne}),e.d(t,"Carousel",function(){return vn}),e.d(t,"Collapse",function(){return ls}),e.d(t,"Offcanvas",function(){return De}),e.d(t,"Dropdown",function(){return zs}),e.d(t,"Input",function(){return Yr}),e.d(t,"Modal",function(){return Nn}),e.d(t,"Popover",function(){return Io}),e.d(t,"Ripple",function(){return ea}),e.d(t,"ScrollSpy",function(){return Uo}),e.d(t,"Tab",function(){return fr}),e.d(t,"Toast",function(){return Mr}),e.d(t,"Tooltip",function(){return _r}),e.d(t,"Range",function(){return ca});var n={};e.r(n),e.d(n,"top",function(){return O}),e.d(n,"bottom",function(){return L}),e.d(n,"right",function(){return S}),e.d(n,"left",function(){return I}),e.d(n,"auto",function(){return Rn}),e.d(n,"basePlacements",function(){return Hn}),e.d(n,"start",function(){return Bn}),e.d(n,"end",function(){return Wn}),e.d(n,"clippingParents",function(){return Fn}),e.d(n,"viewport",function(){return qn}),e.d(n,"popper",function(){return zn}),e.d(n,"reference",function(){return Qn}),e.d(n,"variationPlacements",function(){return Vn}),e.d(n,"placements",function(){return Un}),e.d(n,"beforeRead",function(){return Yn}),e.d(n,"read",function(){return Xn}),e.d(n,"afterRead",function(){return Kn}),e.d(n,"beforeMain",function(){return $n}),e.d(n,"main",function(){return Gn}),e.d(n,"afterMain",function(){return Zn}),e.d(n,"beforeWrite",function(){return Jn}),e.d(n,"write",function(){return ti}),e.d(n,"afterWrite",function(){return ei}),e.d(n,"modifierPhases",function(){return ni}),e.d(n,"applyStyles",function(){return ri}),e.d(n,"arrow",function(){return xi}),e.d(n,"computeStyles",function(){return Oi}),e.d(n,"eventListeners",function(){return Si}),e.d(n,"flip",function(){return zi}),e.d(n,"hide",function(){return Ui}),e.d(n,"offset",function(){return Yi}),e.d(n,"popperOffsets",function(){return Xi}),e.d(n,"preventOverflow",function(){return Ki}),e.d(n,"popperGenerator",function(){return to}),e.d(n,"detectOverflow",function(){return qi}),e.d(n,"createPopperBase",function(){return eo}),e.d(n,"createPopper",function(){return no}),e.d(n,"createPopperLite",function(){return io}),e(5),e(28),e(29);const R=t=>{let e=t.getAttribute("data-mdb-target");return e&&"#"!==e||(t=t.getAttribute("href"),e=t&&"#"!==t?t.trim():null),e},H=t=>{t=R(t);return t&&document.querySelector(t)?t:null},B=t=>{t=R(t);return t?document.querySelector(t):null};const W=(o,r,s)=>{Object.keys(s).forEach(t=>{var e,n=s[t],i=r[t],i=i&&((e=i)[0]||e).nodeType?"element":null==(e=i)?"".concat(e):{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(i))throw new Error("".concat(o.toUpperCase(),": ")+'Option "'.concat(t,'" provided type "').concat(i,'" ')+'but expected type "'.concat(n,'".'))})};const i=()=>{var t=window["jQuery"];return t&&!document.body.hasAttribute("data-mdb-no-jquery")?t:null},o=t=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",t):t()};document.documentElement.dir;const F=t=>document.createElement(t);const q=(()=>{const i={};let o=1;return{set(t,e,n){void 0===t[e]&&(t[e]={key:e,id:o},o++),i[t[e].id]=n},get(t,e){return t&&void 0!==t[e]&&(t=t[e]).key===e?i[t.id]:null},delete(t,e){var n;void 0!==t[e]&&(n=t[e]).key===e&&(delete i[n.id],delete t[e])}}})();var r={setData(t,e,n){q.set(t,e,n)},getData(t,e){return q.get(t,e)},removeData(t,e){q.delete(t,e)}};e(21),e(0),e(1);const z=i(),Q=/[^.]*(?=\..*)\.|.*/,V=/\..*/,U=/::\d+$/,Y={};let X=1;const K={mouseenter:"mouseover",mouseleave:"mouseout"},$=["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"];function G(t,e){return e&&"".concat(e,"::").concat(X++)||t.uidEvent||X++}function Z(t){var e=G(t);return t.uidEvent=e,Y[e]=Y[e]||{},Y[e]}function J(n,i,t){var o=2{it.on(i,"".concat(t.name,".bs.").concat(o),e=>{const n={};t.parametersToCopy&&t.parametersToCopy.forEach(t=>{n[t]=e[t]}),it.trigger(i,"".concat(t.name,".mdb.").concat(o),n)})})},off(s,a,t,e){if("string"==typeof a&&s){const[n,i,o]=tt(a,t,e),r=o!==a,c=Z(s);e="."===a.charAt(0);if(void 0!==i)return c&&c[o]?void nt(s,c,o,i,n?t:null):void 0;e&&Object.keys(c).forEach(t=>{{var e=s,n=c,i=t,o=a.slice(1);const r=n[i]||{};Object.keys(r).forEach(t=>{-1{var e=t.replace(U,"");(!r||-1{Object.defineProperty(u,t,{get(){return n[t]}})}),l&&u.preventDefault(),c&&t.dispatchEvent(u),u.defaultPrevented&&void 0!==s&&s.preventDefault(),u}};var s=it;function ot(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function rt(t){return t.replace(/[A-Z]/g,t=>"-".concat(t.toLowerCase()))}var c={setDataAttribute(t,e,n){t.setAttribute("data-mdb-".concat(rt(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-mdb-".concat(rt(e)))},getDataAttributes(t){if(!t)return{};const n={...t.dataset};return Object.keys(n).filter(t=>t.startsWith("mdb")).forEach(t=>{let e=t.replace(/^mdb/,"");e=e.charAt(0).toLowerCase()+e.slice(1,e.length),n[e]=ot(n[t])}),n},getDataAttribute(t,e){return ot(t.getAttribute("data-mdb-".concat(rt(e))))},offset(t){t=t.getBoundingClientRect();return{top:t.top+document.body.scrollTop,left:t.left+document.body.scrollLeft}},position(t){return{top:t.offsetTop,left:t.offsetLeft}},style(t,e){Object.assign(t.style,e)},toggleClass(t,e){t&&(t.classList.contains(e)?t.classList.remove(e):t.classList.add(e))},addClass(t,e){t.classList.contains(e)||t.classList.add(e)},addStyle(e,n){Object.keys(n).forEach(t=>{e.style[t]=n[t]})},removeClass(t,e){t.classList.contains(e)&&t.classList.remove(e)},hasClass(t,e){return t.classList.contains(e)}};var a={closest(t,e){return t.closest(e)},matches(t,e){return t.matches(e)},find(t){var e=1t.matches(e))},parents(t,e){var n=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.parentNode;return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(this.matches(n,e))return[n];n=n.nextElementSibling}return[]}};e(10);const st=1e3,at="transitionend",ct=e=>{let n=e.getAttribute("data-mdb-target");if(!n||"#"===n){let t=e.getAttribute("href");if(!t||!t.includes("#")&&!t.startsWith("."))return null;t.includes("#")&&!t.startsWith("#")&&(t="#".concat(t.split("#")[1])),n=t&&"#"!==t?t.trim():null}return n},lt=t=>{t=ct(t);return t&&document.querySelector(t)?t:null},l=t=>{t=ct(t);return t?document.querySelector(t):null},ut=t=>{t.dispatchEvent(new Event(at))},u=t=>!(!t||"object"!=typeof t)&&void 0!==(t=void 0!==t.jquery?t[0]:t).nodeType,ht=t=>u(t)?t.jquery?t[0]:t:"string"==typeof t&&0{if(!u(t)||0===t.getClientRects().length)return!1;var e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(n&&n!==t){t=t.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return e},ft=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),pt=t=>{var e;return document.documentElement.attachShadow?"function"==typeof t.getRootNode?(e=t.getRootNode())instanceof ShadowRoot?e:null:t instanceof ShadowRoot?t:t.parentNode?pt(t.parentNode):null:null},gt=()=>{},mt=t=>{t.offsetHeight},_t=()=>window.jQuery&&!document.body.hasAttribute("data-mdb-no-jquery")?window.jQuery:null,vt=[],h=()=>"rtl"===document.documentElement.dir;t=i=>{var t;t=()=>{const t=_t();if(t){const e=i.NAME,n=t.fn[e];t.fn[e]=i.jQueryInterface,t.fn[e].Constructor=i,t.fn[e].noConflict=()=>(t.fn[e]=n,i.jQueryInterface)}},"loading"===document.readyState?(vt.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of vt)t()}),vt.push(t)):t()};function bt(n,i){if(!(2{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);var t=Number.parseFloat(e),i=Number.parseFloat(n);return t||i?(e=e.split(",")[0],n=n.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(n))*st):0})(i)+5;let e=!1;const o=t=>{t=t.target;t===i&&(e=!0,i.removeEventListener(at,o),d(n))};i.addEventListener(at,o),setTimeout(()=>{e||ut(i)},t)}else d(n)}const d=t=>{"function"==typeof t&&t()},yt=(t,e,n,i)=>{var o=t.length;let r=t.indexOf(e);return-1===r?!n&&i?t[o-1]:t[0]:(r+=n?1:-1,i&&(r=(r+o)%o),t[Math.max(0,Math.min(r,o-1))])},wt=/[^.]*(?=\..*)\.|.*/,Et=/\..*/,xt=/::\d+$/,Ct={};let At=1;const Tt={mouseenter:"mouseover",mouseleave:"mouseout"},Ot=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Lt(t,e){return e&&"".concat(e,"::").concat(At++)||t.uidEvent||At++}function St(t){var e=Lt(t);return t.uidEvent=e,Ct[e]=Ct[e]||{},Ct[e]}function It(t,e,n){let i=2t.callable===e&&t.delegationSelector===i)}function kt(t,e,n){var i="string"==typeof e,e=!i&&e||n;let o=Mt(t);return[i,e,o=Ot.has(o)?o:t]}function Dt(i,o,r,s,a){if("string"==typeof o&&i){let[t,e,n]=kt(o,r,s);o in Tt&&(e=(c=e,function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return c.call(this,t)}));var c,l,u,h,d,f,s=St(i),s=s[n]||(s[n]={}),p=It(s,e,t?r:null);p?p.oneOff=p.oneOff&&a:(p=Lt(e,o.replace(wt,"")),(o=t?(h=i,d=r,f=e,function e(n){var i=h.querySelectorAll(d);for(let t=n["target"];t&&t!==this;t=t.parentNode)for(const o of i)if(o===t)return Nt(n,{delegateTarget:t}),e.oneOff&&Pt.off(h,n.type,d,f),f.apply(t,[n])}):(l=i,u=e,function t(e){return Nt(e,{delegateTarget:l}),t.oneOff&&Pt.off(l,e.type,u),u.apply(l,[e])})).delegationSelector=t?r:null,o.callable=e,o.oneOff=a,s[o.uidEvent=p]=o,i.addEventListener(n,o,t))}}function jt(t,e,n,i,o){i=It(e[n],i,o);i&&(t.removeEventListener(n,i,Boolean(o)),delete e[n][i.uidEvent])}function Mt(t){return t=t.replace(Et,""),Tt[t]||t}const Pt={on(t,e,n,i){Dt(t,e,n,i,!1)},one(t,e,n,i){Dt(t,e,n,i,!0)},off(t,e,n,i){if("string"==typeof e&&t){var[i,o,r]=kt(e,n,i),s=r!==e,a=St(t),c=a[r]||{},l=e.startsWith(".");if(void 0!==o)return Object.keys(c).length?void jt(t,a,r,o,i?n:null):void 0;if(l)for(const _ of Object.keys(a)){u=g=p=f=d=h=void 0;var u,h=t,d=a,f=_,p=e.slice(1),g=d[f]||{};for(const v of Object.keys(g))v.includes(p)&&jt(h,d,f,(u=g[v]).callable,u.delegationSelector)}for(const b of Object.keys(c)){var m=b.replace(xt,"");s&&!e.includes(m)||jt(t,a,r,(m=c[b]).callable,m.delegationSelector)}}},trigger(t,e,n){if("string"!=typeof e||!t)return null;var i=_t();let o=null,r=!0,s=!0,a=!1;e!==Mt(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());i=Nt(i=new Event(e,{bubbles:r,cancelable:!0}),n);return a&&i.preventDefault(),s&&t.dispatchEvent(i),i.defaultPrevented&&o&&o.preventDefault(),i}};function Nt(e,t){for(const[n,i]of Object.entries(t||{}))try{e[n]=i}catch(t){Object.defineProperty(e,n,{configurable:!0,get(){return i}})}return e}var f=Pt;const Rt=new Map;var Ht=function(t,e,n){Rt.has(t)||Rt.set(t,new Map);t=Rt.get(t);t.has(e)||0===t.size?t.set(e,n):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(t.keys())[0],"."))},Bt=function(t,e){return Rt.has(t)&&Rt.get(t).get(e)||null},Wt=function(t,e){var n;Rt.has(t)&&((n=Rt.get(t)).delete(e),0===n.size)&&Rt.delete(t)};function Ft(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function qt(t){return t.replace(/[A-Z]/g,t=>"-".concat(t.toLowerCase()))}var p={setDataAttribute(t,e,n){t.setAttribute("data-mdb-".concat(qt(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-mdb-".concat(qt(e)))},getDataAttributes(e){if(!e)return{};var n={};for(const i of Object.keys(e.dataset).filter(t=>t.startsWith("mdb")&&!t.startsWith("mdbConfig"))){let t=i.replace(/^mdb/,"");n[t=t.charAt(0).toLowerCase()+t.slice(1,t.length)]=Ft(e.dataset[i])}return n},getDataAttribute(t,e){return Ft(t.getAttribute("data-mdb-".concat(qt(e))))}};var g=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){var n=u(e)?p.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...u(e)?p.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){var e=1{t.preventDefault();t=t.target.closest(zt);Qt.getOrCreateInstance(t).toggle()}),t(Qt);_=Qt;const Vt="button",Ut="mdb.".concat(Vt);var v=".".concat(Ut);const Yt="click".concat(v),Xt="transitionend",Kt="mouseenter",$t="mouseleave",Gt="hide".concat(v),Zt="hidden".concat(v),Jt="show".concat(v),te="shown".concat(v),ee="fixed-action-btn";class b extends _{constructor(t){super(t),this._fn={},this._element&&(r.setData(this._element,Ut,this),this._init())}static get NAME(){return Vt}static jQueryInterface(n,i){return this.each(function(){let t=r.getData(this,Ut);var e="object"==typeof n&&n;if((t||!/dispose/.test(n))&&(t=t||new b(this,e),"string"==typeof n)){if(void 0===t[n])throw new TypeError('No method named "'.concat(n,'"'));t[n](i)}})}get _actionButton(){return a.findOne(".fixed-action-btn:not(.smooth-scroll) > .btn-floating",this._element)}get _buttonListElements(){return a.find("ul .btn",this._element)}get _buttonList(){return a.findOne("ul",this._element)}get _isTouchDevice(){return"ontouchstart"in document.documentElement}show(){c.hasClass(this._element,ee)&&(s.off(this._buttonList,Xt),s.trigger(this._element,Jt),this._bindListOpenTransitionEnd(),c.addStyle(this._element,{height:"".concat(this._fullContainerHeight,"px")}),this._toggleVisibility(!0))}hide(){c.hasClass(this._element,ee)&&(s.off(this._buttonList,Xt),s.trigger(this._element,Gt),this._bindListHideTransitionEnd(),this._toggleVisibility(!1))}dispose(){c.hasClass(this._element,ee)&&(s.off(this._actionButton,Yt),this._actionButton.removeEventListener(Kt,this._fn.mouseenter),this._element.removeEventListener($t,this._fn.mouseleave)),super.dispose()}_init(){c.hasClass(this._element,ee)&&(this._saveInitialHeights(),this._setInitialStyles(),this._bindInitialEvents())}_bindMouseEnter(){this._actionButton.addEventListener(Kt,this._fn.mouseenter=()=>{this._isTouchDevice||this.show()})}_bindMouseLeave(){this._element.addEventListener($t,this._fn.mouseleave=()=>{this.hide()})}_bindClick(){s.on(this._actionButton,Yt,()=>{c.hasClass(this._element,"active")?this.hide():this.show()})}_bindListHideTransitionEnd(){s.on(this._buttonList,Xt,t=>{"transform"===t.propertyName&&(s.off(this._buttonList,Xt),this._element.style.height="".concat(this._initialContainerHeight,"px"),s.trigger(this._element,Zt))})}_bindListOpenTransitionEnd(){s.on(this._buttonList,Xt,t=>{"transform"===t.propertyName&&(s.off(this._buttonList,Xt),s.trigger(this._element,te))})}_toggleVisibility(t){const e=t?"addClass":"removeClass";t=t?"translate(0)":"translateY(".concat(this._fullContainerHeight,"px)");c.addStyle(this._buttonList,{transform:t}),this._buttonListElements&&this._buttonListElements.forEach(t=>c[e](t,"shown")),c[e](this._element,"active")}_getHeight(t){t=window.getComputedStyle(t);return parseFloat(t.getPropertyValue("height"))}_saveInitialHeights(){this._initialContainerHeight=this._getHeight(this._element),this._initialListHeight=this._getHeight(this._buttonList),this._fullContainerHeight=this._initialContainerHeight+this._initialListHeight}_bindInitialEvents(){this._bindClick(),this._bindMouseEnter(),this._bindMouseLeave()}_setInitialStyles(){this._buttonList.style.marginBottom="".concat(this._initialContainerHeight,"px"),this._buttonList.style.transform="translateY(".concat(this._fullContainerHeight,"px)"),this._element.style.height="".concat(this._initialContainerHeight,"px")}}a.find(".fixed-action-btn").forEach(t=>{let e=b.getInstance(t);return e=e||new b(t)}),a.find('[data-mdb-toggle="button"]').forEach(t=>{let e=b.getInstance(t);return e=e||new b(t)}),o(()=>{const t=i();if(t){const e=t.fn[Vt];t.fn[Vt]=b.jQueryInterface,t.fn[Vt].Constructor=b,t.fn[Vt].noConflict=()=>(t.fn[Vt]=e,b.jQueryInterface)}});var ne=b,y={find(t){var e=1t.matches(e))},parents(t,e){var n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){var e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!ft(t)&&dt(t))}};const ie=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",oe=".sticky-top",re="padding-right",se="margin-right";var ae=class{constructor(){this._element=document.body}getWidth(){var t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,re,t=>t+e),this._setElementAttributes(ie,re,t=>t+e),this._setElementAttributes(oe,se,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,re),this._resetElementAttributes(ie,re),this._resetElementAttributes(oe,se)}isOverflowing(){return 0{var e;t!==this._element&&window.innerWidth>t.clientWidth+o||(this._saveInitialAttribute(t,n),e=window.getComputedStyle(t).getPropertyValue(n),t.style.setProperty(n,"".concat(i(Number.parseFloat(e)),"px")))})}_saveInitialAttribute(t,e){var n=t.style.getPropertyValue(e);n&&p.setDataAttribute(t,e,n)}_resetElementAttributes(t,n){this._applyManipulationCallback(t,t=>{var e=p.getDataAttribute(t,n);null===e?t.style.removeProperty(n):(p.removeDataAttribute(t,n),t.style.setProperty(n,e))})}_applyManipulationCallback(t,e){if(u(t))e(t);else for(const n of y.find(t,this._element))e(n)}};const ce="backdrop",le="mousedown.bs.".concat(ce),ue={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},he={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};var de=class extends g{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ue}static get DefaultType(){return he}static get NAME(){return ce}show(t){var e;this._config.isVisible?(this._append(),e=this._getElement(),this._config.isAnimated&&mt(e),e.classList.add("show"),this._emulateAnimation(()=>{d(t)})):d(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),d(t)})):d(t)}dispose(){this._isAppended&&(f.off(this._element,le),this._element.remove(),this._isAppended=!1)}_getElement(){var t;return this._element||((t=document.createElement("div")).className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t),this._element}_configAfterMerge(t){return t.rootElement=ht(t.rootElement),t}_append(){var t;this._isAppended||(t=this._getElement(),this._config.rootElement.append(t),f.on(t,le,()=>{d(this._config.clickCallback)}),this._isAppended=!0)}_emulateAnimation(t){bt(t,this._getElement(),this._config.isAnimated)}};const fe=".".concat("bs.focustrap"),pe="focusin".concat(fe),ge="keydown.tab".concat(fe),me="backward",_e={autofocus:!0,trapElement:null},ve={autofocus:"boolean",trapElement:"element"};function be(e){let n=1this._handleFocusin(t)),f.on(document,ge,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,f.off(document,fe))}_handleFocusin(t){var e=this._config["trapElement"];t.target===document||t.target===e||e.contains(t.target)||(0===(t=y.focusableChildren(e)).length?e:this._lastTabNavDirection===me?t[t.length-1]:t[0]).focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?me:"forward")}};var v=".".concat("bs.offcanvas"),_=".data-api",w="load".concat(v).concat(_);const we="showing",Ee=".offcanvas.show",xe="show".concat(v),Ce="shown".concat(v),Ae="hide".concat(v),Te="hidePrevented".concat(v),Oe="hidden".concat(v);var E="resize".concat(v),_="click".concat(v).concat(_);const Le="keydown.dismiss".concat(v);const Se={backdrop:!0,keyboard:!0,scroll:!1},Ie={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class ke extends m{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Se}static get DefaultType(){return Ie}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||f.trigger(this._element,xe,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ae).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(we),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove(we),f.trigger(this._element,Ce,{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&!f.trigger(this._element,Ae).defaultPrevented&&(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ae).reset(),f.trigger(this._element,Oe)},this._element,!0))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){var t=Boolean(this._config.backdrop);return new de({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"===this._config.backdrop?f.trigger(this._element,Te):this.hide()}:null})}_initializeFocusTrap(){return new ye({trapElement:this._element})}_addEventListeners(){f.on(this._element,Le,t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():f.trigger(this._element,Te))})}static jQueryInterface(e){return this.each(function(){var t=ke.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}f.on(document,_,'[data-mdb-toggle="offcanvas"]',function(t){var e=l(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ft(this)||(f.one(e,Oe,()=>{dt(this)&&this.focus()}),(t=y.findOne(Ee))&&t!==e&&ke.getInstance(t).hide(),ke.getOrCreateInstance(e).toggle(this))}),f.on(window,w,()=>{for(const t of y.find(Ee))ke.getOrCreateInstance(t).show()}),f.on(window,E,()=>{for(const t of y.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&ke.getOrCreateInstance(t).hide()}),be(ke),t(ke);var De=ke;v=".".concat("bs.alert");const je="close".concat(v),Me="closed".concat(v);class Pe extends m{static get NAME(){return"alert"}close(){var t;f.trigger(this._element,je).defaultPrevented||(this._element.classList.remove("show"),t=this._element.classList.contains("fade"),this._queueCallback(()=>this._destroyElement(),this._element,t))}_destroyElement(){this._element.remove(),f.trigger(this._element,Me),this.dispose()}static jQueryInterface(e){return this.each(function(){var t=Pe.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}be(Pe,"close"),t(Pe);_=Pe;const Ne="alert",Re=[{name:"close"},{name:"closed"}];class He extends _{constructor(t){super(t,1{var e=He.getInstance(t);e||new He(t)}),o(()=>{const t=i();if(t){const e=t.fn[Ne];t.fn[Ne]=He.jQueryInterface,t.fn[Ne].Constructor=He,t.fn[Ne].noConflict=()=>(t.fn[Ne]=e,He.jQueryInterface)}});var Be=He;const We=".bs.swipe",Fe="touchstart".concat(We),qe="touchmove".concat(We),ze="touchend".concat(We),Qe="pointerdown".concat(We),Ve="pointerup".concat(We),Ue={endCallback:null,leftCallback:null,rightCallback:null},Ye={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Xe extends g{constructor(t,e){super(),(this._element=t)&&Xe.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ue}static get DefaultType(){return Ye}static get NAME(){return"swipe"}dispose(){f.off(this._element,We)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),d(this._config.endCallback)}_move(t){this._deltaX=t.touches&&1this._start(t)),f.on(this._element,Ve,t=>this._end(t)),this._element.classList.add("pointer-event")):(f.on(this._element,Fe,t=>this._start(t)),f.on(this._element,qe,t=>this._move(t)),f.on(this._element,ze,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||0this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?f.one(this._element,en,()=>this.cycle()):this.cycle())}to(t){var e,n=this._getItems();t>n.length-1||t<0||(this._isSliding?f.one(this._element,en,()=>this.to(t)):(e=this._getItemIndex(this._getActive()))!==t&&(e=ethis._keydown(t)),"hover"===this._config.pause&&(f.on(this._element,on,()=>this.pause()),f.on(this._element,rn,()=>this._maybeEnableCycle())),this._config.touch&&Ke.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of y.find(".carousel-item img",this._element))f.on(t,sn,t=>t.preventDefault());this._swipeHelper=new Ke(this._element,{leftCallback:()=>this._slide(this._directionToOrder(Ze)),rightCallback:()=>this._slide(this._directionToOrder(Je)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}})}_keydown(t){var e;/input|textarea/i.test(t.target.tagName)||(e=hn[t.key])&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){var e;this._indicatorsElement&&((e=y.findOne(ln,this._indicatorsElement)).classList.remove(cn),e.removeAttribute("aria-current"),e=y.findOne('[data-mdb-slide-to="'.concat(t,'"]'),this._indicatorsElement))&&(e.classList.add(cn),e.setAttribute("aria-current","true"))}_updateInterval(){var t=this._activeElement||this._getActive();t&&(t=Number.parseInt(t.getAttribute("data-mdb-interval"),10),this._config.interval=t||this._config.defaultInterval)}_slide(e){var t=1f.trigger(this._element,t,{relatedTarget:o,direction:this._orderToDirection(e),from:this._getItemIndex(i),to:r});t=s(tn);if(!t.defaultPrevented&&i&&o){t=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(r),this._activeElement=o;const a=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";o.classList.add(c),mt(o),i.classList.add(a),o.classList.add(a);this._queueCallback(()=>{o.classList.remove(a,c),o.classList.add(cn),i.classList.remove(cn,c,a),this._isSliding=!1,s(en)},i,this._isAnimated()),t&&this.cycle()}}}}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return y.findOne(".active.carousel-item",this._element)}_getItems(){return y.find(un,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return h()?t===Ze?Ge:$e:t===Ze?$e:Ge}_orderToDirection(t){return h()?t===Ge?Ze:Je:t===Ge?Je:Ze}static jQueryInterface(e){return this.each(function(){var t=pn.getOrCreateInstance(this,e);if("number"==typeof e)t.to(e);else if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,_,"[data-mdb-slide], [data-mdb-slide-to]",function(t){var e=l(this);e&&e.classList.contains(an)&&(t.preventDefault(),t=pn.getOrCreateInstance(e),(e=this.getAttribute("data-mdb-slide-to"))?t.to(e):"next"===p.getDataAttribute(this,"slide")?t.next():t.prev(),t._maybeEnableCycle())}),f.on(window,v,()=>{for(const t of y.find('[data-mdb-ride="carousel"]'))pn.getOrCreateInstance(t)}),t(pn);w=pn;const gn="carousel",mn=[{name:"slide",parametersToCopy:["relatedTarget","direction","from","to"]},{name:"slid",parametersToCopy:["relatedTarget","direction","from","to"]}];class _n extends w{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"slide.bs.carousel"),s.off(this._element,"slid.bs.carousel"),super.dispose()}static get NAME(){return gn}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,mn,gn)}}a.find('[data-mdb-ride="carousel"]').forEach(t=>{var e=_n.getInstance(t);e||new _n(t,c.getDataAttributes(t))}),o(()=>{const t=i();if(t){const e=t.fn[gn];t.fn[gn]=_n.jQueryInterface,t.fn[gn].Constructor=_n,t.fn[gn].noConflict=()=>(t.fn[gn]=e,_n.jQueryInterface)}});var vn=_n;const x=".".concat("bs.modal");const bn="hide".concat(x),yn="hidePrevented".concat(x),wn="hidden".concat(x),En="show".concat(x),xn="shown".concat(x),Cn="resize".concat(x),An="click.dismiss".concat(x),Tn="mousedown.dismiss".concat(x),On="keydown.dismiss".concat(x);E="click".concat(x).concat(".data-api");const Ln="modal-open",Sn="modal-static";const In={backdrop:!0,focus:!0,keyboard:!0},kn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Dn extends m{constructor(t,e){super(t,e),this._dialog=y.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ae,this._addEventListeners()}static get Default(){return In}static get DefaultType(){return kn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||f.trigger(this._element,En,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ln),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||f.trigger(this._element,bn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove("show"),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){for(const t of[window,this._dialog])f.off(t,x);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new de({isVisible:Boolean(this._config.backdrop)&&Boolean(!this._config.modalNonInvasive),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new ye({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var e=y.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),mt(this._element),this._element.classList.add("show");this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,f.trigger(this._element,xn,{relatedTarget:t})},this._dialog,this._isAnimated())}_addEventListeners(){f.on(this._element,On,t=>{"Escape"===t.key&&(this._config.keyboard?(t.preventDefault(),this.hide()):this._triggerBackdropTransition())}),f.on(window,Cn,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),f.on(this._element,Tn,e=>{f.one(this._element,An,t=>{this._element===e.target&&this._element===t.target&&("static"===this._config.backdrop?this._triggerBackdropTransition():this._config.backdrop&&this.hide())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Ln),this._resetAdjustments(),this._scrollBar.reset(),f.trigger(this._element,wn)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){var t=f.trigger(this._element,yn);if(!t.defaultPrevented){t=this._element.scrollHeight>document.documentElement.clientHeight;const e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Sn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Sn),this._queueCallback(()=>{this._element.classList.remove(Sn),this._queueCallback(()=>{this._element.style.overflowY=e},this._dialog)},this._dialog),this._element.focus())}}_adjustDialog(){var t,e=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),i=0{t.defaultPrevented||f.one(e,wn,()=>{dt(this)&&this.focus()})}),y.find(".modal.show").forEach(t=>{t.classList.contains("modal-non-invasive-show")||Dn.getInstance(t).hide()}),Dn.getOrCreateInstance(e).toggle(this)}),be(Dn),t(Dn);_=Dn;const jn="modal",Mn=[{name:"show",parametersToCopy:["relatedTarget"]},{name:"shown",parametersToCopy:["relatedTarget"]},{name:"hide"},{name:"hidePrevented"},{name:"hidden"}];class Pn extends _{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.modal"),s.off(this._element,"shown.bs.modal"),s.off(this._element,"hide.bs.modal"),s.off(this._element,"hidden.bs.modal"),s.off(this._element,"hidePrevented.bs.modal"),super.dispose()}static get NAME(){return jn}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Mn,jn)}}a.find('[data-mdb-toggle="modal"]').forEach(t=>{var t=H(t),t=a.findOne(t),e=Pn.getInstance(t);e||new Pn(t)}),o(()=>{const t=i();if(t){const e=t.fn[jn];t.fn[jn]=Pn.jQueryInterface,t.fn[jn].Constructor=Pn,t.fn[jn].noConflict=()=>(t.fn[jn]=e,Pn.jQueryInterface)}});var Nn=Pn,O="top",L="bottom",S="right",I="left",Rn="auto",Hn=[O,L,S,I],Bn="start",Wn="end",Fn="clippingParents",qn="viewport",zn="popper",Qn="reference",Vn=Hn.reduce(function(t,e){return t.concat([e+"-"+Bn,e+"-"+Wn])},[]),Un=[].concat(Hn,[Rn]).reduce(function(t,e){return t.concat([e,e+"-"+Bn,e+"-"+Wn])},[]),Yn="beforeRead",Xn="read",Kn="afterRead",$n="beforeMain",Gn="main",Zn="afterMain",Jn="beforeWrite",ti="write",ei="afterWrite",ni=[Yn,Xn,Kn,$n,Gn,Zn,Jn,ti,ei];function C(t){return t?(t.nodeName||"").toLowerCase():null}function A(t){var e;return null==t?window:"[object Window]"!==t.toString()?(e=t.ownerDocument)&&e.defaultView||window:t}function ii(t){return t instanceof A(t).Element||t instanceof Element}function T(t){return t instanceof A(t).HTMLElement||t instanceof HTMLElement}function oi(t){return"undefined"!=typeof ShadowRoot&&(t instanceof A(t).ShadowRoot||t instanceof ShadowRoot)}var ri={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var o=t.state;Object.keys(o.elements).forEach(function(t){var e=o.styles[t]||{},n=o.attributes[t]||{},i=o.elements[t];T(i)&&C(i)&&(Object.assign(i.style,e),Object.keys(n).forEach(function(t){var e=n[t];!1===e?i.removeAttribute(t):i.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var i=t.state,o={popper:{position:i.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(i.elements.popper.style,o.popper),i.styles=o,i.elements.arrow&&Object.assign(i.elements.arrow.style,o.arrow),function(){Object.keys(i.elements).forEach(function(t){var e=i.elements[t],n=i.attributes[t]||{},t=Object.keys((i.styles.hasOwnProperty(t)?i.styles:o)[t]).reduce(function(t,e){return t[e]="",t},{});T(e)&&C(e)&&(Object.assign(e.style,t),Object.keys(n).forEach(function(t){e.removeAttribute(t)}))})}},requires:["computeStyles"]};function k(t){return t.split("-")[0]}var si=Math.max,ai=Math.min,ci=Math.round;function li(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function ui(){return!/^((?!chrome|android).)*safari/i.test(li())}function hi(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&T(t)&&(o=0l[C]&&(x=ki(x)),ki(x)),C=[];if(i&&C.push(A[w]<=0),o&&C.push(A[x]<=0,A[E]<=0),C.every(function(t){return t})){v=y,_=!1;break}u.set(y,C)}if(_)for(var T=g?3:1;0{const n=t.nodeName.toLowerCase();return e.includes(n)?!oo.has(n)||Boolean(ro.test(t.nodeValue)||so.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))})(a,r)||s.removeAttribute(a.nodeName)}else s.remove()}return n.body.innerHTML}const co={allowList:v,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
      "},lo={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},uo={entry:"(string|element|function|null)",selector:"(string|element)"};var ho=class extends g{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return co}static get DefaultType(){return lo}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return 0
      ',title:"",trigger:"hover focus"},Eo={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class xo extends m{constructor(t,e){if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return wo}static get DefaultType(){return Eo}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),f.off(this._element.closest(mo),_o,this._hideModalHandler),this._element.getAttribute("data-mdb-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-mdb-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=f.trigger(this._element,this.constructor.eventName("show")),e=(pt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&e){this._disposePopper();t=this._getTipElement(),e=(this._element.setAttribute("aria-describedby",t.getAttribute("id")),this._config)["container"];if(this._element.ownerDocument.documentElement.contains(this.tip)||(e.append(t),f.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(t),t.classList.add(go),"ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))f.on(n,"mouseover",gt);this._queueCallback(()=>{f.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}}}hide(){if(this._isShown()){var t=f.trigger(this._element,this.constructor.eventName("hide"));if(!t.defaultPrevented){if(this._getTipElement().classList.remove(go),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))f.off(e,"mouseover",gt);this._activeTrigger.click=!1,this._activeTrigger[bo]=!1,this._activeTrigger[vo]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),f.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){t=this._getTemplateFactory(t).toHtml();if(!t)return null;t.classList.remove(po,go),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var e=(t=>{for(;t+=Math.floor(1e6*Math.random()),document.getElementById(t););return t})(this.constructor.NAME).toString();return t.setAttribute("id",e),this._isAnimated()&&t.classList.add(po),t}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new ho({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-mdb-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(po)}_isShown(){return this.tip&&this.tip.classList.contains(go)}_createPopper(t){var e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,e=yo[e.toUpperCase()];return no(this._element,t,this._getPopperConfig(e))}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){t={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_setListeners(){var t,e;for(const n of this._config.trigger.split(" "))"click"===n?f.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{this._initializeOnDelegatedTarget(t).toggle()}):"manual"!==n&&(t=n===vo?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),e=n===vo?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout"),f.on(this._element,t,this._config.selector,t=>{var e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?bo:vo]=!0,e._enter()}),f.on(this._element,e,this._config.selector,t=>{var e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?bo:vo]=e._element.contains(t.relatedTarget),e._leave()}));this._hideModalHandler=()=>{this._element&&this.hide()},f.on(this._element.closest(mo),_o,this._hideModalHandler)}_fixTitle(){var t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-mdb-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){var e=p.getDataAttributes(this._element);for(const n of Object.keys(e))fo.has(n)&&delete e[n];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){var t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){var t=xo.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(xo);w=xo;const Co={...w.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},Ao={...w.DefaultType,content:"(null|string|element|function)"};class To extends w{static get Default(){return Co}static get DefaultType(){return Ao}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){var t=To.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(To);E=To;const Oo="popover",Lo=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"},{name:"inserted"}];class So extends E{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this.element,"show.bs.popover"),s.off(this.element,"shown.bs.popover"),s.off(this.element,"hide.bs.popover"),s.off(this.element,"hidden.bs.popover"),s.off(this.element,"inserted.bs.popover"),super.dispose()}static get NAME(){return Oo}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Lo,Oo)}}a.find('[data-mdb-toggle="popover"]').forEach(t=>{var e=So.getInstance(t);e||new So(t)}),o(()=>{const t=i();if(t){const e=t.fn[Oo];t.fn[Oo]=So.jQueryInterface,t.fn[Oo].Constructor=So,t.fn[Oo].noConflict=()=>(t.fn[Oo]=e,So.jQueryInterface)}});var Io=So;_=".".concat("bs.scrollspy");const ko="activate".concat(_),Do="click".concat(_);"load".concat(_).concat(".data-api");const jo="active";const Mo="[href]";g=".nav-link";const Po="".concat(g,", ").concat(".nav-item"," > ").concat(g,", ").concat(".list-group-item"),No={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Ro={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ho extends m{constructor(t,e){super(t,e),this._config.target&&(this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh())}static get Default(){return No}static get DefaultType(){return Ro}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer&&this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=ht(t.target)||document.body,t.rootMargin=t.offset?"".concat(t.offset,"px 0px -30%"):t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map(t=>Number.parseFloat(t))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(f.off(this._config.target,Do),f.on(this._config.target,Do,Mo,t=>{var e=this._observableSections.get(t.target.hash);e&&(t.preventDefault(),t=this._rootElement||window,e=e.offsetTop-this._element.offsetTop,t.scrollTo?t.scrollTo({top:e,behavior:"smooth"}):t.scrollTop=e)}))}_getNewObserver(){var t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(t=>this._observerCallback(t),t)}_observerCallback(t){const e=t=>this._targetLinks.get("#".concat(t.target.id));var n=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,o=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const s of t)if(s.isIntersecting){var r=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&r){if(n(s),i)continue;return}o||r||n(s)}else this._activeTarget=null,this._clearActiveClass(e(s))}_initializeTargetsAndObservables(){var t;this._targetLinks=new Map,this._observableSections=new Map;for(const e of y.find(Mo,this._config.target))e.hash&&!ft(e)&&(t=y.findOne(e.hash,this._element),dt(t))&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),(this._activeTarget=t).classList.add(jo),this._activateParents(t),f.trigger(this._element,ko,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))y.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(jo);else for(const e of y.parents(t,".nav, .list-group"))for(const n of y.prev(e,Po))n.classList.add(jo)}_clearActiveClass(t){t.classList.remove(jo);for(const e of y.find("".concat(Mo,".").concat(jo),t))e.classList.remove(jo)}static jQueryInterface(e){return this.each(function(){var t=Ho.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(Ho);v=Ho;const Bo="scrollspy";E="mdb.".concat(Bo),_=".".concat(E);const Wo="activate.bs.scrollspy",Fo="activate".concat(_);g="load".concat(_).concat(".data-api");const qo="collapsible-scrollspy";const zo=".".concat("active"),Qo=".".concat(qo);class Vo extends v{constructor(t,e){super(t,e),this._collapsibles=[],this._init()}dispose(){s.off(this._scrollElement,Wo),super.dispose()}static get NAME(){return Bo}_init(){this._bindActivateEvent(),this._getCollapsibles(),0!==this._collapsibles.length&&(this._showSubsection(),this._hideSubsection())}_getHeight(t){return t.offsetHeight}_hide(t){t=a.findOne("ul",t.parentNode);t.style.overflow="hidden",t.style.height="".concat(0,"px")}_show(t,e){t.style.height=e}_getCollapsibles(){var t=a.find(Qo);t&&t.forEach(t=>{var e=t.parentNode,e=a.findOne("ul",e),n=e.offsetHeight;this._collapsibles.push({element:e,relatedTarget:t.getAttribute("href"),height:"".concat(n,"px")})})}_showSubsection(){a.find(zo).filter(t=>c.hasClass(t,qo)).forEach(e=>{var t=a.findOne("ul",e.parentNode),n=this._collapsibles.find(t=>t.relatedTarget=e.getAttribute("href")).height;this._show(t,n)})}_hideSubsection(){a.find(Qo).filter(t=>!1===c.hasClass(t,"active")).forEach(t=>{this._hide(t)})}_bindActivateEvent(){s.on(this._element,Wo,t=>{this._showSubsection(),this._hideSubsection(),s.trigger(this._element,Fo,{relatedTarget:t.relatedTarget})})}}s.on(window,g,()=>{a.find('[data-mdb-spy="scroll"]').forEach(t=>{var e=Vo.getInstance(t);e||new Vo(t,c.getDataAttributes(t))})}),o(()=>{const t=i();if(t){const e=t.fn[Bo];t.fn[Bo]=Vo.jQueryInterface,t.fn[Bo].Constructor=Vo,t.fn[Bo].noConflict=()=>(t.fn[Bo]=e,Vo.jQueryInterface)}});var Uo=Vo;E=".".concat("bs.tab");const Yo="hide".concat(E),Xo="hidden".concat(E),Ko="show".concat(E),$o="shown".concat(E);_="click".concat(E);const Go="keydown".concat(E);v="load".concat(E);const Zo="ArrowRight",Jo="ArrowDown",tr="active",er="show";g=":not(.dropdown-toggle)";E=".nav-link".concat(g,", .list-group-item").concat(g,', [role="tab"]').concat(g),g='[data-mdb-toggle="tab"], [data-mdb-toggle="pill"], [data-mdb-toggle="list"]';const nr="".concat(E,", ").concat(g),ir=".".concat(tr,'[data-mdb-toggle="tab"], .').concat(tr,'[data-mdb-toggle="pill"], .').concat(tr,'[data-mdb-toggle="list"]');class or extends m{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),f.on(this._element,Go,t=>this._keydown(t)))}static get NAME(){return"tab"}show(){var t,e,n=this._element;this._elemIsActive(n)||(e=(t=this._getActiveElem())?f.trigger(t,Yo,{relatedTarget:n}):null,f.trigger(n,Ko,{relatedTarget:t}).defaultPrevented)||e&&e.defaultPrevented||(this._deactivate(t,n),this._activate(n,t))}_activate(t,e){t&&(t.classList.add(tr),this._activate(l(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.add(er):(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),f.trigger(t,$o,{relatedTarget:e}))},t,t.classList.contains("fade")))}_deactivate(t,e){t&&(t.classList.remove(tr),t.blur(),this._deactivate(l(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.remove(er):(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),f.trigger(t,Xo,{relatedTarget:e}))},t,t.classList.contains("fade")))}_keydown(t){var e;["ArrowLeft",Zo,"ArrowUp",Jo].includes(t.key)&&(t.stopPropagation(),t.preventDefault(),e=[Zo,Jo].includes(t.key),t=yt(this._getChildren().filter(t=>!ft(t)),t.target,e,!0))&&(t.focus({preventScroll:!0}),or.getOrCreateInstance(t).show())}_getChildren(){return y.find(nr,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const n of e)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);var e=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",e),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){var e=l(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id)&&this._setAttributeIfNotExists(e,"aria-labelledby","#".concat(t.id))}_toggleDropDown(t,n){const i=this._getOuterElement(t);i.classList.contains("dropdown")&&((t=(t,e)=>{t=y.findOne(t,i);t&&t.classList.toggle(e,n)})(".dropdown-toggle",tr),t(".dropdown-menu",er),i.setAttribute("aria-expanded",n))}_setAttributeIfNotExists(t,e,n){t.hasAttribute(e)||t.setAttribute(e,n)}_elemIsActive(t){return t.classList.contains(tr)}_getInnerElement(t){return t.matches(nr)?t:y.findOne(nr,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(e){return this.each(function(){var t=or.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,_,g,function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),ft(this)||or.getOrCreateInstance(this).show()}),f.on(window,v,()=>{for(const t of y.find(ir))or.getOrCreateInstance(t)}),t(or);E=or;const rr="tab";_="mdb.".concat(rr),g=".".concat(_);const sr="show.bs.tab",ar="shown.bs.tab",cr="show".concat(g),lr="shown".concat(g),ur="hide".concat(g),hr="hidden".concat(g);class dr extends E{dispose(){s.off(this._element,sr),s.off(this._element,ar),super.dispose()}static get NAME(){return rr}show(){var n=this._element;if(!this._elemIsActive(n)){var i=this._getActiveElem();let t=null,e=null;i&&(t=s.trigger(i,"hide.bs.tab",{relatedTarget:n}),e=s.trigger(i,ur,{relatedTarget:n}));var o=s.trigger(n,sr,{relatedTarget:i}),r=s.trigger(n,cr,{relatedTarget:i});o.defaultPrevented&&r.defaultPrevented||t&&t.defaultPrevented&&e&&e.defaultPrevented||(this._deactivate(i,n),this._activate(n,i))}}_activate(t,e){t&&(t.classList.add("active"),this._activate(B(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.add("show"):(t.focus(),t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),s.trigger(t,ar,{relatedTarget:e}),s.trigger(t,lr,{relatedTarget:e}))},t,t.classList.contains("fade")))}_deactivate(t,e){t&&(t.classList.remove("active"),t.blur(),this._deactivate(B(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.remove("show"):(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),s.trigger(t,"hidden.bs.tab",{relatedTarget:e}),s.trigger(t,hr,{relatedTarget:e}))},t,t.classList.contains("fade")))}}a.find('[data-mdb-toggle="tab"], [data-mdb-toggle="pill"], [data-mdb-toggle="list"]').forEach(t=>{var e=dr.getInstance(t);e||new dr(t)}),o(()=>{const t=i();if(t){const e=t.fn.tab;t.fn.tab=dr.jQueryInterface,t.fn.tab.Constructor=dr,t.fn.tab.noConflict=()=>(t.fn.tab=e,dr.jQueryInterface)}});var fr=dr;const pr="tooltip",gr=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"},{name:"inserted"}];class mr extends w{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.tooltip"),s.off(this._element,"shown.bs.tooltip"),s.off(this._element,"hide.bs.tooltip"),s.off(this._element,"hidden.bs.tooltip"),s.off(this._element,"inserted.bs.tooltip"),super.dispose()}static get NAME(){return pr}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,gr,pr)}}a.find('[data-mdb-toggle="tooltip"]').forEach(t=>{var e=mr.getInstance(t);e||new mr(t)}),o(()=>{const t=i();if(t){const e=t.fn[pr];t.fn[pr]=mr.jQueryInterface,t.fn[pr].Constructor=mr,t.fn[pr].noConflict=()=>(t.fn[pr]=e,mr.jQueryInterface)}});var _r=mr;v=".".concat("bs.toast");const vr="mouseover".concat(v),br="mouseout".concat(v),yr="focusin".concat(v),wr="focusout".concat(v),Er="hide".concat(v),xr="hidden".concat(v),Cr="show".concat(v),Ar="shown".concat(v),Tr="show",Or="showing",Lr={animation:"boolean",autohide:"boolean",delay:"number"},Sr={animation:!0,autohide:!0,delay:5e3};class Ir extends m{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Sr}static get DefaultType(){return Lr}static get NAME(){return"toast"}show(){f.trigger(this._element,Cr).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),mt(this._element),this._element.classList.add(Tr,Or),this._queueCallback(()=>{this._element.classList.remove(Or),f.trigger(this._element,Ar),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&!f.trigger(this._element,Er).defaultPrevented&&(this._element.classList.add(Or),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove(Or,Tr),f.trigger(this._element,xr)},this._element,this._config.animation))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Tr),super.dispose()}isShown(){return this._element.classList.contains(Tr)}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}e?this._clearTimeout():(t=t.relatedTarget,this._element===t||this._element.contains(t)||this._maybeScheduleHide())}_setListeners(){f.on(this._element,vr,t=>this._onInteraction(t,!0)),f.on(this._element,br,t=>this._onInteraction(t,!1)),f.on(this._element,yr,t=>this._onInteraction(t,!0)),f.on(this._element,wr,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){var t=Ir.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}be(Ir),t(Ir);_=Ir;const kr="toast",Dr=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"}];class jr extends _{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.toast"),s.off(this._element,"shown.bs.toast"),s.off(this._element,"hide.bs.toast"),s.off(this._element,"hidden.bs.toast"),super.dispose()}static get NAME(){return kr}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Dr,kr)}}a.find(".toast").forEach(t=>{var e=jr.getInstance(t);e||new jr(t)}),o(()=>{const t=i();if(t){const e=t.fn[kr];t.fn[kr]=jr.jQueryInterface,t.fn[kr].Constructor=jr,t.fn[kr].noConflict=()=>(t.fn[kr]=e,jr.jQueryInterface)}});var Mr=jr;e(116);const Pr="input",Nr="mdb.input";g="form-outline";const Rr="active",Hr="form-notch",Br="form-notch-leading",Wr="form-notch-middle";const Fr=".".concat(g," input"),qr=".".concat(g," textarea"),zr=".".concat(Hr),Qr=".".concat(Br),Vr=".".concat(Wr),Ur=".".concat("form-helper");class j{constructor(t){this._element=t,this._label=null,this._labelWidth=0,this._labelMarginLeft=0,this._notchLeading=null,this._notchMiddle=null,this._notchTrailing=null,this._initiated=!1,this._helper=null,this._counter=!1,this._counterElement=null,this._maxLength=0,this._leadingIcon=null,this._element&&(r.setData(t,Nr,this),this.init())}static get NAME(){return Pr}get input(){return a.findOne("input",this._element)||a.findOne("textarea",this._element)}init(){this._initiated||(this._getLabelData(),this._applyDivs(),this._applyNotch(),this._activate(),this._getHelper(),this._getCounter(),this._initiated=!0)}update(){this._getLabelData(),this._getNotchData(),this._applyNotch(),this._activate(),this._getHelper(),this._getCounter()}forceActive(){c.addClass(this.input,Rr)}forceInactive(){c.removeClass(this.input,Rr)}dispose(){this._removeBorder(),r.removeData(this._element,Nr),this._element=null}_getLabelData(){this._label=a.findOne("label",this._element),null===this._label?this._showPlaceholder():(this._getLabelWidth(),this._getLabelPositionInInputGroup(),this._toggleDefaultDatePlaceholder())}_getHelper(){this._helper=a.findOne(Ur,this._element)}_getCounter(){this._counter=c.getDataAttribute(this.input,"showcounter"),this._counter&&(this._maxLength=this.input.maxLength,this._showCounter())}_showCounter(){var t;0{var t=this.input.value.length;this._counterElement.innerHTML="".concat(t," / ").concat(this._maxLength)})}_toggleDefaultDatePlaceholder(){var t=0{this._getElements(e);var t=e?e.target:this.input;""!==t.value&&c.addClass(t,Rr),this._toggleDefaultDatePlaceholder(t)})}_getElements(t){var e;t&&(this._element=t.target.parentNode,this._label=a.findOne("label",this._element)),t&&this._label&&(e=this._labelWidth,this._getLabelData(),e!==this._labelWidth)&&(this._notchMiddle=a.findOne(".form-notch-middle",t.target.parentNode),this._notchLeading=a.findOne(Qr,t.target.parentNode),this._applyNotch())}_deactivate(t){t=t?t.target:this.input;""===t.value&&t.classList.remove(Rr),this._toggleDefaultDatePlaceholder(t)}static activate(e){return function(t){e._activate(t)}}static deactivate(e){return function(t){e._deactivate(t)}}static jQueryInterface(n,i){return this.each(function(){let t=r.getData(this,Nr);var e="object"==typeof n&&n;if((t||!/dispose/.test(n))&&(t=t||new j(this,e),"string"==typeof n)){if(void 0===t[n])throw new TypeError('No method named "'.concat(n,'"'));t[n](i)}})}static getInstance(t){return r.getData(t,Nr)}static getOrCreateInstance(t){var e=1{a.find(Fr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()})}),s.on(window,"shown.bs.dropdown",t=>{t=t.target.parentNode.querySelector(".dropdown-menu");t&&(a.find(Fr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}))}),s.on(window,"shown.bs.tab",t=>{let e;e=(t.target.href||c.getDataAttribute(t.target,"target")).split("#")[1];t=a.findOne("#".concat(e));a.find(Fr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()})}),a.find(".".concat(g)).map(t=>new j(t)),s.on(window,"reset",t=>{a.find(Fr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.forceInactive()}),a.find(qr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.forceInactive()})}),s.on(window,"onautocomplete",t=>{var e=j.getInstance(t.target.parentNode);e&&t.cancelable&&e.forceActive()}),o(()=>{const t=i();if(t){const e=t.fn[Pr];t.fn[Pr]=j.jQueryInterface,t.fn[Pr].Constructor=j,t.fn[Pr].noConflict=()=>(t.fn[Pr]=e,j.jQueryInterface)}});var Yr=j;E=".".concat("bs.collapse");const Xr="show".concat(E),Kr="shown".concat(E),$r="hide".concat(E),Gr="hidden".concat(E);w="click".concat(E).concat(".data-api");const Zr="show",Jr="collapse",ts="collapsing",es=":scope .".concat(Jr," .").concat(Jr),ns='[data-mdb-toggle="collapse"]',is={parent:null,toggle:!0},os={parent:"(null|element)",toggle:"boolean"};class rs extends m{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];for(const o of y.find(ns)){var n=lt(o),i=y.find(n).filter(t=>t===this._element);null!==n&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return is}static get DefaultType(){return os}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(!this._isTransitioning&&!this._isShown()){let t=[];if(!(t=this._config.parent?this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(t=>t!==this._element).map(t=>rs.getOrCreateInstance(t,{toggle:!1})):t).length||!t[0]._isTransitioning){var e=f.trigger(this._element,Xr);if(!e.defaultPrevented){for(const i of t)i.hide();const n=this._getDimension();this._element.classList.remove(Jr),this._element.classList.add(ts),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;e=n[0].toUpperCase()+n.slice(1),e="scroll".concat(e);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(ts),this._element.classList.add(Jr,Zr),this._element.style[n]="",f.trigger(this._element,Kr)},this._element,!0),this._element.style[n]="".concat(this._element[e],"px")}}}}hide(){if(!this._isTransitioning&&this._isShown()){var t=f.trigger(this._element,$r);if(!t.defaultPrevented){t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),mt(this._element),this._element.classList.add(ts),this._element.classList.remove(Jr,Zr);for(const n of this._triggerArray){var e=l(n);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([n],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(ts),this._element.classList.add(Jr),f.trigger(this._element,Gr)},this._element,!0)}}}_isShown(){return(0!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(e){const n={};return"string"==typeof e&&/show|hide/.test(e)&&(n.toggle=!1),this.each(function(){var t=rs.getOrCreateInstance(this,n);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,w,ns,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();t=lt(this);for(const e of y.find(t))rs.getOrCreateInstance(e,{toggle:!1}).toggle()}),t(rs);v=rs;const ss="collapse",as=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"}];class cs extends v{constructor(t){super(t,1{t=H(t);a.find(t).forEach(t=>{cs.getOrCreateInstance(t,{toggle:!1})})}),o(()=>{const t=i();if(t){const e=t.fn[ss];t.fn[ss]=cs.jQueryInterface,t.fn[ss].Constructor=cs,t.fn[ss].noConflict=()=>(t.fn[ss]=e,cs.jQueryInterface)}});var ls=cs;const us="dropdown";_=".".concat("bs.dropdown"),e=".data-api";const hs="ArrowDown",ds="hide".concat(_),fs="hidden".concat(_),ps="show".concat(_),gs="shown".concat(_);g="click".concat(_).concat(e),E="keydown".concat(_).concat(e),w="keyup".concat(_).concat(e);const ms="show",_s='[data-mdb-toggle="dropdown"]:not(.disabled):not(:disabled)',vs="".concat(_s,".").concat(ms),bs=".dropdown-menu",ys=h()?"top-end":"top-start",ws=h()?"top-start":"top-end",Es=h()?"bottom-end":"bottom-start",xs=h()?"bottom-start":"bottom-end",Cs=h()?"left-start":"right-start",As=h()?"right-start":"left-start",Ts={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Os={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class M extends m{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=y.next(this._element,bs)[0]||y.prev(this._element,bs)[0]||y.findOne(bs,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Ts}static get DefaultType(){return Os}static get NAME(){return us}toggle(){return this._isShown()?this.hide():this.show()}show(){if(!ft(this._element)&&!this._isShown()){var t={relatedTarget:this._element},e=f.trigger(this._element,ps,t);if(!e.defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const n of[].concat(...document.body.children))f.on(n,"mouseover",gt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ms),this._element.classList.add(ms),f.trigger(this._element,gs,t)}}}hide(){var t;!ft(this._element)&&this._isShown()&&(t={relatedTarget:this._element},this._completeHide(t))}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){var e=f.trigger(this._element,ds,t);if(!e.defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))f.off(n,"mouseover",gt);this._popper&&this._popper.destroy(),this._menu.classList.remove(ms),this._element.classList.remove(ms),this._element.setAttribute("aria-expanded","false"),p.removeDataAttribute(this._menu,"popper"),f.trigger(this._element,fs,t)}}_getConfig(t){if("object"!=typeof(t=super._getConfig(t)).reference||u(t.reference)||"function"==typeof t.reference.getBoundingClientRect)return t;throw new TypeError("".concat(us.toUpperCase(),': Option "reference" provided type "object" without a required "getBoundingClientRect" method.'))}_createPopper(){if(void 0===n)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:u(this._config.reference)?t=ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);var e=this._getPopperConfig();this._popper=no(t,this._menu,e)}_isShown(){return this._menu.classList.contains(ms)}_getPlacement(){var t,e=this._parent;return e.classList.contains("dropend")?Cs:e.classList.contains("dropstart")?As:e.classList.contains("dropup-center")?"top":e.classList.contains("dropdown-center")?"bottom":(t="end"===getComputedStyle(this._menu).getPropertyValue("--mdb-position").trim(),e.classList.contains("dropup")?t?ws:ys:t?xs:Es)}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){var t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return!this._inNavbar&&"static"!==this._config.display||(p.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem(t){var{key:t,target:e}=t,n=y.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(t=>dt(t));n.length&&yt(n,e,t===hs,!n.includes(e)).focus()}static jQueryInterface(e){return this.each(function(){var t=M.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}static clearMenus(t){if(2!==t.button&&("keyup"!==t.type||"Tab"===t.key))for(const o of y.find(vs)){var e,n,i=M.getInstance(o);i&&!1!==i._config.autoClose&&(e=(n=t.composedPath()).includes(i._menu),n.includes(i._element)||"inside"===i._config.autoClose&&!e||"outside"===i._config.autoClose&&e||i._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName))||(n={relatedTarget:i._element},"click"===t.type&&(n.clickEvent=t),i._completeHide(n)))}}static dataApiKeydownHandler(t){var e=/input|textarea/i.test(t.target.tagName),n="Escape"===t.key,i=["ArrowUp",hs].includes(t.key);!i&&!n||e&&!n||(t.preventDefault(),e=this.matches(_s)?this:y.prev(this,_s)[0]||y.next(this,_s)[0]||y.findOne(_s,t.delegateTarget.parentNode),n=M.getOrCreateInstance(e),i?(t.stopPropagation(),n.show(),n._selectMenuItem(t)):n._isShown()&&(t.stopPropagation(),n.hide(),e.focus()))}}f.on(document,E,_s,M.dataApiKeydownHandler),f.on(document,E,bs,M.dataApiKeydownHandler),f.on(document,g,M.clearMenus),f.on(document,w,M.clearMenus),f.on(document,g,_s,function(t){t.preventDefault(),M.getOrCreateInstance(this).toggle()}),t(M);v=M;const Ls="dropdown";_="mdb.".concat(Ls),e=".".concat(_);const Ss={offset:[0,2],flip:!0,boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,dropdownAnimation:"on"},Is={offset:"(array|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",dropdownAnimation:"string"},ks="hide.bs.dropdown",Ds="hidden.bs.dropdown",js="show.bs.dropdown",Ms="shown.bs.dropdown",Ps="hide".concat(e),Ns="hidden".concat(e),Rs="show".concat(e),Hs="shown".concat(e),Bs="animation",Ws="fade-in",Fs="fade-out";class qs extends v{constructor(t,e){super(t,e),this._config=this._getConfig(e),this._menuStyle="",this._popperPlacement="",this._mdbPopperConfig="";t=window.matchMedia("(prefers-reduced-motion: reduce)").matches;"on"!==this._config.dropdownAnimation||t||this._init()}dispose(){s.off(this._element,js),s.off(this._parent,Ms),s.off(this._parent,ks),s.off(this._parent,Ds),super.dispose()}static get NAME(){return Ls}_init(){this._bindShowEvent(),this._bindShownEvent(),this._bindHideEvent(),this._bindHiddenEvent()}_getConfig(t){t={...Ss,...c.getDataAttributes(this._element),...t};return W(Ls,t,Is),t}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){var t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{altBoundary:this._config.flip,boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(c.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_bindShowEvent(){s.on(this._element,js,t=>{s.trigger(this._element,Rs,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():this._dropdownAnimationStart("show")})}_bindShownEvent(){s.on(this._parent,Ms,t=>{s.trigger(this._parent,Hs,{relatedTarget:t.relatedTarget}).defaultPrevented&&t.preventDefault()})}_bindHideEvent(){s.on(this._parent,ks,t=>{s.trigger(this._parent,Ps,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():(this._menuStyle=this._menu.style.cssText,this._popperPlacement=this._menu.getAttribute("data-popper-placement"),this._mdbPopperConfig=this._menu.getAttribute("data-mdb-popper"))})}_bindHiddenEvent(){s.on(this._parent,Ds,t=>{s.trigger(this._parent,Ns,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():("static"!==this._config.display&&""!==this._menuStyle&&(this._menu.style.cssText=this._menuStyle),this._menu.setAttribute("data-popper-placement",this._popperPlacement),this._menu.setAttribute("data-mdb-popper",this._mdbPopperConfig),this._dropdownAnimationStart("hide"))})}_dropdownAnimationStart(t){"show"===t?(this._menu.classList.add(Bs,Ws),this._menu.classList.remove(Fs)):(this._menu.classList.add(Bs,Fs),this._menu.classList.remove(Ws)),this._bindAnimationEnd()}_bindAnimationEnd(){s.one(this._menu,"animationend",()=>{this._menu.classList.remove(Bs,Fs,Ws)})}}a.find('[data-mdb-toggle="dropdown"]').forEach(t=>{var e=qs.getInstance(t);e||new qs(t)}),o(()=>{const t=i();if(t){const e=t.fn[Ls];t.fn[Ls]=qs.jQueryInterface,t.fn[Ls].Constructor=qs,t.fn[Ls].noConflict=()=>(t.fn[Ls]=e,qs.jQueryInterface)}});var zs=qs;const Qs="ripple",Vs="mdb.ripple",P="ripple-surface",Us="ripple-wave",Ys="input-wrapper",Xs=[".btn",".ripple"],Ks="ripple-surface-unbound",$s=[0,0,0],Gs=["primary","secondary","success","danger","warning","info","light","dark"],Zs={rippleCentered:!1,rippleColor:"",rippleDuration:"500ms",rippleRadius:0,rippleUnbound:!1},Js={rippleCentered:"boolean",rippleColor:"string",rippleDuration:"string",rippleRadius:"number",rippleUnbound:"boolean"};class ta{constructor(t,e){this._element=t,this._options=this._getConfig(e),this._element&&(r.setData(t,Vs,this),c.addClass(this._element,P)),this._clickHandler=this._createRipple.bind(this),this._rippleTimer=null,this._isMinWidthSet=!1,this._rippleInSpan=!1,this.init()}static get NAME(){return Qs}init(){this._addClickEvent(this._element)}dispose(){r.removeData(this._element,Vs),s.off(this._element,"click",this._clickHandler),this._element=null,this._options=null}_autoInit(e){if(Xs.forEach(t=>{a.closest(e.target,t)&&(this._element=a.closest(e.target,t))}),this._options=this._getConfig(),"input"===this._element.tagName.toLowerCase()){var t=this._element.parentNode;if(this._rippleInSpan=!0,"span"===t.tagName.toLowerCase()&&t.classList.contains(P))this._element=t;else{var n=getComputedStyle(this._element).boxShadow;const o=this._element;var i=document.createElement("span");o.classList.contains("btn-block")&&(i.style.display="block"),s.one(i,"mouseup",t=>{0===t.button&&o.click()}),i.classList.add(P,Ys),c.addStyle(i,{border:0,"box-shadow":n}),t.replaceChild(i,this._element),i.appendChild(this._element),this._element=i}this._element.focus()}this._element.style.minWidth||(c.style(this._element,{"min-width":"".concat(getComputedStyle(this._element).width)}),this._isMinWidthSet=!0),c.addClass(this._element,P),this._createRipple(e)}_addClickEvent(t){s.on(t,"mousedown",this._clickHandler)}_getEventLayer(t){return{layerX:Math.round(t.clientX-t.target.getBoundingClientRect().x),layerY:Math.round(t.clientY-t.target.getBoundingClientRect().y)}}_createRipple(t){var e,n,i,o,r,s,a;null!==this._element&&(c.hasClass(this._element,P)||c.addClass(this._element,P),{layerX:t,layerY:e}=this._getEventLayer(t),t=t,e=e,n=this._element.offsetHeight,a=this._element.offsetWidth,i=this._durationToMsNumber(this._options.rippleDuration),o={offsetX:this._options.rippleCentered?n/2:t,offsetY:this._options.rippleCentered?a/2:e,height:n,width:a},o=this._getDiameter(o),r=this._options.rippleRadius||o/2,s={delay:.5*i,duration:i-.5*i},a={left:this._options.rippleCentered?"".concat(a/2-r,"px"):"".concat(t-r,"px"),top:this._options.rippleCentered?"".concat(n/2-r,"px"):"".concat(e-r,"px"),height:"".concat(2*this._options.rippleRadius||o,"px"),width:"".concat(2*this._options.rippleRadius||o,"px"),transitionDelay:"0s, ".concat(s.delay,"ms"),transitionDuration:"".concat(i,"ms, ").concat(s.duration,"ms")},t=F("div"),this._createHTMLRipple({wrapper:this._element,ripple:t,styles:a}),this._removeHTMLRipple({ripple:t,duration:i}))}_createHTMLRipple(t){let{wrapper:e,ripple:n,styles:i}=t;Object.keys(i).forEach(t=>n.style[t]=i[t]),n.classList.add(Us),""!==this._options.rippleColor&&(this._removeOldColorClasses(e),this._addColor(n,e)),this._toggleUnbound(e),this._appendRipple(n,e)}_removeHTMLRipple(t){let{ripple:e,duration:n}=t;this._rippleTimer&&(clearTimeout(this._rippleTimer),this._rippleTimer=null),this._rippleTimer=setTimeout(()=>{e&&(e.remove(),this._element)&&(a.find(".".concat(Us),this._element).forEach(t=>{t.remove()}),this._isMinWidthSet&&(c.style(this._element,{"min-width":""}),this._isMinWidthSet=!1),this._rippleInSpan&&this._element.classList.contains(Ys)?this._removeWrapperSpan():c.removeClass(this._element,P))},n)}_removeWrapperSpan(){var t=this._element.firstChild;this._element.replaceWith(t),this._element=t,this._element.focus(),this._rippleInSpan=!1}_durationToMsNumber(t){return Number(t.replace("ms","").replace("s","000"))}_getConfig(){var t=0Math.sqrt(t**2+e**2),a=e===n/2&&t===i/2;const c=!0==o&&!1==r,l=!0==o&&!0==r,u=!1==o&&!0==r,h=!1==o&&!1==r;o={topLeft:s(t,e),topRight:s(i-t,e),bottomLeft:s(t,n-e),bottomRight:s(i-t,n-e)};let d=0;return a||h?d=o.topLeft:u?d=o.topRight:l?d=o.bottomRight:c&&(d=o.bottomLeft),2*d}_appendRipple(t,e){e.appendChild(t),setTimeout(()=>{c.addClass(t,"active")},50)}_toggleUnbound(t){!0===this._options.rippleUnbound?c.addClass(t,Ks):t.classList.remove(Ks)}_addColor(t,e){Gs.find(t=>t===this._options.rippleColor.toLowerCase())?c.addClass(e,"".concat(P,"-").concat(this._options.rippleColor.toLowerCase())):(e=this._colorToRGB(this._options.rippleColor).join(","),e="rgba({{color}}, 0.2) 0, rgba({{color}}, 0.3) 40%, rgba({{color}}, 0.4) 50%, rgba({{color}}, 0.5) 60%, rgba({{color}}, 0) 70%".split("{{color}}").join("".concat(e)),t.style.backgroundImage="radial-gradient(circle, ".concat(e,")"))}_removeOldColorClasses(e){var t=new RegExp("".concat(P,"-[a-z]+"),"gi");(e.classList.value.match(t)||[]).forEach(t=>{e.classList.remove(t)})}_colorToRGB(t){var e,n,i;return"transparent"===t.toLowerCase()?$s:"#"===t[0]?((e=t).length<7&&(e="#".concat(e[1]).concat(e[1]).concat(e[2]).concat(e[2]).concat(e[3]).concat(e[3])),[parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16)]):(-1===t.indexOf("rgb")&&(e=t,n=document.body.appendChild(document.createElement("fictum")),i="rgb(1, 2, 3)",n.style.color=i,t=n.style.color!==i||(n.style.color=e,n.style.color===i)||""===n.style.color?$s:(e=getComputedStyle(n).color,document.body.removeChild(n),e)),0===t.indexOf("rgb")?((i=(i=t).match(/[.\d]+/g).map(t=>+Number(t))).length=3,i):$s)}static autoInitial(e){return function(t){e._autoInit(t)}}static jQueryInterface(t){return this.each(function(){return r.getData(this,Vs)?null:new ta(this,t)})}static getInstance(t){return r.getData(t,Vs)}static getOrCreateInstance(t){var e=1{s.one(document,"mousedown",t,ta.autoInitial(new ta))}),o(()=>{const t=i();if(t){const e=t.fn[Qs];t.fn[Qs]=ta.jQueryInterface,t.fn[Qs].Constructor=ta,t.fn[Qs].noConflict=()=>(t.fn[Qs]=e,ta.jQueryInterface)}});var ea=ta;const na="range",ia="mdb.range";const oa="thumb-active";const ra=".".concat("thumb-value"),sa=".".concat("thumb");m=".".concat("range");class aa{constructor(t){this._element=t,this._initiated=!1,this._thumb=null,this._element&&(r.setData(t,ia,this),this.init())}static get NAME(){return na}get rangeInput(){return a.findOne("input[type=range]",this._element)}init(){this._initiated||(this._addThumb(),this._thumbUpdate(),this._handleEvents(),this._initiated=!0)}dispose(){this._disposeEvents(),r.removeData(this._element,ia),this._element=null,this._thumb=null}_addThumb(){var t=F("span");c.addClass(t,"thumb"),t.innerHTML='',this._element.append(t),this._thumb=a.findOne(sa,this._element)}_handleEvents(){s.on(this.rangeInput,"mousedown",()=>this._showThumb()),s.on(this.rangeInput,"mouseup",()=>this._hideThumb()),s.on(this.rangeInput,"touchstart",()=>this._showThumb()),s.on(this.rangeInput,"touchend",()=>this._hideThumb()),s.on(this.rangeInput,"input",()=>this._thumbUpdate())}_disposeEvents(){s.off(this.rangeInput,"mousedown",this._showThumb),s.off(this.rangeInput,"mouseup",this._hideThumb),s.off(this.rangeInput,"touchstart",this._showThumb),s.off(this.rangeInput,"touchend",this._hideThumb),s.off(this.rangeInput,"input",this._thumbUpdate)}_showThumb(){c.addClass(this._thumb,oa)}_hideThumb(){c.removeClass(this._thumb,oa)}_thumbUpdate(){var t=this.rangeInput,e=t.value,n=t.min||0,t=t.max||100,e=(a.findOne(ra,this._thumb).textContent=e,Number(100*(e-n)/(t-n)));c.style(this._thumb,{left:"calc(".concat(e,"% + (").concat(8-.15*e,"px))")})}static getInstance(t){return r.getData(t,ia)}static getOrCreateInstance(t){var e=1new aa(t)),o(()=>{const t=i();if(t){const e=t.fn[na];t.fn[na]=aa.jQueryInterface,t.fn[na].Constructor=aa,t.fn[na].noConflict=()=>(t.fn[na]=e,aa.jQueryInterface)}});var ca=aa}],i={},o.m=n,o.c=i,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=119);function o(t){var e;return(i[t]||(e=i[t]={i:t,l:!1,exports:{}},n[t].call(e.exports,e,e.exports,o),e.l=!0,e)).exports}var n,i}); +//# sourceMappingURL=mdb.min.js.map \ No newline at end of file diff --git a/assets/js/mdb.min.js.map b/assets/js/mdb.min.js.map new file mode 100644 index 0000000..7d974c7 --- /dev/null +++ b/assets/js/mdb.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./src/js/index-free.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","fails","a","IndexedObject","requireObjectCoercible","toInteger","min","argument","ceil","floor","isNaN","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","IS_PURE","push","version","copyright","bitmap","configurable","writable","toString","slice","input","PREFERRED_STRING","fn","val","valueOf","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","TYPE","state","type","keys","toObject","toLength","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","internalObjectKeys","concat","getOwnPropertyNames","id","postfix","random","classof","Array","isArray","arg","propertyIsEnumerable","max","integer","SPECIES","wellKnownSymbol","METHOD_NAME","array","constructor","foo","Boolean","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","path","aFunction","variable","namespace","method","arguments","createElement","EXISTS","indexOf","names","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","TO_STRING_TAG","TAG","originalArray","C","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","replace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","nativePropertyIsEnumerable","NASHORN_BUG","1","V","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertySymbols","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","__webpack_amd_options__","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","propertyKey","UNSCOPABLES","ArrayPrototype","g","e","CORRECT_PROTOTYPE_GETTER","test","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","wrappedWellKnownSymbolModule","$","createIteratorConstructor","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","PrototypeOfArrayIteratorPrototype","arrayIterator","ignoreCase","multiline","dotAll","unicode","sticky","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","codeAt","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","stringMethod","regexMethod","R","b","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","nativeObjectCreate","objectKeys","getOwnPropertyNamesExternal","defineWellKnownSymbol","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","point","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","originalModule","webpackPolyfill","children","whitespace","ltrim","rtrim","start","end","trim","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","windowNames","getWindowNames","$map","arrayMethodHasSpeciesSupport","createProperty","nativeSlice","Constructor","k","fin","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","len","actualStart","argumentsLength","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","$filter","$find","SKIPS_HOLES","nativeJoin","ES3_STRINGS","separator","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","defaultConstructor","DatePrototype","Date","nativeDateToString","getTime","NaN","parseFloatImplementation","parseFloat","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","IS_RIGHT","memo","left","right","whitespaces","nativeParseFloat","Infinity","trimmedString","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","MATCH","dummy","Wrapper","NewTarget","NewTargetPrototype","nativeMatch","matcher","matchStr","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","$reduce","reduce","nativeReverse","reverse","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","parseIntImplementation","CONSTRUCTOR_NAME","FunctionPrototype","FunctionPrototypeToString","nameRE","nativeParseInt","hex","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","nativeLastIndexOf","lastIndexOf","endPos","jQuery","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","element","event","handler","addEventListener","each","resize","height","scrollHeight","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","makeActiveAutofocus","textAreaAutoResize","on","action","selectors","parent","hasClass","siblings","attr","css","noValue","isValid","noPlaceholder","removeClass","validateField","$formReset","is","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","append","$input","hasValue","hasPlaceholder","addOrRemove","hasActiveLabel","hasLabel","valid","Number","addClass","$textarea","fontFamily","fontSize","text","content","width","init","$navbar","offset","top","mdbTreeview","off","toggleClass","treeviewToggle","$elements","$closed","hide","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","visibility","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","scrollTop","pageYOffset","clientTop","round","_value","fill","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nativeKeys","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toPositiveInteger","BYTES","factory","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","label","parentNode","querySelector","innerHTML","findFirstChildNode","childNodes","node","nodeType","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","files","file","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","querySelectorAll","Event","formSelector","customFileInputList","formList","_i","_len","destroy","form","removeEventListener","_i2","_len2","define","Chart","require","u","Error","2","colorNames","getRgba","rgb","scale","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","toUpperCase","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","obj","hsl","hsv","cmyk","setValues","red","lightness","v","w","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","toJSON","clone","prop","spaces","maxes","getValues","space","capped","chans","sname","svalues","4","rgb2hsl","h","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","y","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","PI","sqrt","lab2rgb","lch2lab","lch","hr","cos","sin","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","5","conversions","Converter","func","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","defaults","Element","elements","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","register","initialize","Legend","legend","_element","Title","title","pluginService","PluginBase","extend","canvasHelpers","canvas","layoutService","8","Bar","context","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","hover","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","axis","rectangle","borderSkipped","tooltips","callbacks","item","yLabel","labels","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","update","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","backgroundColor","valueAtIndexOrDefault","borderColor","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","last","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","prev","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","hidden","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","opts","availableWidth","availableHeight","bottom","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","tension","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","requestAnimFrame","startDigest","startTime","now","framesToDrop","advance","endTime","callback","24","updateConfig","newOptions","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","instances","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","notify","retinaScale","devicePixelRatio","bindEvents","responsive","initToolTip","clear","stop","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","effects","stepDecimal","easingValue","transition","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","listener","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","active","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","26","scope","27","color","configuration","_view","ease","actual","origin","c0","c1","isFinite","interpolate","tooltipPosition","isNumber","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","deltaX","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","evt","mouseX","mouseY","originalEvent","srcElement","boundingRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","padding","parentDimension","host","clientWidth","cw","clientHeight","currentStyle","getPropertyValue","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","deltaY","indexMode","nearest","ret","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","hook","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","minor","major","_ticks","beforeUpdate","maxWidth","maxHeight","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","translate","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","linear","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","existingModel","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","rect","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","clip","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","45","matches","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","createEvent","nativeEvent","addResizeListener","ticking","expando","resizer","cls","cssText","className","expand","shrink","_reset","scrollLeft","onScroll","createResizer","renderProxy","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","_enabled","keyframes","_style","setAttribute","getElementsByTagName","createTextNode","getElementById","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","format","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","diff","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","formats","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","innerWidth","displayFormat","$findIndex","screen","deviceXDPI","logicalXDPI","utils","toTextLines","unshift","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dx","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","borderRadius","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","frame","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","contains","margin","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","dispatchEvent","$context","$groups","_key","_dirty","handleMoveEvents","enter","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","override","configs","afterDatasetsDraw","beforeEvent","handlers","click","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","attribute","$modal_dialog","def","swing","Velocity","isWindow","isPlainObject","uuid","removeData","queue","dequeue","pageXOffset","clientLeft","nodeName","marginTop","marginLeft","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","isAnimating","Lists","transforms3D","Values","complete","tweensContainer","documentMode","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","mock","patch","debug","friction","dv","spring","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","backgroundPosition","transformOrigin","perspectiveOrigin","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","hexToRgb","Names","camelCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","offsetHeight","offsetWidth","getBBox","direction","scrollTo","alternateValue","skewX","skewY","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","remToPx","vwToPx","vhToPx","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","rejecter","clearTimeout","backwards","stagger","drag","velocity","marginBottom","overflow","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$includes","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","Waves","$$","isTouchAvailable","getWavesElements","nodes","stringRepr","elem","docElem","win","doc","ownerDocument","getWindow","convertStyle","styleObj","Effect","show","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","TagWrapper","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","parentElement","getWavesEffectElement","disabled","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","classes","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","ready"],"mappings":"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","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 152);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","module.exports = {};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = require('../internals/global');\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$
      ') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","jQuery(($) => {\n\n class Forms {\n\n constructor() {\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md', 'date']\n .map((selector) => `input[type=${selector}]`)\n .join(', ')}, textarea`;\n this.textAreaSelector = '.materialize-textarea';\n this.$text = $('.md-textarea-auto');\n this.$body = $('body');\n this.$document = $(document);\n }\n\n init() {\n\n if (this.$text.length) {\n let observe;\n\n if (window.attachEvent) {\n observe = function (element, event, handler) {\n element.attachEvent(`on${event}`, handler);\n };\n } else {\n observe = function (element, event, handler) {\n element.addEventListener(event, handler, false);\n };\n }\n\n this.$text.each(function () {\n const self = this;\n\n function resize() {\n self.style.height = 'auto';\n self.style.height = `${self.scrollHeight}px`;\n }\n\n function delayedResize() {\n window.setTimeout(resize, 0);\n }\n\n observe(self, 'change', resize);\n observe(self, 'cut', delayedResize);\n observe(self, 'paste', delayedResize);\n observe(self, 'drop', delayedResize);\n observe(self, 'keydown', delayedResize);\n\n resize();\n });\n }\n\n $(this.inputSelector).each((index, input) => {\n const $this = $(input);\n const isNotValid = input.validity.badInput;\n this.updateTextFields($this);\n\n if (isNotValid) {\n this.toggleActiveClass($this, 'add');\n }\n });\n\n this.addOnFocusEvent();\n this.addOnBlurEvent();\n this.addOnChangeEvent();\n this.addOnResetEvent();\n this.appendHiddenDiv();\n this.makeActiveAutofocus();\n\n $(this.textAreaSelector).each(this.textAreaAutoResize);\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\n }\n\n makeActiveAutofocus() {\n\n this.toggleActiveClass($('input[autofocus]'), 'add');\n }\n\n toggleActiveClass($this, action) {\n let selectors;\n action = `${action}Class`;\n\n if ($this.parent().hasClass('timepicker')) {\n selectors = 'label';\n } else {\n selectors = 'label, i, .input-prefix';\n }\n $this.siblings(selectors)[action]('active');\n }\n\n addOnFocusEvent() {\n this.$document.on('focus', this.inputSelector, (e) => {\n this.toggleActiveClass($(e.target), 'add');\n\n if($(e.target).attr(\"type\") == \"date\") {\n $(e.target).css(\"color\", \"#495057\");\n }\n });\n }\n\n addOnBlurEvent() {\n this.$document.on('blur', this.inputSelector, (e) => {\n const $this = $(e.target);\n const noValue = !$this.val();\n const isValid = !e.target.validity.badInput;\n const noPlaceholder = $this.attr('placeholder') === undefined;\n\n if (noValue && isValid && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"transparent\");\n }\n }\n\n if (!noValue && isValid && noPlaceholder) {\n $this.siblings('i, .input-prefix').removeClass('active');\n\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"#495057\");\n }\n }\n\n this.validateField($this);\n });\n }\n\n addOnChangeEvent() {\n this.$document.on('change', this.inputSelector, (e) => {\n const $this = $(e.target);\n\n this.updateTextFields($this);\n this.validateField($this);\n });\n }\n\n addOnResetEvent() {\n this.$document.on('reset', (e) => {\n const $formReset = $(e.target);\n\n if ($formReset.is('form')) {\n const $formInputs = $formReset.find(this.inputSelector);\n\n $formInputs\n .removeClass('valid invalid')\n .each((index, input) => {\n const $this = $(input);\n const noDefaultValue = !$this.val();\n const noPlaceholder = !$this.attr('placeholder');\n\n if (noDefaultValue && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n }\n });\n\n $formReset.find('select.initialized').each((index, select) => {\n const $select = $(select);\n const $visibleInput = $select.siblings('input.select-dropdown');\n const defaultValue = $select.children('[selected]').val();\n\n $select.val(defaultValue);\n $visibleInput.val(defaultValue);\n });\n }\n });\n }\n\n appendHiddenDiv() {\n if (!$('.hiddendiv').first().length) {\n const $hiddenDiv = $('
      ');\n this.$body.append($hiddenDiv);\n }\n }\n\n updateTextFields($input) {\n const hasValue = Boolean($input.val());\n const hasPlaceholder = Boolean($input.attr('placeholder'));\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\n const hasActiveLabel = $input.siblings('label').hasClass('active');\n const hasLabel = Boolean($input.siblings('label')[0])\n\n if($input.attr(\"type\") !== \"date\") {\n this.toggleActiveClass($input, addOrRemove);\n }\n\n if($input.attr(\"type\") == \"date\" && !hasActiveLabel && hasLabel) {\n $input.css(\"color\", \"transparent\");\n\n } else if($input.attr(\"type\") == \"date\" && hasValue) {\n this.toggleActiveClass($input, addOrRemove);\n }\n }\n\n validateField($input) {\n if ($input.hasClass('validate')) {\n const value = $input.val();\n const noValue = !value.length;\n const isValid = !$input[0].validity.badInput;\n\n if (noValue && isValid) {\n $input.removeClass('valid').removeClass('invalid');\n } else {\n const valid = $input[0].validity.valid;\n const length = Number($input.attr('length')) || 0;\n\n if (valid && (!length || length > value.length)) {\n $input.removeClass('invalid').addClass('valid');\n } else {\n $input.removeClass('valid').addClass('invalid');\n }\n }\n }\n }\n\n textAreaAutoResize() {\n const $textarea = $(this);\n\n if ($textarea.val().length) {\n const $hiddenDiv = $('.hiddendiv');\n const fontFamily = $textarea.css('font-family');\n const fontSize = $textarea.css('font-size');\n\n if (fontSize) {\n $hiddenDiv.css('font-size', fontSize);\n }\n\n if (fontFamily) {\n $hiddenDiv.css('font-family', fontFamily);\n }\n\n if ($textarea.attr('wrap') === 'off') {\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\n }\n\n $hiddenDiv.text(`${$textarea.val()}\\n`);\n const content = $hiddenDiv.html().replace(/\\n/g, '
      ');\n $hiddenDiv.html(content);\n\n // When textarea is hidden, width goes crazy.\n // Approximate with half of window size\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\n $textarea.css('height', $hiddenDiv.height());\n }\n }\n }\n\n //auto init Forms\n const forms = new Forms();\n forms.init();\n\n});\n","jQuery(function ($) {\n\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\n\n $(window).on('scroll', () => {\n\n const $navbar = $('.navbar');\n \n if (!$navbar.length) return;\n\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\n });\n});\n","jQuery(($) => {\n $.fn.mdbTreeview = function () {\n\n const $this = $(this);\n\n if ($this.hasClass('treeview')) {\n treeviewToggle($this);\n }\n\n if ($this.hasClass('treeview-animated')) {\n treeviewAnimated($this);\n }\n\n if ($this.hasClass('treeview-colorful')) {\n treeviewColorful($this);\n }\n };\n\n function treeviewToggle($this) {\n const $toggler = $this.find('.rotate');\n\n $toggler.each(function () {\n const $this = $(this);\n\n $this.off('click');\n $this.on('click', function () {\n const $this = $(this);\n\n $this.siblings('.nested').toggleClass('active');\n $this.toggleClass('down');\n });\n });\n }\n\n function treeviewAnimated($this) {\n const $elements = $this.find('.treeview-animated-element');\n const $closed = $this.find('.closed');\n\n $this.find('.nested').hide();\n\n $closed.off('click');\n $closed.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointer = $this.children('.fa-angle-right');\n\n $this.toggleClass('open');\n $pointer.toggleClass('down');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $this.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n\n function treeviewColorful($this) {\n const $elements = $this.find('.treeview-colorful-element');\n const $header = $this.find('.treeview-colorful-items-header');\n\n $this.find('.nested').hide();\n\n $header.off('click');\n $header.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointerPlus = $this.children('.fa-plus-circle');\n const $pointerMinus = $this.children('.fa-minus-circle');\n\n $this.toggleClass('open');\n $pointerPlus.removeClass('fa-plus-circle');\n $pointerPlus.addClass('fa-minus-circle');\n $pointerMinus.removeClass('fa-minus-circle');\n $pointerMinus.addClass('fa-plus-circle');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $elements.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n});\n","jQuery($ => {\n\n class WOW {\n init() {\n $('.wow').wow();\n }\n }\n\n class MDBWow {\n constructor($wowElement, customization) {\n this.$wowElement = $wowElement;\n this.customization = customization;\n this.animated = true;\n this.options = this.assignElementCustomization();\n }\n\n init() {\n $(window).scroll(() => {\n if (this.animated) {\n this.hide();\n } else {\n this.mdbWow();\n }\n });\n\n this.appear();\n }\n\n assignElementCustomization() {\n return {\n animationName: this.$wowElement.css('animation-name'),\n offset: 100,\n iteration: this.fallback()\n .or(this.$wowElement.data('wow-iteration'))\n .or(1)\n .value(),\n duration: this.fallback()\n .or(this.$wowElement.data('wow-duration'))\n .or(1000)\n .value(),\n delay: this.fallback()\n .or(this.$wowElement.data('wow-delay'))\n .or(0)\n .value()\n };\n }\n\n mdbWow() {\n if (this.$wowElement.css('visibility') === 'visible') {\n return;\n }\n\n if (this.shouldElementBeVisible(true)) {\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\n this.appear();\n }\n }\n\n appear() {\n this.$wowElement.addClass('animated');\n this.$wowElement.css({\n visibility: 'visible',\n 'animation-name': this.options.animationName,\n 'animation-iteration-count': this.options.iteration,\n 'animation-duration': this.options.duration,\n 'animation-delay': this.options.delay\n });\n }\n\n hide() {\n if (this.shouldElementBeVisible(false)) {\n this.$wowElement.removeClass('animated');\n this.$wowElement.css({\n 'animation-name': 'none',\n visibility: 'hidden'\n });\n } else {\n setTimeout(() => {\n this.$wowElement.removeClass('animated');\n }, this.countRemoveTime());\n }\n this.mdbWow();\n this.animated = !this.animated;\n }\n\n shouldElementBeVisible(state) {\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\n const thisElementHeight = this.$wowElement.height();\n const documentHeight = $(document).height();\n const windowHeight = window.innerHeight;\n const scroll = window.scrollY;\n\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\n const isScrolledToTop = scroll < thisElementOffset;\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\n\n let returnLogic = false;\n\n if (state) {\n returnLogic = isElementTopVisible && isScrolledToTop ||\n isElementBottomVisible && isScrolledToBottom ||\n isDocumentHeightEqual && isOffsetHigherThanDocument;\n } else {\n returnLogic = isElementTopVisible && isScrolledOverTop ||\n isElementBottomHidden && isNotScrolledToTop ||\n isScrolledOverElement;\n }\n return returnLogic;\n }\n\n countRemoveTime() {\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\n let removeTime = 0;\n\n if (this.options.duration) {\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\n }\n if (this.options.delay) {\n removeTime += this.checkOptionsStringFormat(this.options.delay);\n }\n return removeTime;\n }\n\n checkOptionsStringFormat(element) {\n let valueToReturn;\n\n if (element.toString().slice(-1) === 's') {\n valueToReturn = element.toString().slice(0, -1);\n } else if (!isNaN(element.toString().slice(-1))) {\n valueToReturn = element;\n } else {\n return console.log('Not supported animation customization format.');\n }\n\n return valueToReturn;\n }\n\n getOffset(element) {\n const box = element.getBoundingClientRect();\n const body = document.body;\n const docEl = document.documentElement;\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const top = box.top + scrollTop - clientTop;\n\n return Math.round(top);\n }\n\n fallback() {\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.wow = function (options) {\n this.each(function () {\n const mdbWow = new MDBWow($(this), options);\n mdbWow.init();\n });\n };\n\n window.WOW = WOW;\n\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","// JS VENDOR FREE\nimport './vendor/free/bs-custom-file-input'\nimport './vendor/free/chart'\nimport './vendor/free/chartjs-datalabels'\nimport './vendor/free/enhanced-modals'\nimport './vendor/free/jquery.easing'\nimport './vendor/free/velocity'\nimport './vendor/free/waves'\n\n// JS FREE\nimport './free/forms-free'\nimport './free/scrolling-navbar'\nimport './free/treeview'\nimport './free/wow'\n","/*!\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2019 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.bsCustomFileInput = factory());\n}(this, function () {\n 'use strict';\n\n var Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input'\n };\n\n var textNodeType = 3;\n\n var getDefaultText = function getDefaultText(input) {\n var defaultText = '';\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n defaultText = label.innerHTML;\n }\n\n return defaultText;\n };\n\n var findFirstChildNode = function findFirstChildNode(element) {\n if (element.childNodes.length > 0) {\n var childNodes = [].slice.call(element.childNodes);\n\n for (var i = 0; i < childNodes.length; i++) {\n var node = childNodes[i];\n\n if (node.nodeType !== textNodeType) {\n return node;\n }\n }\n }\n\n return element;\n };\n\n var restoreDefaultText = function restoreDefaultText(input) {\n var defaultText = input.bsCustomFileInput.defaultText;\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n element.innerHTML = defaultText;\n }\n };\n\n var fileApi = !!window.File;\n var FAKE_PATH = 'fakepath';\n var FAKE_PATH_SEPARATOR = '\\\\';\n\n var getSelectedFiles = function getSelectedFiles(input) {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files).map(function (file) {\n return file.name;\n }).join(', ');\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n return splittedValue[splittedValue.length - 1];\n }\n\n return input.value;\n };\n\n function handleInputChange() {\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n var inputValue = getSelectedFiles(this);\n\n if (inputValue.length) {\n element.innerHTML = inputValue;\n } else {\n restoreDefaultText(this);\n }\n }\n }\n\n function handleFormReset() {\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i]);\n }\n }\n\n var customProperty = 'bsCustomFileInput';\n var Event = {\n FORMRESET: 'reset',\n INPUTCHANGE: 'change'\n };\n var bsCustomFileInput = {\n init: function init(inputSelector, formSelector) {\n if (inputSelector === void 0) {\n inputSelector = Selector.CUSTOMFILE;\n }\n\n if (formSelector === void 0) {\n formSelector = Selector.FORM;\n }\n\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input)\n },\n writable: true\n });\n handleInputChange.call(input);\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n Object.defineProperty(formList[_i], customProperty, {\n value: true,\n writable: true\n });\n }\n },\n destroy: function destroy() {\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n return !!form.bsCustomFileInput;\n });\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n restoreDefaultText(input);\n input[customProperty] = undefined;\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n formList[_i2][customProperty] = undefined;\n }\n }\n };\n\n return bsCustomFileInput;\n\n}));\n//# sourceMappingURL=bs-custom-file-input.js.map\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n bsCustomFileInput.init()\n});\n","/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.3\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) {\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n\n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args);\n }\n\n return this.setValues(space, values);\n};\n\n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\n'use strict'\n\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(30)();\n\nChart.helpers = require(46);\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire(28)(Chart);\n\nChart.Animation = require(22);\nChart.animationService = require(23);\nChart.defaults = require(26);\nChart.Element = require(27);\nChart.elements = require(41);\nChart.Interaction = require(29);\nChart.layouts = require(31);\nChart.platform = require(49);\nChart.plugins = require(32);\nChart.Scale = require(33);\nChart.scaleService = require(34);\nChart.Ticks = require(35);\nChart.Tooltip = require(36);\n\nrequire(24)(Chart);\nrequire(25)(Chart);\n\nrequire(56)(Chart);\nrequire(54)(Chart);\nrequire(55)(Chart);\nrequire(57)(Chart);\nrequire(58)(Chart);\nrequire(59)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\nrequire(21)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\n// Loading built-in plugins\nvar plugins = require(50);\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
      • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
      • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
      • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
      • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n\n},{\"26\":26}],22:[function(require,module,exports){\n'use strict';\n\nvar Element = require(27);\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\n},{\"27\":27}],23:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\n'use strict';\n\nvar Animation = require(22);\nvar animations = require(23);\nvar defaults = require(26);\nvar helpers = require(46);\nvar Interaction = require(29);\nvar layouts = require(31);\nvar platform = require(49);\nvar plugins = require(32);\nvar scaleService = require(34);\nvar Tooltip = require(36);\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n\n},{\"46\":46}],26:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n},{\"46\":46}],27:[function(require,module,exports){\n'use strict';\n\nvar color = require(3);\nvar helpers = require(46);\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\n/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require(3);\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\n},{\"46\":46}],30:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n\n},{\"26\":26}],31:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n},{\"46\":46}],32:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar Ticks = require(35);\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar layouts = require(31);\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\n},{\"46\":46}],36:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require(37);\nmodule.exports.Line = require(38);\nmodule.exports.Point = require(39);\nmodule.exports.Rectangle = require(40);\n\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n\n},{\"43\":43}],43:[function(require,module,exports){\n'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n\n},{\"43\":43}],45:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"43\":43}],46:[function(require,module,exports){\n'use strict';\n\nmodule.exports = require(43);\nmodule.exports.easing = require(44);\nmodule.exports.canvas = require(42);\nmodule.exports.options = require(45);\n\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\n},{}],48:[function(require,module,exports){\n/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require(46);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t'
      ' +\n\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t'
      ';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n\n},{\"46\":46}],49:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar basic = require(47);\nvar dom = require(48);\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require(51);\nmodule.exports.legend = require(52);\nmodule.exports.title = require(53);\n\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\n/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
        ');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('
      • ');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('
      • ');\n\t\t}\n\t\ttext.push('
      ');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\n'use strict';\n\nvar Scale = require(33);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\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\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\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\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\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\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar moment = require(1);\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\n * chartjs-plugin-datalabels v0.7.0\n * https://chartjs-plugin-datalabels.netlify.com\n * (c) 2019 Chart.js Contributors\n * Released under the MIT license\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\n}(this, function (Chart) { 'use strict';\n\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\n\nvar helpers = Chart.helpers;\n\nvar devicePixelRatio = (function() {\n\tif (typeof window !== 'undefined') {\n\t\tif (window.devicePixelRatio) {\n\t\t\treturn window.devicePixelRatio;\n\t\t}\n\n\t\t// devicePixelRatio is undefined on IE10\n\t\t// https://stackoverflow.com/a/20204180/8837887\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n\t\tvar screen = window.screen;\n\t\tif (screen) {\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n\t\t}\n\t}\n\n\treturn 1;\n}());\n\nvar utils = {\n\t// @todo move this in Chart.helpers.toTextLines\n\ttoTextLines: function(inputs) {\n\t\tvar lines = [];\n\t\tvar input;\n\n\t\tinputs = [].concat(inputs);\n\t\twhile (inputs.length) {\n\t\t\tinput = inputs.pop();\n\t\t\tif (typeof input === 'string') {\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\n\t\t\t} else if (Array.isArray(input)) {\n\t\t\t\tinputs.push.apply(inputs, input);\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\n\t\t\t\tlines.unshift('' + input);\n\t\t\t}\n\t\t}\n\n\t\treturn lines;\n\t},\n\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\ttoFontString: function(font) {\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (font.style ? font.style + ' ' : '')\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t\t+ font.size + 'px '\n\t\t\t+ font.family;\n\t},\n\n\t// @todo move this in Chart.helpers.canvas.textSize\n\t// @todo cache calls of measureText if font doesn't change?!\n\ttextSize: function(ctx, lines, font) {\n\t\tvar items = [].concat(lines);\n\t\tvar ilen = items.length;\n\t\tvar prev = ctx.font;\n\t\tvar width = 0;\n\t\tvar i;\n\n\t\tctx.font = font.string;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\n\t\t}\n\n\t\tctx.font = prev;\n\n\t\treturn {\n\t\t\theight: ilen * font.lineHeight,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\t// @todo move this method in Chart.helpers.options.toFont\n\tparseFont: function(value) {\n\t\tvar global = Chart.defaults.global;\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\n\t\t\tsize: size,\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = utils.toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n\t * @todo move this method in Chart.helpers.bound\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\n\t */\n\tbound: function(min, value, max) {\n\t\treturn Math.max(min, Math.min(value, max));\n\t},\n\n\t/**\n\t * Returns an array of pair [value, state] where state is:\n\t * * -1: value is only in a0 (removed)\n\t * * 1: value is only in a1 (added)\n\t */\n\tarrayDiff: function(a0, a1) {\n\t\tvar prev = a0.slice();\n\t\tvar updates = [];\n\t\tvar i, j, ilen, v;\n\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\n\t\t\tv = a1[i];\n\t\t\tj = prev.indexOf(v);\n\n\t\t\tif (j === -1) {\n\t\t\t\tupdates.push([v, 1]);\n\t\t\t} else {\n\t\t\t\tprev.splice(j, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\n\t\t\tupdates.push([prev[i], -1]);\n\t\t}\n\n\t\treturn updates;\n\t},\n\n\t/**\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n\t */\n\trasterize: function(v) {\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\n\t}\n};\n\nfunction orient(point, origin) {\n\tvar x0 = origin.x;\n\tvar y0 = origin.y;\n\n\tif (x0 === null) {\n\t\treturn {x: 0, y: -1};\n\t}\n\tif (y0 === null) {\n\t\treturn {x: 1, y: 0};\n\t}\n\n\tvar dx = point.x - x0;\n\tvar dy = point.y - y0;\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\n\n\treturn {\n\t\tx: ln ? dx / ln : 0,\n\t\ty: ln ? dy / ln : -1\n\t};\n}\n\nfunction aligned(x, y, vx, vy, align) {\n\tswitch (align) {\n\tcase 'center':\n\t\tvx = vy = 0;\n\t\tbreak;\n\tcase 'bottom':\n\t\tvx = 0;\n\t\tvy = 1;\n\t\tbreak;\n\tcase 'right':\n\t\tvx = 1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'left':\n\t\tvx = -1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'top':\n\t\tvx = 0;\n\t\tvy = -1;\n\t\tbreak;\n\tcase 'start':\n\t\tvx = -vx;\n\t\tvy = -vy;\n\t\tbreak;\n\tcase 'end':\n\t\t// keep natural orientation\n\t\tbreak;\n\tdefault:\n\t\t// clockwise rotation (in degree)\n\t\talign *= (Math.PI / 180);\n\t\tvx = Math.cos(align);\n\t\tvy = Math.sin(align);\n\t\tbreak;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tvx: vx,\n\t\tvy: vy\n\t};\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n\tvar res = R_INSIDE;\n\n\tif (x < rect.left) {\n\t\tres |= R_LEFT;\n\t} else if (x > rect.right) {\n\t\tres |= R_RIGHT;\n\t}\n\tif (y < rect.top) {\n\t\tres |= R_TOP;\n\t} else if (y > rect.bottom) {\n\t\tres |= R_BOTTOM;\n\t}\n\n\treturn res;\n}\n\nfunction clipped(segment, area) {\n\tvar x0 = segment.x0;\n\tvar y0 = segment.y0;\n\tvar x1 = segment.x1;\n\tvar y1 = segment.y1;\n\tvar r0 = region(x0, y0, area);\n\tvar r1 = region(x1, y1, area);\n\tvar r, x, y;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tif (!(r0 | r1) || (r0 & r1)) {\n\t\t\t// both points inside or on the same side: no clipping\n\t\t\tbreak;\n\t\t}\n\n\t\t// at least one point is outside\n\t\tr = r0 || r1;\n\n\t\tif (r & R_TOP) {\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n\t\t\ty = area.top;\n\t\t} else if (r & R_BOTTOM) {\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n\t\t\ty = area.bottom;\n\t\t} else if (r & R_RIGHT) {\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n\t\t\tx = area.right;\n\t\t} else if (r & R_LEFT) {\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n\t\t\tx = area.left;\n\t\t}\n\n\t\tif (r === r0) {\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tr0 = region(x0, y0, area);\n\t\t} else {\n\t\t\tx1 = x;\n\t\t\ty1 = y;\n\t\t\tr1 = region(x1, y1, area);\n\t\t}\n\t}\n\n\treturn {\n\t\tx0: x0,\n\t\tx1: x1,\n\t\ty0: y0,\n\t\ty1: y1\n\t};\n}\n\nfunction compute(range, config) {\n\tvar anchor = config.anchor;\n\tvar segment = range;\n\tvar x, y;\n\n\tif (config.clamp) {\n\t\tsegment = clipped(segment, config.area);\n\t}\n\n\tif (anchor === 'start') {\n\t\tx = segment.x0;\n\t\ty = segment.y0;\n\t} else if (anchor === 'end') {\n\t\tx = segment.x1;\n\t\ty = segment.y1;\n\t} else {\n\t\tx = (segment.x0 + segment.x1) / 2;\n\t\ty = (segment.y0 + segment.y1) / 2;\n\t}\n\n\treturn aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n\tarc: function(vm, config) {\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar vx = Math.cos(angle);\n\t\tvar vy = Math.sin(angle);\n\t\tvar r0 = vm.innerRadius;\n\t\tvar r1 = vm.outerRadius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x + vx * r0,\n\t\t\ty0: vm.y + vy * r0,\n\t\t\tx1: vm.x + vx * r1,\n\t\t\ty1: vm.y + vy * r1,\n\t\t\tvx: vx,\n\t\t\tvy: vy\n\t\t}, config);\n\t},\n\n\tpoint: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar rx = v.x * vm.radius;\n\t\tvar ry = v.y * vm.radius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x - rx,\n\t\t\ty0: vm.y - ry,\n\t\t\tx1: vm.x + rx,\n\t\t\ty1: vm.y + ry,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\trect: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar sx = 0;\n\t\tvar sy = 0;\n\n\t\tif (vm.horizontal) {\n\t\t\tx = Math.min(vm.x, vm.base);\n\t\t\tsx = Math.abs(vm.base - vm.x);\n\t\t} else {\n\t\t\ty = Math.min(vm.y, vm.base);\n\t\t\tsy = Math.abs(vm.base - vm.y);\n\t\t}\n\n\t\treturn compute({\n\t\t\tx0: x,\n\t\t\ty0: y + sy,\n\t\t\tx1: x + sx,\n\t\t\ty1: y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\tfallback: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\n\t\treturn compute({\n\t\t\tx0: vm.x,\n\t\t\ty0: vm.y,\n\t\t\tx1: vm.x,\n\t\t\ty1: vm.y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t}\n};\n\nvar helpers$1 = Chart.helpers;\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n\tvar borderWidth = model.borderWidth || 0;\n\tvar padding = model.padding;\n\tvar th = model.size.height;\n\tvar tw = model.size.width;\n\tvar tx = -tw / 2;\n\tvar ty = -th / 2;\n\n\treturn {\n\t\tframe: {\n\t\t\tx: tx - padding.left - borderWidth,\n\t\t\ty: ty - padding.top - borderWidth,\n\t\t\tw: tw + padding.width + borderWidth * 2,\n\t\t\th: th + padding.height + borderWidth * 2\n\t\t},\n\t\ttext: {\n\t\t\tx: tx,\n\t\t\ty: ty,\n\t\t\tw: tw,\n\t\t\th: th\n\t\t}\n\t};\n}\n\nfunction getScaleOrigin(el) {\n\tvar horizontal = el._model.horizontal;\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\n\n\tif (!scale) {\n\t\treturn null;\n\t}\n\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\n\t}\n\n\tvar pixel = scale.getBasePixel();\n\treturn horizontal ?\n\t\t{x: pixel, y: null} :\n\t\t{x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n\tif (el instanceof Chart.elements.Arc) {\n\t\treturn positioners.arc;\n\t}\n\tif (el instanceof Chart.elements.Point) {\n\t\treturn positioners.point;\n\t}\n\tif (el instanceof Chart.elements.Rectangle) {\n\t\treturn positioners.rect;\n\t}\n\treturn positioners.fallback;\n}\n\nfunction drawFrame(ctx, rect, model) {\n\tvar bgColor = model.backgroundColor;\n\tvar borderColor = model.borderColor;\n\tvar borderWidth = model.borderWidth;\n\n\tif (!bgColor && (!borderColor || !borderWidth)) {\n\t\treturn;\n\t}\n\n\tctx.beginPath();\n\n\thelpers$1.canvas.roundedRect(\n\t\tctx,\n\t\trasterize(rect.x) + borderWidth / 2,\n\t\trasterize(rect.y) + borderWidth / 2,\n\t\trasterize(rect.w) - borderWidth,\n\t\trasterize(rect.h) - borderWidth,\n\t\tmodel.borderRadius);\n\n\tctx.closePath();\n\n\tif (bgColor) {\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fill();\n\t}\n\n\tif (borderColor && borderWidth) {\n\t\tctx.strokeStyle = borderColor;\n\t\tctx.lineWidth = borderWidth;\n\t\tctx.lineJoin = 'miter';\n\t\tctx.stroke();\n\t}\n}\n\nfunction textGeometry(rect, align, font) {\n\tvar h = font.lineHeight;\n\tvar w = rect.w;\n\tvar x = rect.x;\n\tvar y = rect.y + h / 2;\n\n\tif (align === 'center') {\n\t\tx += w / 2;\n\t} else if (align === 'end' || align === 'right') {\n\t\tx += w;\n\t}\n\n\treturn {\n\t\th: h,\n\t\tw: w,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n\tvar shadow = ctx.shadowBlur;\n\tvar stroked = cfg.stroked;\n\tvar x = rasterize(cfg.x);\n\tvar y = rasterize(cfg.y);\n\tvar w = rasterize(cfg.w);\n\n\tif (stroked) {\n\t\tctx.strokeText(text, x, y, w);\n\t}\n\n\tif (cfg.filled) {\n\t\tif (shadow && stroked) {\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\n\t\t\tctx.shadowBlur = 0;\n\t\t}\n\n\t\tctx.fillText(text, x, y, w);\n\n\t\tif (shadow && stroked) {\n\t\t\tctx.shadowBlur = shadow;\n\t\t}\n\t}\n}\n\nfunction drawText(ctx, lines, rect, model) {\n\tvar align = model.textAlign;\n\tvar color = model.color;\n\tvar filled = !!color;\n\tvar font = model.font;\n\tvar ilen = lines.length;\n\tvar strokeColor = model.textStrokeColor;\n\tvar strokeWidth = model.textStrokeWidth;\n\tvar stroked = strokeColor && strokeWidth;\n\tvar i;\n\n\tif (!ilen || (!filled && !stroked)) {\n\t\treturn;\n\t}\n\n\t// Adjust coordinates based on text alignment and line height\n\trect = textGeometry(rect, align, font);\n\n\tctx.font = font.string;\n\tctx.textAlign = align;\n\tctx.textBaseline = 'middle';\n\tctx.shadowBlur = model.textShadowBlur;\n\tctx.shadowColor = model.textShadowColor;\n\n\tif (filled) {\n\t\tctx.fillStyle = color;\n\t}\n\tif (stroked) {\n\t\tctx.lineJoin = 'round';\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = strokeColor;\n\t}\n\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\n\t\tdrawTextLine(ctx, lines[i], {\n\t\t\tstroked: stroked,\n\t\t\tfilled: filled,\n\t\t\tw: rect.w,\n\t\t\tx: rect.x,\n\t\t\ty: rect.y + rect.h * i\n\t\t});\n\t}\n}\n\nvar Label = function(config, ctx, el, index) {\n\tvar me = this;\n\n\tme._config = config;\n\tme._index = index;\n\tme._model = null;\n\tme._rects = null;\n\tme._ctx = ctx;\n\tme._el = el;\n};\n\nhelpers$1.extend(Label.prototype, {\n\t/**\n\t * @private\n\t */\n\t_modelize: function(display, lines, config, context) {\n\t\tvar me = this;\n\t\tvar index = me._index;\n\t\tvar resolve = helpers$1.options.resolve;\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\n\n\t\treturn {\n\t\t\talign: resolve([config.align, 'center'], context, index),\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\n\t\t\tarea: context.chart.chartArea,\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\n\t\t\tclamp: resolve([config.clamp, false], context, index),\n\t\t\tclip: resolve([config.clip, false], context, index),\n\t\t\tcolor: color,\n\t\t\tdisplay: display,\n\t\t\tfont: font,\n\t\t\tlines: lines,\n\t\t\toffset: resolve([config.offset, 0], context, index),\n\t\t\topacity: resolve([config.opacity, 1], context, index),\n\t\t\torigin: getScaleOrigin(me._el),\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\n\t\t\tpositioner: getPositioner(me._el),\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n\t\t};\n\t},\n\n\tupdate: function(context) {\n\t\tvar me = this;\n\t\tvar model = null;\n\t\tvar rects = null;\n\t\tvar index = me._index;\n\t\tvar config = me._config;\n\t\tvar value, label, lines;\n\n\t\t// We first resolve the display option (separately) to avoid computing\n\t\t// other options in case the label is hidden (i.e. display: false).\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\n\n\t\tif (display) {\n\t\t\tvalue = context.dataset.data[index];\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n\t\t\tif (lines.length) {\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\n\t\t\t\trects = boundingRects(model);\n\t\t\t}\n\t\t}\n\n\t\tme._model = model;\n\t\tme._rects = rects;\n\t},\n\n\tgeometry: function() {\n\t\treturn this._rects ? this._rects.frame : {};\n\t},\n\n\trotation: function() {\n\t\treturn this._model ? this._model.rotation : 0;\n\t},\n\n\tvisible: function() {\n\t\treturn this._model && this._model.opacity;\n\t},\n\n\tmodel: function() {\n\t\treturn this._model;\n\t},\n\n\tdraw: function(chart, center) {\n\t\tvar me = this;\n\t\tvar ctx = chart.ctx;\n\t\tvar model = me._model;\n\t\tvar rects = me._rects;\n\t\tvar area;\n\n\t\tif (!this.visible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\n\t\tif (model.clip) {\n\t\t\tarea = model.area;\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(\n\t\t\t\tarea.left,\n\t\t\t\tarea.top,\n\t\t\t\tarea.right - area.left,\n\t\t\t\tarea.bottom - area.top);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\n\t\tctx.rotate(model.rotation);\n\n\t\tdrawFrame(ctx, rects.frame, model);\n\t\tdrawText(ctx, model.lines, rects.text, model);\n\n\t\tctx.restore();\n\t}\n});\n\nvar helpers$2 = Chart.helpers;\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n\tvar cos = Math.cos(angle);\n\tvar sin = Math.sin(angle);\n\tvar cx = center.x;\n\tvar cy = center.y;\n\n\treturn {\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\n\t};\n}\n\nfunction projected(points, axis) {\n\tvar min = MAX_INTEGER;\n\tvar max = MIN_INTEGER;\n\tvar origin = axis.origin;\n\tvar i, pt, vx, vy, dp;\n\n\tfor (i = 0; i < points.length; ++i) {\n\t\tpt = points[i];\n\t\tvx = pt.x - origin.x;\n\t\tvy = pt.y - origin.y;\n\t\tdp = axis.vx * vx + axis.vy * vy;\n\t\tmin = Math.min(min, dp);\n\t\tmax = Math.max(max, dp);\n\t}\n\n\treturn {\n\t\tmin: min,\n\t\tmax: max\n\t};\n}\n\nfunction toAxis(p0, p1) {\n\tvar vx = p1.x - p0.x;\n\tvar vy = p1.y - p0.y;\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\n\n\treturn {\n\t\tvx: (p1.x - p0.x) / ln,\n\t\tvy: (p1.y - p0.y) / ln,\n\t\torigin: p0,\n\t\tln: ln\n\t};\n}\n\nvar HitBox = function() {\n\tthis._rotation = 0;\n\tthis._rect = {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: 0,\n\t\th: 0\n\t};\n};\n\nhelpers$2.extend(HitBox.prototype, {\n\tcenter: function() {\n\t\tvar r = this._rect;\n\t\treturn {\n\t\t\tx: r.x + r.w / 2,\n\t\t\ty: r.y + r.h / 2\n\t\t};\n\t},\n\n\tupdate: function(center, rect, rotation) {\n\t\tthis._rotation = rotation;\n\t\tthis._rect = {\n\t\t\tx: rect.x + center.x,\n\t\t\ty: rect.y + center.y,\n\t\t\tw: rect.w,\n\t\t\th: rect.h\n\t\t};\n\t},\n\n\tcontains: function(point) {\n\t\tvar me = this;\n\t\tvar margin = 1;\n\t\tvar rect = me._rect;\n\n\t\tpoint = rotated(point, me.center(), -me._rotation);\n\n\t\treturn !(point.x < rect.x - margin\n\t\t\t|| point.y < rect.y - margin\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\n\t},\n\n\t// Separating Axis Theorem\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n\tintersects: function(other) {\n\t\tvar r0 = this._points();\n\t\tvar r1 = other._points();\n\t\tvar axes = [\n\t\t\ttoAxis(r0[0], r0[1]),\n\t\t\ttoAxis(r0[0], r0[3])\n\t\t];\n\t\tvar i, pr0, pr1;\n\n\t\tif (this._rotation !== other._rotation) {\n\t\t\t// Only separate with r1 axis if the rotation is different,\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\n\t\t\taxes.push(\n\t\t\t\ttoAxis(r1[0], r1[1]),\n\t\t\t\ttoAxis(r1[0], r1[3])\n\t\t\t);\n\t\t}\n\n\t\tfor (i = 0; i < axes.length; ++i) {\n\t\t\tpr0 = projected(r0, axes[i]);\n\t\t\tpr1 = projected(r1, axes[i]);\n\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_points: function() {\n\t\tvar me = this;\n\t\tvar rect = me._rect;\n\t\tvar angle = me._rotation;\n\t\tvar center = me.center();\n\n\t\treturn [\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n\t\t];\n\t}\n});\n\nfunction coordinates(view, model, geometry) {\n\tvar point = model.positioner(view, model);\n\tvar vx = point.vx;\n\tvar vy = point.vy;\n\n\tif (!vx && !vy) {\n\t\t// if aligned center, we don't want to offset the center point\n\t\treturn {x: point.x, y: point.y};\n\t}\n\n\tvar w = geometry.w;\n\tvar h = geometry.h;\n\n\t// take in account the label rotation\n\tvar rotation = model.rotation;\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\n\t// w or h respectively (else we would calculate the distance to the\n\t// ellipse inscribed in the bounding rect)\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n\tdx *= vx * vs;\n\tdy *= vy * vs;\n\n\t// finally, include the explicit offset\n\tdx += model.offset * vx;\n\tdy += model.offset * vy;\n\n\treturn {\n\t\tx: point.x + dx,\n\t\ty: point.y + dy\n\t};\n}\n\nfunction collide(labels, collider) {\n\tvar i, j, s0, s1;\n\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\n\t// list have an higher weight/priority and thus should be less impacted\n\t// by the overlapping strategy.\n\n\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\ts0 = labels[i].$layout;\n\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\n\t\t\ts1 = labels[j].$layout;\n\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\n\t\t\t\tcollider(s0, s1);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn labels;\n}\n\nfunction compute$1(labels) {\n\tvar i, ilen, label, state, geometry, center;\n\n\t// Initialize labels for overlap detection\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\tlabel = labels[i];\n\t\tstate = label.$layout;\n\n\t\tif (state._visible) {\n\t\t\tgeometry = label.geometry();\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\n\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t}\n\t}\n\n\t// Auto hide overlapping labels\n\treturn collide(labels, function(s0, s1) {\n\t\tvar h0 = s0._hidable;\n\t\tvar h1 = s1._hidable;\n\n\t\tif ((h0 && h1) || h1) {\n\t\t\ts1._visible = false;\n\t\t} else if (h0) {\n\t\t\ts0._visible = false;\n\t\t}\n\t});\n}\n\nvar layout = {\n\tprepare: function(datasets) {\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, label;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n\t\t\t\tlabel = datasets[i][j];\n\t\t\t\tlabels.push(label);\n\t\t\t\tlabel.$layout = {\n\t\t\t\t\t_box: new HitBox(),\n\t\t\t\t\t_hidable: false,\n\t\t\t\t\t_visible: true,\n\t\t\t\t\t_set: i,\n\t\t\t\t\t_idx: j\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\n\t\t// of top of the ones with a lower index. Lowest z-index labels\n\t\t// are also discarded first when hiding overlapping labels.\n\t\tlabels.sort(function(a, b) {\n\t\t\tvar sa = a.$layout;\n\t\t\tvar sb = b.$layout;\n\n\t\t\treturn sa._idx === sb._idx\n\t\t\t\t? sb._set - sa._set\n\t\t\t\t: sb._idx - sa._idx;\n\t\t});\n\n\t\tthis.update(labels);\n\n\t\treturn labels;\n\t},\n\n\tupdate: function(labels) {\n\t\tvar dirty = false;\n\t\tvar i, ilen, label, model, state;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tmodel = label.model();\n\t\t\tstate = label.$layout;\n\t\t\tstate._hidable = model && model.display === 'auto';\n\t\t\tstate._visible = label.visible();\n\t\t\tdirty |= state._hidable;\n\t\t}\n\n\t\tif (dirty) {\n\t\t\tcompute$1(labels);\n\t\t}\n\t},\n\n\tlookup: function(labels, point) {\n\t\tvar i, state;\n\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\n\t\t// the list have an higher z-index, thus should be picked first.\n\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\t\tstate = labels[i].$layout;\n\n\t\t\tif (state && state._visible && state._box.contains(point)) {\n\t\t\t\treturn labels[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tdraw: function(chart, labels) {\n\t\tvar i, ilen, label, state, geometry, center;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tstate = label.$layout;\n\n\t\t\tif (state._visible) {\n\t\t\t\tgeometry = label.geometry();\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t\t\tlabel.draw(chart, center);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar helpers$3 = Chart.helpers;\n\nvar formatter = function(value) {\n\tif (helpers$3.isNullOrUndef(value)) {\n\t\treturn null;\n\t}\n\n\tvar label = value;\n\tvar keys, klen, k;\n\tif (helpers$3.isObject(value)) {\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\n\t\t\tlabel = value.label;\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\n\t\t\tlabel = value.r;\n\t\t} else {\n\t\t\tlabel = '';\n\t\t\tkeys = Object.keys(value);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n\talign: 'center',\n\tanchor: 'center',\n\tbackgroundColor: null,\n\tborderColor: null,\n\tborderRadius: 0,\n\tborderWidth: 0,\n\tclamp: false,\n\tclip: false,\n\tcolor: undefined,\n\tdisplay: true,\n\tfont: {\n\t\tfamily: undefined,\n\t\tlineHeight: 1.2,\n\t\tsize: undefined,\n\t\tstyle: undefined,\n\t\tweight: null\n\t},\n\tformatter: formatter,\n\tlabels: undefined,\n\tlisteners: {},\n\toffset: 4,\n\topacity: 1,\n\tpadding: {\n\t\ttop: 4,\n\t\tright: 4,\n\t\tbottom: 4,\n\t\tleft: 4\n\t},\n\trotation: 0,\n\ttextAlign: 'start',\n\ttextStrokeColor: undefined,\n\ttextStrokeWidth: 0,\n\ttextShadowBlur: 0,\n\ttextShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar helpers$4 = Chart.helpers;\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n\tvar override = dataset.datalabels;\n\tvar listeners = {};\n\tvar configs = [];\n\tvar labels, keys;\n\n\tif (override === false) {\n\t\treturn null;\n\t}\n\tif (override === true) {\n\t\toverride = {};\n\t}\n\n\toptions = helpers$4.merge({}, [options, override]);\n\tlabels = options.labels || {};\n\tkeys = Object.keys(labels);\n\tdelete options.labels;\n\n\tif (keys.length) {\n\t\tkeys.forEach(function(key) {\n\t\t\tif (labels[key]) {\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\n\t\t\t\t\toptions,\n\t\t\t\t\tlabels[key],\n\t\t\t\t\t{_key: key}\n\t\t\t\t]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Default label if no \"named\" label defined.\n\t\tconfigs.push(options);\n\t}\n\n\t// listeners: {: {: }}\n\tlisteners = configs.reduce(function(target, config) {\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\n\t\t\ttarget[event] = target[event] || {};\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\n\t\t});\n\n\t\tdelete config.listeners;\n\t\treturn target;\n\t}, {});\n\n\treturn {\n\t\tlabels: configs,\n\t\tlisteners: listeners\n\t};\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n\tif (!listeners) {\n\t\treturn;\n\t}\n\n\tvar context = label.$context;\n\tvar groups = label.$groups;\n\tvar callback;\n\n\tif (!listeners[groups._set]) {\n\t\treturn;\n\t}\n\n\tcallback = listeners[groups._set][groups._key];\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (helpers$4.callback(callback, [context]) === true) {\n\t\t// Users are allowed to tweak the given context by injecting values that can be\n\t\t// used in scriptable options to display labels differently based on the current\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\n\t\t// the output context and schedule a new chart render by setting it dirty.\n\t\tchart[EXPANDO_KEY]._dirty = true;\n\t\tlabel.update(context);\n\t}\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n\tvar enter, leave;\n\n\tif (!previous && !label) {\n\t\treturn;\n\t}\n\n\tif (!previous) {\n\t\tenter = true;\n\t} else if (!label) {\n\t\tleave = true;\n\t} else if (previous !== label) {\n\t\tleave = enter = true;\n\t}\n\n\tif (leave) {\n\t\tdispatchEvent(chart, listeners.leave, previous);\n\t}\n\tif (enter) {\n\t\tdispatchEvent(chart, listeners.enter, label);\n\t}\n}\n\nfunction handleMoveEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar listeners = expando._listeners;\n\tvar previous, label;\n\n\tif (!listeners.enter && !listeners.leave) {\n\t\treturn;\n\t}\n\n\tif (event.type === 'mousemove') {\n\t\tlabel = layout.lookup(expando._labels, event);\n\t} else if (event.type !== 'mouseout') {\n\t\treturn;\n\t}\n\n\tprevious = expando._hovered;\n\texpando._hovered = label;\n\tdispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar handlers = expando._listeners.click;\n\tvar label = handlers && layout.lookup(expando._labels, event);\n\tif (label) {\n\t\tdispatchEvent(chart, handlers, label);\n\t}\n}\n\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\nfunction invalidate(chart) {\n\tif (chart.animating) {\n\t\treturn;\n\t}\n\n\t// `chart.animating` can be `false` even if there is animation in progress,\n\t// so let's iterate all animations to find if there is one for the `chart`.\n\tvar animations = Chart.animationService.animations;\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\tif (animations[i].chart === chart) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\n\t// animation is created so the controller can stop it before any transition.\n\tchart.render({duration: 1, lazy: true});\n}\n\nChart.defaults.global.plugins.datalabels = defaults;\n\nvar plugin = {\n\tid: 'datalabels',\n\n\tbeforeInit: function(chart) {\n\t\tchart[EXPANDO_KEY] = {\n\t\t\t_actives: []\n\t\t};\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\texpando._listened = false;\n\t\texpando._listeners = {}; // {: {: {: }}}\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\n\t\texpando._labels = []; // layouted labels: Label[]\n\t},\n\n\tafterDatasetUpdate: function(chart, args, options) {\n\t\tvar datasetIndex = args.index;\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar labels = expando._datasets[datasetIndex] = [];\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\n\t\tvar dataset = chart.data.datasets[datasetIndex];\n\t\tvar config = configure(dataset, options);\n\t\tvar elements = args.meta.data || [];\n\t\tvar ctx = chart.ctx;\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\n\n\t\tctx.save();\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tel[EXPANDO_KEY] = [];\n\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n\t\t\t\t\tcfg = config.labels[j];\n\t\t\t\t\tkey = cfg._key;\n\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\n\t\t\t\t\tlabel.$groups = {\n\t\t\t\t\t\t_set: datasetIndex,\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\n\t\t\t\t\t};\n\t\t\t\t\tlabel.$context = {\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tdataIndex: i,\n\t\t\t\t\t\tdataset: dataset,\n\t\t\t\t\t\tdatasetIndex: datasetIndex\n\t\t\t\t\t};\n\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\n\t\t\t\t\tlabels.push(label);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.restore();\n\n\t\t// Store listeners at the chart level and per event type to optimize\n\t\t// cases where no listeners are registered for a specific event.\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\n\t\t\tmerger: function(event, target, source) {\n\t\t\t\ttarget[event] = target[event] || {};\n\t\t\t\ttarget[event][args.index] = source[event];\n\t\t\t\texpando._listened = true;\n\t\t\t}\n\t\t});\n\t},\n\n\tafterUpdate: function(chart, options) {\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\n\t\t\tchart[EXPANDO_KEY]._datasets,\n\t\t\toptions);\n\t},\n\n\t// Draw labels on top of all dataset elements\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n\tafterDatasetsDraw: function(chart) {\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\n\t},\n\n\tbeforeEvent: function(chart, event) {\n\t\t// If there is no listener registered for this chart, `listened` will be false,\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\n\t\t// computation for users who don't implement label interactions.\n\t\tif (chart[EXPANDO_KEY]._listened) {\n\t\t\tswitch (event.type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseout':\n\t\t\t\thandleMoveEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\thandleClickEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t},\n\n\tafterEvent: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar previous = expando._actives;\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\n\t\tvar updates = utils.arrayDiff(previous, actives);\n\t\tvar i, ilen, j, jlen, update, label, labels;\n\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\n\t\t\tupdate = updates[i];\n\t\t\tif (update[1]) {\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\tlabel = labels[j];\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expando._dirty || updates.length) {\n\t\t\tlayout.update(expando._labels);\n\t\t\tinvalidate(chart);\n\t\t}\n\n\t\tdelete expando._dirty;\n\t}\n};\n\n// TODO Remove at version 1, we shouldn't automatically register plugins.\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\nChart.plugins.unregister(plugin);\nreturn plugin;\n\n}));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*\n Enhanced Bootstrap Modals\n https://mdbootstrap.com\n office@mdbootstrap.com\n*/\n\n(function($){\n $('body').on('shown.bs.modal', '.modal', function() {\n if(!$('.modal-backdrop').length) {\n\n $modal_dialog = $(this).children('.modal-dialog')\n\n if($modal_dialog.hasClass('modal-side')) {\n $(this).addClass('modal-scrolling');\n $('body').addClass('scrollable');\n }\n\n if($modal_dialog.hasClass('modal-frame')) {\n $(this).addClass('modal-content-clickable');\n $('body').addClass('scrollable');\n }\n }\n });\n $('body').on('hidden.bs.modal', '.modal', function() {\n $('body').removeClass('scrollable');\n });\n})(jQuery);\n","/*\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Uses the built in easing capabilities added In jQuery 1.1\n * to offer multiple easing options\n *\n * TERMS OF USE - jQuery Easing\n *\n * Open source under the BSD License.\n *\n * Copyright © 2008 George McGinley Smith\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n*/\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\njQuery.easing['jswing'] = jQuery.easing['swing'];\n\njQuery.extend( jQuery.easing,\n{\n def: 'easeOutQuad',\n swing: function (x, t, b, c, d) {\n //alert(jQuery.easing.default);\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\n },\n easeInQuad: function (x, t, b, c, d) {\n return c*(t/=d)*t + b;\n },\n easeOutQuad: function (x, t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n },\n easeInOutQuad: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t + b;\n return -c/2 * ((--t)*(t-2) - 1) + b;\n },\n easeInCubic: function (x, t, b, c, d) {\n return c*(t/=d)*t*t + b;\n },\n easeOutCubic: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t + 1) + b;\n },\n easeInOutCubic: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\n return c/2*((t-=2)*t*t + 2) + b;\n },\n easeInQuart: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t + b;\n },\n easeOutQuart: function (x, t, b, c, d) {\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\n },\n easeInOutQuart: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\n },\n easeInQuint: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t*t + b;\n },\n easeOutQuint: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\n },\n easeInOutQuint: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n return c/2*((t-=2)*t*t*t*t + 2) + b;\n },\n easeInSine: function (x, t, b, c, d) {\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n },\n easeOutSine: function (x, t, b, c, d) {\n return c * Math.sin(t/d * (Math.PI/2)) + b;\n },\n easeInOutSine: function (x, t, b, c, d) {\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n },\n easeInExpo: function (x, t, b, c, d) {\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function (x, t, b, c, d) {\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function (x, t, b, c, d) {\n if (t==0) return b;\n if (t==d) return b+c;\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n },\n easeInCirc: function (x, t, b, c, d) {\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n },\n easeOutCirc: function (x, t, b, c, d) {\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n },\n easeInOutCirc: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n },\n easeInElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n },\n easeOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n },\n easeInOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n },\n easeInBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*(t/=d)*t*((s+1)*t - s) + b;\n },\n easeOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n },\n easeInOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n },\n easeInBounce: function (x, t, b, c, d) {\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n },\n easeOutBounce: function (x, t, b, c, d) {\n if ((t/=d) < (1/2.75)) {\n return c*(7.5625*t*t) + b;\n } else if (t < (2/2.75)) {\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n } else if (t < (2.5/2.75)) {\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n } else {\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n }\n },\n easeInOutBounce: function (x, t, b, c, d) {\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n }\n});\n\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n *\n * Open source under the BSD License.\n *\n * Copyright © 2001 Robert Penner\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n\n(function (window, factory) {\n 'use strict';\n\n // AMD. Register as an anonymous module. Wrap in function so we have access\n // to root via `this`.\n if (typeof define === 'function' && define.amd) {\n define([], function () {\n window.Waves = factory.call(window);\n return window.Waves;\n });\n }\n\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // environments that support module.exports, like Node.\n else if (typeof exports === 'object') {\n module.exports = factory.call(window);\n }\n\n // Browser globals.\n else {\n window.Waves = factory.call(window);\n }\n})(typeof window === 'object' ? window : this, function () {\n 'use strict';\n\n var Waves = Waves || {};\n var $$ = document.querySelectorAll.bind(document);\n var toString = Object.prototype.toString;\n var isTouchAvailable = 'ontouchstart' in window;\n\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function isObject(value) {\n var type = typeof value;\n return type === 'function' || type === 'object' && !!value;\n }\n\n function isDOMNode(obj) {\n return isObject(obj) && obj.nodeType > 0;\n }\n\n function getWavesElements(nodes) {\n var stringRepr = toString.call(nodes);\n\n if (stringRepr === '[object String]') {\n return $$(nodes);\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n return nodes;\n } else if (isDOMNode(nodes)) {\n return [nodes];\n }\n\n return [];\n }\n\n function offset(elem) {\n var docElem, win,\n box = {\n top: 0,\n left: 0\n },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function convertStyle(styleObj) {\n var style = '';\n\n for (var prop in styleObj) {\n if (styleObj.hasOwnProperty(prop)) {\n style += (prop + ':' + styleObj[prop] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect duration\n duration: 750,\n\n // Effect delay (check for scroll before showing effect)\n delay: 200,\n\n show: function (e, element, velocity) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n element = element || this;\n\n // Create ripple\n var ripple = document.createElement('div');\n ripple.className = 'waves-ripple waves-rippling';\n element.appendChild(ripple);\n\n // Get click coordinate and element width\n var pos = offset(element);\n var relativeY = 0;\n var relativeX = 0;\n // Support for touch devices\n if ('touches' in e && e.touches.length) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n //Normal case\n else {\n relativeY = (e.pageY - pos.top);\n relativeX = (e.pageX - pos.left);\n }\n // Support for synthetic events\n relativeX = relativeX >= 0 ? relativeX : 0;\n relativeY = relativeY >= 0 ? relativeY : 0;\n\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n var translate = 'translate(0,0)';\n\n if (velocity) {\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-translate', translate);\n\n // Set ripple position\n var rippleStyle = {\n top: relativeY + 'px',\n left: relativeX + 'px'\n };\n\n ripple.classList.add('waves-notransition');\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.classList.remove('waves-notransition');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\n rippleStyle['-o-transform'] = scale + ' ' + translate;\n rippleStyle.transform = scale + ' ' + translate;\n rippleStyle.opacity = '1';\n\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\n rippleStyle['-o-transition-duration'] = duration + 'ms';\n rippleStyle['transition-duration'] = duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function (e, element) {\n element = element || this;\n\n var ripples = element.getElementsByClassName('waves-rippling');\n\n for (var i = 0, len = ripples.length; i < len; i++) {\n removeRipple(e, element, ripples[i]);\n }\n\n if (isTouchAvailable) {\n element.removeEventListener('touchend', Effect.hide);\n element.removeEventListener('touchcancel', Effect.hide);\n }\n\n element.removeEventListener('mouseup', Effect.hide);\n element.removeEventListener('mouseleave', Effect.hide);\n }\n };\n\n /**\n * Collection of wrapper for HTML element that only have single tag\n * like and \n */\n var TagWrapper = {\n\n // Wrap tag so it can perform the effect\n input: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('span');\n wrapper.className = 'waves-input-wrapper';\n // element.className = 'waves-button-input';\n\n // Put element as child\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n },\n\n // Wrap tag so it can perform the effect\n img: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element as child\n var wrapper = document.createElement('i');\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n }\n };\n\n /**\n * Hide the effect and remove the ripple. Must be\n * a separate function to pass the JSLint...\n */\n function removeRipple(e, el, ripple) {\n\n // Check if the ripple still exist\n if (!ripple) {\n return;\n }\n\n ripple.classList.remove('waves-rippling');\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n var translate = ripple.getAttribute('data-translate');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 350 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n if (e.type === 'mousemove') {\n delay = 150;\n }\n\n // Fade out ripple after delay\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n setTimeout(function () {\n\n var style = {\n top: relativeY + 'px',\n left: relativeX + 'px',\n opacity: '0',\n\n // Duration\n '-webkit-transition-duration': duration + 'ms',\n '-moz-transition-duration': duration + 'ms',\n '-o-transition-duration': duration + 'ms',\n 'transition-duration': duration + 'ms',\n '-webkit-transform': scale + ' ' + translate,\n '-moz-transform': scale + ' ' + translate,\n '-ms-transform': scale + ' ' + translate,\n '-o-transform': scale + ' ' + translate,\n 'transform': scale + ' ' + translate\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function () {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, duration);\n\n }, delay);\n }\n\n\n /**\n * Disable mousedown event for 500ms during and after touch\n */\n var TouchHandler = {\n\n /* uses an integer rather than bool so there's no issues with\n * needing to clear timeouts if another touch event occurred\n * within the 500ms. Cannot mouseup between touchstart and\n * touchend, nor in the 500ms after touchend. */\n touches: 0,\n\n allowEvent: function (e) {\n\n var allow = true;\n\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n allow = false;\n }\n\n return allow;\n },\n registerEvent: function (e) {\n var eType = e.type;\n\n if (eType === 'touchstart') {\n\n TouchHandler.touches += 1; // push\n\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n setTimeout(function () {\n if (TouchHandler.touches) {\n TouchHandler.touches -= 1; // pop after 500ms\n }\n }, 500);\n\n }\n }\n };\n\n\n /**\n * Delegated click handler for .waves-effect element.\n * returns null when .waves-effect element not in \"click tree\"\n */\n function getWavesEffectElement(e) {\n\n if (TouchHandler.allowEvent(e) === false) {\n return null;\n }\n\n var element = null;\n var target = e.target || e.srcElement;\n\n while (target.parentElement) {\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n element = target;\n break;\n }\n target = target.parentElement;\n }\n\n return element;\n }\n\n /**\n * Bubble the click and show effect if .waves-effect elem was found\n */\n function showEffect(e) {\n\n // Disable effect if element has \"disabled\" property on it\n // In some cases, the event is not triggered by the current element\n // if (e.target.getAttribute('disabled') !== null) {\n // return;\n // }\n\n var element = getWavesEffectElement(e);\n\n if (element !== null) {\n\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n return;\n }\n\n TouchHandler.registerEvent(e);\n\n if (e.type === 'touchstart' && Effect.delay) {\n\n var hidden = false;\n\n var timer = setTimeout(function () {\n timer = null;\n Effect.show(e, element);\n }, Effect.delay);\n\n var hideEffect = function (hideEvent) {\n\n // if touch hasn't moved, and effect not yet started: start effect now\n if (timer) {\n clearTimeout(timer);\n timer = null;\n Effect.show(e, element);\n }\n if (!hidden) {\n hidden = true;\n Effect.hide(hideEvent, element);\n }\n\n removeListeners();\n };\n\n var touchMove = function (moveEvent) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n hideEffect(moveEvent);\n\n removeListeners();\n };\n\n element.addEventListener('touchmove', touchMove, false);\n element.addEventListener('touchend', hideEffect, false);\n element.addEventListener('touchcancel', hideEffect, false);\n\n var removeListeners = function () {\n element.removeEventListener('touchmove', touchMove);\n element.removeEventListener('touchend', hideEffect);\n element.removeEventListener('touchcancel', hideEffect);\n };\n } else {\n\n Effect.show(e, element);\n\n if (isTouchAvailable) {\n element.addEventListener('touchend', Effect.hide, false);\n element.addEventListener('touchcancel', Effect.hide, false);\n }\n\n element.addEventListener('mouseup', Effect.hide, false);\n element.addEventListener('mouseleave', Effect.hide, false);\n }\n }\n }\n\n Waves.init = function (options) {\n var body = document.body;\n\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n if ('delay' in options) {\n Effect.delay = options.delay;\n }\n\n if (isTouchAvailable) {\n body.addEventListener('touchstart', showEffect, false);\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\n }\n\n body.addEventListener('mousedown', showEffect, false);\n };\n\n\n /**\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\n * or skimming effect should be applied to the elements.\n */\n Waves.attach = function (elements, classes) {\n\n elements = getWavesElements(elements);\n\n if (toString.call(classes) === '[object Array]') {\n classes = classes.join(' ');\n }\n\n classes = classes ? ' ' + classes : '';\n\n var element, tagName;\n\n for (var i = 0, len = elements.length; i < len; i++) {\n\n element = elements[i];\n tagName = element.tagName.toLowerCase();\n\n if (['input', 'img'].indexOf(tagName) !== -1) {\n TagWrapper[tagName](element);\n element = element.parentElement;\n }\n\n if (element.className.indexOf('waves-effect') === -1) {\n element.className += ' waves-effect' + classes;\n }\n }\n };\n\n\n /**\n * Cause a ripple to appear in an element via code.\n */\n Waves.ripple = function (elements, options) {\n elements = getWavesElements(elements);\n var elementsLen = elements.length;\n\n options = options || {};\n options.wait = options.wait || 0;\n options.position = options.position || null; // default = centre of element\n\n\n if (elementsLen) {\n var element, pos, off, centre = {},\n i = 0;\n var mousedown = {\n type: 'mousedown',\n button: 1\n };\n var hideRipple = function (mouseup, element) {\n return function () {\n Effect.hide(mouseup, element);\n };\n };\n\n for (; i < elementsLen; i++) {\n element = elements[i];\n pos = options.position || {\n x: element.clientWidth / 2,\n y: element.clientHeight / 2\n };\n\n off = offset(element);\n centre.x = off.left + pos.x;\n centre.y = off.top + pos.y;\n\n mousedown.pageX = centre.x;\n mousedown.pageY = centre.y;\n\n Effect.show(mousedown, element);\n\n if (options.wait >= 0 && options.wait !== null) {\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n setTimeout(hideRipple(mouseup, element), options.wait);\n }\n }\n }\n };\n\n /**\n * Remove all ripples from an element.\n */\n Waves.calm = function (elements) {\n elements = getWavesElements(elements);\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n Effect.hide(mouseup, elements[i]);\n }\n };\n\n /**\n * Deprecated API fallback\n */\n Waves.displayEffect = function (options) {\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n Waves.init(options);\n };\n\n return Waves;\n});\n$(document).ready(function () {\n //Initialization\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\n Waves.attach('.btn-flat');\n Waves.attach('.chip');\n Waves.attach('.view a .mask', ['waves-light']);\n Waves.attach('.waves-light', ['waves-light']);\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\n Waves.attach('.pager li a', ['waves-light']);\n Waves.attach('.pagination .page-item .page-link');\n Waves.init();\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/no_defer.js b/assets/js/no_defer.js new file mode 100644 index 0000000..574f2f5 --- /dev/null +++ b/assets/js/no_defer.js @@ -0,0 +1,22 @@ +// add bootstrap classes to tables +$(document).ready(function() { + $('table').each(function() { + if (document.documentElement.getAttribute("data-theme") == "dark") { + $(this).addClass('table-dark'); + } else { + $(this).removeClass('table-dark'); + } + + // only select tables that are not inside an element with "news" (about page) or "card" (cv page) class + if($(this).parents('[class*="news"]').length==0 && + $(this).parents('[class*="card"]').length==0 && + $(this).parents('code').length == 0) { + // make table use bootstrap-table + $(this).attr('data-toggle','table'); + // add some classes to make the table look better + // $(this).addClass('table-sm'); + $(this).addClass('table-hover'); + } + }) +}); + diff --git a/assets/js/theme.js b/assets/js/theme.js new file mode 100644 index 0000000..9a630e9 --- /dev/null +++ b/assets/js/theme.js @@ -0,0 +1,101 @@ +// Has to be in the head tag, otherwise a flicker effect will occur. + +let toggleTheme = (theme) => { + if (theme == "dark") { + setTheme("light"); + } else { + setTheme("dark"); + } +}; + +let setTheme = (theme) => { + transTheme(); + setHighlight(theme); + setGiscusTheme(theme); + + if (theme) { + document.documentElement.setAttribute("data-theme", theme); + + // Add class to tables. + let tables = document.getElementsByTagName("table"); + for (let i = 0; i < tables.length; i++) { + if (theme == "dark") { + tables[i].classList.add("table-dark"); + } else { + tables[i].classList.remove("table-dark"); + } + } + + // Set jupyter notebooks themes. + let jupyterNotebooks = document.getElementsByClassName("jupyter-notebook-iframe-container"); + for (let i = 0; i < jupyterNotebooks.length; i++) { + let bodyElement = jupyterNotebooks[i].getElementsByTagName("iframe")[0].contentWindow.document.body; + if (theme == "dark") { + bodyElement.setAttribute("data-jp-theme-light", "false"); + bodyElement.setAttribute("data-jp-theme-name", "JupyterLab Dark"); + } else { + bodyElement.setAttribute("data-jp-theme-light", "true"); + bodyElement.setAttribute("data-jp-theme-name", "JupyterLab Light"); + } + } + + } else { + document.documentElement.removeAttribute("data-theme"); + } + + localStorage.setItem("theme", theme); + + // Updates the background of medium-zoom overlay. + if (typeof medium_zoom !== "undefined") { + medium_zoom.update({ + background: + getComputedStyle(document.documentElement).getPropertyValue( + "--global-bg-color" + ) + "ee", // + 'ee' for trasparency. + }); + } +}; + +let setHighlight = (theme) => { + if (theme == "dark") { + document.getElementById("highlight_theme_light").media = "none"; + document.getElementById("highlight_theme_dark").media = ""; + } else { + document.getElementById("highlight_theme_dark").media = "none"; + document.getElementById("highlight_theme_light").media = ""; + } +}; + +let setGiscusTheme = (theme) => { + function sendMessage(message) { + const iframe = document.querySelector("iframe.giscus-frame"); + if (!iframe) return; + iframe.contentWindow.postMessage({ giscus: message }, "https://giscus.app"); + } + + sendMessage({ + setConfig: { + theme: theme, + }, + }); +}; + +let transTheme = () => { + document.documentElement.classList.add("transition"); + window.setTimeout(() => { + document.documentElement.classList.remove("transition"); + }, 500); +}; + +let initTheme = (theme) => { + if (theme == null || theme == "null") { + const userPref = window.matchMedia; + if (userPref && userPref("(prefers-color-scheme: dark)").matches) { + theme = "dark"; + } + } + + setTheme(theme); +}; + +initTheme(localStorage.getItem("theme")); diff --git a/assets/js/zoom.js b/assets/js/zoom.js new file mode 100644 index 0000000..8f81bfa --- /dev/null +++ b/assets/js/zoom.js @@ -0,0 +1,7 @@ +// Initialize medium zoom. +$(document).ready(function() { + medium_zoom = mediumZoom('[data-zoomable]', { + background: getComputedStyle(document.documentElement) + .getPropertyValue('--global-bg-color') + 'ee', // + 'ee' for trasparency. + }) +}); diff --git a/assets/json/resume.json b/assets/json/resume.json new file mode 100644 index 0000000..099317c --- /dev/null +++ b/assets/json/resume.json @@ -0,0 +1,197 @@ +{ + "basics": { + "name": "Albert Einstein", + "label": "Scientist", + "image": "", + "email": "albert@einstein.de", + "phone": "(912) 123-4567", + "url": "https://alshedivat.github.io/al-folio/", + "summary": "A German-born theoretical physicist, widely ranked among the greatest and most influential scientists of all time", + "location": { + "address": "2712 Broadway St", + "postalCode": "CA 94115", + "city": "San Francisco", + "countryCode": "US", + "region": "California" + }, + "profiles": [ + { + "network": "Twitter", + "username": "AlbertEinstein", + "url": "https://twitter.com/AlbertEinstein" + } + ] + }, + "work": [ + { + "name": "Institute for Advanced Study, Princeton University", + "position": "Professor of Theoretical Physics", + "url": "https://example.com", + "startDate": "1933-01-01", + "endDate": "1955-01-01", + "summary": "Teaching at Palmer Physical Laboratory (now 302 Frist Campus Center). While not a professor at Princeton, I associated with the physics professors and continued to give lectures on campus.", + "highlights": [ + "Relativity" + ] + } + ], + "volunteer": [ + { + "organization": "People's Climate March", + "position": "Lead Organizer", + "url": "https://example.com", + "startDate": "2014-04-01", + "endDate": "2015-07-01", + "summary": "Lead organizer for the New York City branch of the People's Climate March, the largest climate march in history.", + "highlights": [ + "Awarded 'Climate Hero' award by Greenpeace for my efforts organizing the march.","Men of the year 2014 by Time magazine" + ] + }], + "education": [ + { + "institution": "University of Zurich, Zurich, Switzerland", + "location": "Zurich, Switzerland", + "url": "https://www.uzh.ch/", + "area": "Software Development", + "studyType": "PhD", + "startDate": "1905-01-01", + "endDate": "1905-01-01", + "score": "10", + "courses": [ + "Theory of Relativity" + ] + } + ], + "awards": [ + { + "title": "Nobel Prize in Physics", + "date": "1921-11-01", + "awarder": "Royal Swedish Academy of Sciences", + "url": "https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/", + "summary": "The Nobel Prizes are five separate prizes that, according to Alfred Nobel's will of 1895, are awarded to 'those who, during the preceding year, have conferred the greatest benefit to humankind.'" + } + ], + "certificates": [ + { + "name": "Machine Learning", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-location-dot" + }, + { + "name": "Quantum Computing", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-tag" + }, + { + "name": "Quantum Information", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-envelope" + }, + { + "name": "Quantum Cryptography", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-hashtag" + }, + { + "name": "Quantum Communication", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-calendar" + }, + { + "name": "Quantum Teleportation", + "date": "2018-01-01", + "issuer": "Stanford University", + "url": "https://example.com", + "icon": "fa-solid fa-clipboard-check" + } + ], + "publications": [ + { + "name": "Zur Elektrody/namik bewegter Körper", + "publisher": "Annalen der Physik", + "releaseDate": "1905-06-30", + "url": "https://en.wikisource.org/wiki/Translation:On_the_Electrodynamics_of_Moving_Bodies", + "summary": "It concerned an interpretation of the Michelson–Morley experiment and the properties of light and time. Special relativity incorporates the principle that the speed of light is the same for all inertial observers regardless of the state of motion of the source." + }, + { + "name": "Über einen die Erzeugung und Verwandlung des Lichtes betreffenden heuristischen Gesichtspunkt", + "publisher": "Annalen der Physik", + "releaseDate": "1905-03-18", + "url": "https://de.wikisource.org/wiki/Über_einen_die_Erzeugung_und_Verwandlung_des_Lichtes_betreffenden_heuristischen_Gesichtspunkt", + "summary": "In the second paper, he applied the quantum theory to light to explain the photoelectric effect. In particular, he used the idea of light quanta (photons) to explain experimental results, but stressed the importance of the experimental results. The importance of his work on the photoelectric effect earned him the Nobel Prize in Physics in 1921." + }, + { + "name": "Die Grundlage der allgemeinen Relativitätstheorie", + "publisher": "Annalen der Physik", + "releaseDate": "1916-03-20", + "url": "https://de.wikisource.org/wiki/Die_Grundlage_der_allgemeinen_Relativitätstheorie", + "summary": "The publication of the theory of general relativity made him internationally famous. He was professor of physics at the universities of Zurich (1909–1911) and Prague (1911–1912), before he returned to ETH Zurich (1912–1914)." + } + ], + "skills": [ + { + "name": "Physics", + "level": "Master", + "icon": "fa-solid fa-hashtag", + "keywords": [ + "Quantum Mechanics","Quantum Computing","Quantum Information","Quantum Cryptography","Quantum Communication","Quantum Teleportation" + ] + } + ], + "languages": [ + { + "language": "German", + "fluency": "Native speaker" + "icon":"" + }, + { + "language": "English", + "fluency": "Fluent" + "icon":"" + } + ], + "interests": [ + { + "name": "Physics", + "icon": "fa-solid fa-tag", + "keywords": [ + "Quantum Mechanics","Quantum Computing","Quantum Information","Quantum Cryptography","Quantum Communication","Quantum Teleportation" + ] + } + ], + "references": [ + { + "name": "Professor John Doe", + "icon": "fa-solid fa-laptop", + "reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D" + }, + { + "name": "Professor John Doe", + "icon": "fa-solid fa-thumbtack", + "reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D" + } + ], + "projects": [ + { + "name": "Quantum Computing", + "summary": "Quantum computing is the use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. Computers that perform quantum computations are known as quantum computers.", + "highlights": [ + "Quantum Teleportation", + "Quantum Cryptography" + ], + "startDate": "2018-01-01", + "endDate": "2018-01-01", + "url": "https://example.com" + } + ] +} diff --git a/assets/json/table_data.json b/assets/json/table_data.json new file mode 100644 index 0000000..29369e8 --- /dev/null +++ b/assets/json/table_data.json @@ -0,0 +1,128 @@ +[ + { + "id": 0, + "name": "Item 0", + "price": "$0", + "amount": 3 + }, + { + "id": 1, + "name": "Item 1", + "price": "$1", + "amount": 4 + }, + { + "id": 2, + "name": "Item 2", + "price": "$2", + "amount": 8 + }, + { + "id": 3, + "name": "Item 3", + "price": "$3", + "amount": 2 + }, + { + "id": 4, + "name": "Item 4", + "price": "$4", + "amount": 90 + }, + { + "id": 5, + "name": "Item 5", + "price": "$5", + "amount": 2 + }, + { + "id": 6, + "name": "Item 6", + "price": "$6", + "amount": 3 + }, + { + "id": 7, + "name": "Item 7", + "price": "$7", + "amount": 7 + }, + { + "id": 8, + "name": "Item 8", + "price": "$8", + "amount": 39 + }, + { + "id": 9, + "name": "Item 9", + "price": "$9", + "amount": 78 + }, + { + "id": 10, + "name": "Item 10", + "price": "$10", + "amount": 30 + }, + { + "id": 11, + "name": "Item 11", + "price": "$11", + "amount": 32 + }, + { + "id": 12, + "name": "Item 12", + "price": "$12", + "amount": 12 + }, + { + "id": 13, + "name": "Item 13", + "price": "$13", + "amount": 76 + }, + { + "id": 14, + "name": "Item 14", + "price": "$14", + "amount": 10 + }, + { + "id": 15, + "name": "Item 15", + "price": "$15", + "amount": 9 + }, + { + "id": 16, + "name": "Item 16", + "price": "$16", + "amount": 8 + }, + { + "id": 17, + "name": "Item 17", + "price": "$17", + "amount": 1 + }, + { + "id": 18, + "name": "Item 18", + "price": "$18", + "amount": 99 + }, + { + "id": 19, + "name": "Item 19", + "price": "$19", + "amount": 100 + }, + { + "id": 20, + "name": "Item 20", + "price": "$20", + "amount": 109 + } +] \ No newline at end of file diff --git a/assets/jupyter/blog.ipynb b/assets/jupyter/blog.ipynb new file mode 100755 index 0000000..bc870dc --- /dev/null +++ b/assets/jupyter/blog.ipynb @@ -0,0 +1,48 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "sys.version_info(major=3, minor=6, micro=2, releaselevel='final', serial=0)" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import sys\n", + "sys.version_info" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/assets/pdf/example_pdf.pdf b/assets/pdf/example_pdf.pdf new file mode 100644 index 0000000..b1f80db Binary files /dev/null and b/assets/pdf/example_pdf.pdf differ diff --git a/assets/plotly/demo.html b/assets/plotly/demo.html new file mode 100644 index 0000000..b78329e --- /dev/null +++ b/assets/plotly/demo.html @@ -0,0 +1,71 @@ + + + +
      +
      + + \ No newline at end of file diff --git a/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 b/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 new file mode 100644 index 0000000..c4c55d7 Binary files /dev/null and b/assets/video/pexels-engin-akyurt-6069112-960x540-30fps.mp4 differ diff --git a/assets/webfonts/fa-brands-400.ttf b/assets/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..30f55b7 Binary files /dev/null and b/assets/webfonts/fa-brands-400.ttf differ diff --git a/assets/webfonts/fa-brands-400.woff2 b/assets/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..8a480d9 Binary files /dev/null and b/assets/webfonts/fa-brands-400.woff2 differ diff --git a/assets/webfonts/fa-regular-400.ttf b/assets/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..c79589d Binary files /dev/null and b/assets/webfonts/fa-regular-400.ttf differ diff --git a/assets/webfonts/fa-regular-400.woff2 b/assets/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..059a94e Binary files /dev/null and b/assets/webfonts/fa-regular-400.woff2 differ diff --git a/assets/webfonts/fa-solid-900.ttf b/assets/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..e479fb2 Binary files /dev/null and b/assets/webfonts/fa-solid-900.ttf differ diff --git a/assets/webfonts/fa-solid-900.woff2 b/assets/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..88b0367 Binary files /dev/null and b/assets/webfonts/fa-solid-900.woff2 differ diff --git a/assets/webfonts/fa-v4compatibility.ttf b/assets/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000..ba6cb25 Binary files /dev/null and b/assets/webfonts/fa-v4compatibility.ttf differ diff --git a/assets/webfonts/fa-v4compatibility.woff2 b/assets/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 0000000..23b1c47 Binary files /dev/null and b/assets/webfonts/fa-v4compatibility.woff2 differ diff --git a/bin/cibuild b/bin/cibuild new file mode 100755 index 0000000..14cfabe --- /dev/null +++ b/bin/cibuild @@ -0,0 +1 @@ +bundle exec jekyll build --lsi diff --git a/bin/deploy b/bin/deploy new file mode 100755 index 0000000..0bf8ed5 --- /dev/null +++ b/bin/deploy @@ -0,0 +1,119 @@ +#!/usr/bin/env bash + +# Run this script to deploy the app to Github Pages + +# Parse cmd arguments + +SRC_BRANCH="master" +DEPLOY_BRANCH="gh-pages" + +USAGE_MSG="usage: deploy [-h|--help] [-u|--user] [-s|--src SRC_BRANCH] [-d|--deploy DEPLOY_BRANCH] [--verbose] [--no-push]" + +while [[ $# > 0 ]]; do + key="$1" + + case $key in + -h|--help) + echo $USAGE_MSG + exit 0 + ;; + -u|--user) + ;; + -s|--src) + SRC_BRANCH="$2" + shift + ;; + -d|--deploy) + DEPLOY_BRANCH="$2" + shift + ;; + --verbose) + set -x + ;; + --no-push) + NO_PUSH="--no-push" + ;; + *) + echo "Option $1 is unknown." >&2 + echo $USAGE_MSG >&2 + exit 1 + ;; + esac + shift +done + +# Exit if any subcommand fails +set -e + +echo "Deploying..." +echo "Source branch: $SRC_BRANCH" +echo "Deploy branch: $DEPLOY_BRANCH" + +read -r -p "Do you want to proceed? [y/N] " response +if [[ ! $response =~ ^([yY][eE][sS]|[yY])+$ ]] +then + echo "Aborting." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# Check if there are any uncommitted changes +if ! git diff-index --quiet HEAD --; then + echo "Changes to the following files are uncommitted:" + git diff-index --name-only HEAD -- + echo "Please commit the changes before proceeding." + echo "Aborting." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# Check if there are any untracked files +if ! test -z "$(git ls-files --exclude-standard --others)"; then + echo "There are untracked files:" + git ls-files --exclude-standard --others + echo "Please commit those files or stash them before proceeding." + echo "Aborting." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# Switch to source branch (creates it if necessary from the current branch) +if [ `git branch | grep $SRC_BRANCH | tr ' ' '\n' | tail -1` ] +then + git checkout $SRC_BRANCH +else + git checkout -b $SRC_BRANCH +fi + +# Checkout DEPLOY_BRANCH branch +if [ `git branch | grep $DEPLOY_BRANCH` ] +then + git branch -D $DEPLOY_BRANCH +fi +git checkout -b $DEPLOY_BRANCH + +# Export JEKYLL_ENV=production +export JEKYLL_ENV=production + +# Build site +bundle exec jekyll build --lsi + +# Purge unused css +purgecss -c purgecss.config.js + +# Delete and move files +find . -maxdepth 1 ! -name '_site' ! -name '.git' ! -name 'CNAME' ! -name '.gitignore' -exec rm -rf {} \; +mv _site/* . +rm -R _site/ + +# Create `.nojekyll` file (bypass GitHub Pages Jekyll processing) +touch .nojekyll + +# Push to DEPLOY_BRANCH +git add -fA +git commit --allow-empty -m "$(git log -1 --pretty=%B) [ci skip]" +[[ ${NO_PUSH} ]] || git push -f -q origin $DEPLOY_BRANCH + +# Move back to SRC_BRANCH +git checkout $SRC_BRANCH + +echo "Deployed successfully!" + +exit 0 diff --git a/bin/entry_point.sh b/bin/entry_point.sh new file mode 100755 index 0000000..917ae35 --- /dev/null +++ b/bin/entry_point.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +CONFIG_FILE=_config.yml + +/bin/bash -c "rm -f Gemfile.lock && exec jekyll serve --watch --port=8080 --host=0.0.0.0 --livereload --verbose --trace --force_polling"& + +while true; do + + inotifywait -q -e modify,move,create,delete $CONFIG_FILE + + if [ $? -eq 0 ]; then + + echo "Change detected to $CONFIG_FILE, restarting Jekyll" + + jekyll_pid=$(pgrep -f jekyll) + kill -KILL $jekyll_pid + + /bin/bash -c "rm -f Gemfile.lock && exec jekyll serve --watch --port=8080 --host=0.0.0.0 --livereload --verbose --trace --force_polling"& + + fi + +done diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..e608968 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,168 @@ +--- +layout: default +title: blog +pagination: + enabled: true + collection: posts + permalink: /page/:num/ + per_page: 5 + sort_field: date + sort_reverse: true + trail: + before: 1 # The number of links before the current page + after: 3 # The number of links after the current page +--- + +
      + + {% assign blog_name_size = site.blog_name | size %} + {% assign blog_description_size = site.blog_description | size %} + + {% if blog_name_size > 0 or blog_description_size > 0 %} +
      +

      {{ site.blog_name }}

      +

      {{ site.blog_description }}

      +
      + {% endif %} + + {% if site.display_tags or site.display_categories %} +
      +
        + {% for tag in site.display_tags %} +
      • + {{ tag }} +
      • + {% unless forloop.last %} +

        + {% endunless %} + {% endfor %} + {% if site.display_categories.size > 0 and site.display_tags.size > 0 %} +

        + {% endif %} + {% for category in site.display_categories %} +
      • + {{ category }} +
      • + {% unless forloop.last %} +

        + {% endunless %} + {% endfor %} +
      +
      + {% endif %} + + {% assign featured_posts = site.posts | where: "featured", "true" %} + {% if featured_posts.size > 0 %} +
      + +
      + {% endif %} + +
        + {% for post in paginator.posts %} + + {% if post.external_source == blank %} + {% assign read_time = post.content | number_of_words | divided_by: 180 | plus: 1 %} + {% else %} + {% assign read_time = post.feed_content | strip_html | number_of_words | divided_by: 180 | plus: 1 %} + {% endif %} + {% assign year = post.date | date: "%Y" %} + {% assign tags = post.tags | join: "" %} + {% assign categories = post.categories | join: "" %} + +
      • +{%- if post.thumbnail -%} +
        +
        +{%- endif -%} +

        + {% if post.redirect == blank %} + {{ post.title }} + {% elsif post.redirect contains '://' %} + {{ post.title }} + + + + {% else %} + {{ post.title }} + {% endif %} +

        +

        {{ post.description }}

        + + +{%- if post.thumbnail -%} +
        +
        + image +
        +
        +{%- endif -%} +
      • + + {% endfor %} +
      + + {% include pagination.html %} + +
      diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e6068db --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3" +# this file uses prebuilt image in dockerhub +services: + jekyll: + image: amirpourmand/al-folio:latest + build: . + ports: + - 8080:8080 + volumes: + - .:/srv/jekyll diff --git a/news.html b/news.html new file mode 100644 index 0000000..3c4e9b4 --- /dev/null +++ b/news.html @@ -0,0 +1,7 @@ +--- +layout: page +title: news +permalink: /news/ +--- + +{% include news.html %} diff --git a/purgecss.config.js b/purgecss.config.js new file mode 100644 index 0000000..c379d79 --- /dev/null +++ b/purgecss.config.js @@ -0,0 +1,13 @@ +module.exports = { + content: [ + "_site/**/*.html", + "_site/**/*.js" + ], + css: [ + "_site/assets/css/*.css" + ], + output: "_site/assets/css/", + skippedContentGlobs: [ + "_site/assets/**/*.html" + ] +}; diff --git a/reports/psresultdesktop.svg b/reports/psresultdesktop.svg new file mode 100644 index 0000000..6592a27 --- /dev/null +++ b/reports/psresultdesktop.svg @@ -0,0 +1,26 @@ + + + + + + Heroku | Application Error + + + + + + diff --git a/reports/psresultmobile.svg b/reports/psresultmobile.svg new file mode 100644 index 0000000..6592a27 --- /dev/null +++ b/reports/psresultmobile.svg @@ -0,0 +1,26 @@ + + + + + + Heroku | Application Error + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..a450fbe --- /dev/null +++ b/robots.txt @@ -0,0 +1,7 @@ +--- +permalink: /robots.txt +--- +User-agent: * +Disallow: + +Sitemap: {{ site.baseurl | prepend: site.url }}/sitemap.xml