[
  {
    "path": ".dockerignore",
    "content": "Packages\n.build\n\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "* @toptal/external-sites\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@gitignore.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Vision\n\nGitignore.io's vision is to become the authoritative source for `.gitignore` templates.  Gitignore provides templates for Operating Systems, IDEs and Programming Languages, but can eventually grow to encompass other creative spaces as well.\n\n## Ways You Can Help\n\n1. **Add Templates** - Add templates for Programming Languages, Operating Systems and IDEs at [@toptal/gitignore](https://github.com/toptal/gitignore)\n2. **Explore** - Create better ways for users to interact with gitignore.io.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "# Issue Template\n\n## Frequently Asked Questions\n\n\n**Q:** How do I submit a new <code>.gitignore</code> templates?  \n**A:** Please submit all new templates to [@toptal/gitignore](https://github.com/toptal/gitignore).\n\n**Q:** How do I suggest modifications to existing `.gitignore` templates?  \n**A:** Modifictions should come in the form of pull requests at [@toptal/gitignore](https://github.com/toptal/gitignore).\n\n**Q:** Why don't Gitignore.io's templates don't look exactly like the templates on [@github/gitignore](https://github.com/github/gitignore)?  \n**A:** Gitignore.io tried to maintain parity with [@github/gitignore](https://github.com/github/gitignore), but GitHub's template list doesn't include many languages, operating systems, and IDE's that developers use.  Gitignore.io's template list has over 100 more templates than GitHub's.\n\n**Q:** Why is my local site empty?  \n**A:** When the repository is cloned, the `--recursive` flag is necessary.  gitignore.io uses [@toptal/gitignore](https://github.com/toptal/gitignore) as its data source.  If  the repo isn't cloned recursively, templates will be missing.\n\n## Issue\n\n### Development Environment:\n\n- [ ] Machine (Local, Container, Virtual):\n- [ ] Operating System (Name/Version):\n- [ ] Web Browser (Name/Version):\n- [ ] Vapor Version:\n- [ ] Swift Version:\n\n### Expected Behavior:\n\n### Actual Behavior:\n\n### Reproduction Steps:\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nregistries:\n  docker-registry-gcr-io:\n    type: docker-registry\n    url: https://gcr.io\n    username: _json_key\n    password: \"${{secrets.DOCKER_REGISTRY_GCR_IO_PASSWORD}}\"\n\nupdates:\n- package-ecosystem: docker\n  directory: \"/\"\n  schedule:\n    interval: daily\n    time: \"07:00\"\n  pull-request-branch-name:\n    separator: \"-\"\n  open-pull-requests-limit: 10\n  registries:\n  - docker-registry-gcr-io\n"
  },
  {
    "path": ".github/workflows/close-inactive.yaml",
    "content": "name: Close inactive issues and PRs\non:\n  workflow_dispatch:\n  schedule:\n    - cron: \"30 1 * * *\"\n\njobs:\n  close-stale:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: write\n      pull-requests: write\n    steps:\n      - uses: actions/stale@v6\n        with:\n          days-before-stale: 30\n          days-before-close: 14\n          stale-issue-label: \"stale\"\n          stale-pr-label: \"stale\"\n\n          exempt-issue-labels: backlog,triage,nostale\n          exempt-pr-labels: backlog,triage,nostale\n\n          stale-pr-message: \"This PR is stale because it has been open for 30 days with no activity.\"\n          close-pr-message: \"This PR was closed because it has been inactive for 14 days since being marked as stale.\"\n\n          stale-issue-message: \"This issue is stale because it has been open for 30 days with no activity.\"\n          close-issue-message: \"This issue was closed because it has been inactive for 14 days since being marked as stale.\"\n\n          repo-token: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/update-templates.yml",
    "content": "name: Update Templates\n\non:\n  workflow_dispatch:\n\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    timeout-minutes: 15\n\n    steps:\n    - uses: actions/checkout@v3\n\n    - name: Sync Templates\n      run: |\n        git submodule update --init\n        cd gitignore\n        git pull origin master\n\n    - name: Create Pull Request\n      uses: peter-evans/create-pull-request@v4\n      with:\n        token: ${{ secrets.GITHUB_TOKEN }}\n        commit-message: Sync Templates Submodule\n        title: Sync Templates Submodule\n        branch: sync_templates\n        base: master\n"
  },
  {
    "path": ".gitignore",
    "content": "\n# Created by https://www.gitignore.io/api/macos,linux,windows,vapor\n\n### Linux ###\n*~\n\n# temporary files which can be created if a process still has a handle open of a deleted file\n.fuse_hidden*\n\n# KDE directory preferences\n.directory\n\n# Linux trash folder which might appear on any partition or disk\n.Trash-*\n\n# .nfs files are created when an open file is removed but is still being accessed\n.nfs*\n\n### macOS ###\n*.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n### Vapor ###\nConfig/secrets\n\n### Vapor Patch ###\nPackages\n.build\nxcuserdata\n*.xcodeproj\n\n### Windows ###\n# Windows thumbnail cache files\nThumbs.db\nehthumbs.db\nehthumbs_vista.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n.git/credentials\n\ncobertura.xml\n# End of https://www.gitignore.io/api/macos,linux,windows,vapor\n\n\nnode_modules/\n*.swp\nyarn-error.log\n.yarn/cache\n.yarn/unplugged\n.yarn/build-state.yml\n.pnp.*\n.idea"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"gitignore\"]\n\tpath = gitignore\n\turl = https://github.com/toptal/gitignore.git\n"
  },
  {
    "path": ".swift-version",
    "content": "4.1\n"
  },
  {
    "path": ".swiftlint.yml",
    "content": "disabled_rules: # rule identifiers to exclude from running\n  - colon\n  - comma\n  - control_statement\n  - line_length\nopt_in_rules: # some rules are only opt-in\n  - empty_count\n  # Find all the available rules by running:\n  # swiftlint rules\nincluded: # paths to include during linting. `--path` is ignored if present.\n  - Sources/App\n  - Sources/GitignoreIOServer\nexcluded: # paths to ignore during linting. Takes precedence over `included`.\n\n# configurable rules can be customized from this configuration file\n# binary rules can set their severity level\nforce_cast: warning # implicitly\nforce_try:\n  severity: warning # explicitly\n# rules that have both warning and error levels, can set just the warning level\n# implicitly\n# line_length: 110\n# they can set both implicitly with an array\ntype_body_length:\n  - 300 # warning\n  - 400 # error\n# or they can set both explicitly\nfile_length:\n  warning: 500\n  error: 1200\n# naming rules can set warnings/errors for min_length and max_length\n# additionally they can set excluded names\ntype_name:\n  min_length: 4 # only warning\n  max_length: # warning and error\n    warning: 40\n    error: 50\n  excluded: iPhone # excluded via string\nidentifier_name:\n  min_length: # only min_length\n    error: 3 # only error\n  excluded: # excluded via string array\n    - id\n    - URL\n    - GlobalAPIKey\nreporter: \"xcode\" # reporter type (xcode, json, csv, checkstyle, junit)\ncyclomatic_complexity:\n  warning: 30\n  error: 50\nfunction_parameter_count:\n  warning: 7\n  error: 11\n"
  },
  {
    "path": ".travis/ci.sh",
    "content": "#!/usr/bin/env bash\n\nVERSION=\"4.1\"\necho \"Swift $VERSION Continuous Integration\";\n\n# Determine OS\nUNAME=`uname`;\nif [[ $UNAME == \"Darwin\" ]];\nthen\n    OS=\"macos\";\nelse\n    if [[ $UNAME == \"Linux\" ]];\n    then\n        UBUNTU_RELEASE=`lsb_release -a 2>/dev/null`;\n        if [[ $UBUNTU_RELEASE == *\"16.04\"* ]];\n        then\n            OS=\"ubuntu1604\";\n        else\n            OS=\"ubuntu1404\";\n        fi\n    else\n        echo \"Unsupported Operating System: $UNAME\";\n    fi\nfi\necho \"🖥 Operating System: $OS\";\n\nif [[ $OS != \"macos\" ]];\nthen\n    echo \"📚 Installing Dependencies\"\n    sudo apt-get install -y clang libicu-dev uuid-dev\n\n    echo \"🐦 Installing Swift\";\n    if [[ $OS == \"ubuntu1604\" ]];\n    then\n        SWIFTFILE=\"swift-$VERSION-RELEASE-ubuntu16.04\";\n    else\n        SWIFTFILE=\"swift-$VERSION-RELEASE-ubuntu14.04\";\n    fi\n    wget https://swift.org/builds/swift-$VERSION-release/$OS/swift-$VERSION-RELEASE/$SWIFTFILE.tar.gz\n    tar -zxf $SWIFTFILE.tar.gz\n    export PATH=$PWD/$SWIFTFILE/usr/bin:\"${PATH}\"\nfi\n\necho \"📅 Version: `swift --version`\";\n\necho \"🚀 Building\";\nswift build\nif [[ $? != 0 ]]; \nthen \n    echo \"❌  Build failed\";\n    exit 1; \nfi\n\necho \"💼 Building Release\";\nswift build -c release\nif [[ $? != 0 ]]; \nthen \n    echo \"❌  Build for release failed\";\n    exit 1; \nfi\n\necho \"🔎 Testing\";\n\nswift test\nif [[ $? != 0 ]]; \nthen \n    echo \"❌ Tests failed\";\n    exit 1; \nfi\n\necho \"✅ Done\"\n"
  },
  {
    "path": ".travis/update-submodule.sh",
    "content": "#!/bin/bash\n\ncd gitignore\ngit pull origin master\ncd ..\n\npwd\nif [[ `git status --porcelain` ]]; then\n  echo \"status: Updating templates\"\n  git add .\n  git commit -m \"Upading templates from https://github.com/toptal/gitignore\"\nelse\n  echo \"status: No updates\"\nfi\n"
  },
  {
    "path": "Dockerfile",
    "content": "##############################################################################################################################\n##                                                                                                                          ##\n##  We recommend building with buildx:                                                                                      ##\n##                                                                                                                          ##\n##  // Note: you can use the standard `docker build` command, but there is no multi-CPU architecture support                ##\n##                                                                                                                          ##\n##  // Create buildx instance                                                                                               ##\n##  docker buildx create --driver docker-container --name builder --bootstrap --use                                         ##\n##                                                                                                                          ##\n##  // Login to Rregistry                                                                                                   ##\n##  docker login [REGSITRY_ADDRESS]                                                                                         ##\n##                                                                                                                          ##\n##  // Build the docker image (both x86 and amd64 are supported)                                                            ##\n##  docker buildx build --platform=linux/amd64,linux/arm64 --push -t [REGSITRY_ADDRESS]/REGSITRY_USERNAME/gitignore.io .    ##\n##                                                                                                                          ##\n##############################################################################################################################\n\n# Build swift backend\nFROM swift:5.6-focal AS swift-builder\n\nCOPY . /gitignore.io\n\nWORKDIR /gitignore.io\n\nRUN set -ex \\\n    && apt update \\\n    && apt install libssl-dev -y \\\n    && swift package clean \\\n    && swift package update \\\n    && swift build -Xswiftc -static-stdlib -j $(nproc) -c release \\\n    && mv $(swift build -Xswiftc -static-stdlib -c release --show-bin-path)/Run /tmp/Run\n\n# Build node frontend\nFROM node:lts AS node-builder\n\nCOPY . /gitignore.io\n\nWORKDIR /gitignore.io\n\nRUN set -ex \\\n    && yarn install \\\n    && yarn build \\\n    && rm -rf node_modules\n\n# Build final image\nFROM debian:stable-slim AS dest\n\nWORKDIR /app\n\n# The environment variable is set to empty(use the default value)\nARG HOST_ORIGIN\nARG BASE_PREFIX\nARG GOOGLE_ANALYTICS_UID\n\n# Copy the project and remove the node frontend\nCOPY . ./\nCOPY .git ./\n\n# Install some necessary dependencies\nRUN set -ex \\\n    && apt update \\\n    && apt install git ca-certificates libcurl4 dumb-init --no-install-recommends -y \\\n    && git submodule update --init --recursive \\\n    && rm -rf /app/Public /app/Resources \\\n    && apt autoremove -y \\\n    && apt autoclean -y\n\n# Copy all newly compiled files to the final image\nCOPY --from=swift-builder /tmp/Run /app/Run\nCOPY --from=node-builder /gitignore.io/Public /app/Public\nCOPY --from=node-builder /gitignore.io/Resources /app/Resources\n\nEXPOSE 8080/tcp\n\n# Add dump-init to ensure container can respond to exit signals\nENTRYPOINT [\"/usr/bin/dumb-init\", \"--\"]\n\n# System signals are taken over by dump-init, we can use `exec` to execute\n# commands without worrying about signal forwarding and zombie processes\n# See Also: https://docs.docker.com/engine/reference/builder/#cmd\nCMD [\"/app/Run\", \"serve\", \"-e\", \"prod\", \"-b\", \"0.0.0.0\"]\n"
  },
  {
    "path": "LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2013-2019\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Localizations/README.md",
    "content": "# Localizations\n\n1. Copy the `en.json` file and rename it\n_use the base version of the language (en) instead of a country specific version (en_US)_\n2. Replace the strings with the language you're translating\n3. Add the language to `Sources/App/Extensions/Router+Extensions.swift` under `supportedLanguages`\n4. Create a pull request to get your translation approved and merged\n\nThank you for help with localizing gitignore"
  },
  {
    "path": "Localizations/ar.json",
    "content": "{\n    \"title\": \"إنشاء ملفات .gitignore مفيدة لمشروعك - gitignore.io\",\n    \"description\": \"Create useful .gitignore files for your project by selecting from %{templateCount} Operating System, IDE, and Programming Language .gitignore templates\",\n    \"subtitle\": \"إنشاء ملفات .gitignore مفيدة لمشروعك\",\n    \"searchPlaceholder\": \"ابحث عن أنظمة تشغيل، IDEs، أو لغات برمجة\",\n    \"searchGo\": \"إنشاء\",\n    \"searchDownload\": \"تحميل ملف\",\n    \"footer\": \"قوالب نظام تشغيل، IDE، ولغة برمجة لملف .gitignore %{templateCount}\",\n    \"commandLineTitle\": \"توثيق سطر اﻷوامر\",\n    \"commandLineDescription\": \"تعلم كيفية تشغيل .gitignore.io من سطر اﻷوامر\",\n    \"videoTitle\": \"مشاهدة مقطع فيديو تعليمي\",\n    \"videoDescription\": \"مشاهدة فيديو تعليمي حول كيفية عمل .gitignore.io\",\n    \"sourceCodeTitle\": \"شفرة مصدرية\",\n    \"sourceCodeDescription\": \"الشفرة المصدرية لـ.gitignore.io مستضافة على GitHub\"\n}\n"
  },
  {
    "path": "Localizations/cs.json",
    "content": "{\n    \"title\": \"gitignore.io - Vytvořte užitečný soubory .gitignore pro váš projekt\",\n    \"description\": \"Vytvořte užitečné soubory .gitignore pro svůj projekt výběrem z %{templateCount}. Šablony .gitignore pro operační systém, IDE a programovací jazyk.\",\n    \"subtitle\": \"Vytvořte užitečné soubory .gitignore pro svůj projekt\",\n    \"searchPlaceholder\": \"Hledání operačních systémů, IDE nebo programovacích jazyků\",\n    \"searchGo\": \"Vytvořit\",\n    \"searchDownload\": \"Soubor ke stažení\",\n    \"footer\": \"%{templateCount} šablon .gitignore pro operační systémy, IDE a programovací jazyky\",\n    \"commandLineTitle\": \"Dokumentace příkazového řádku\",\n    \"commandLineDescription\": \"Naučte se spouštět soubor .gitignore.io z příkazového řádku\",\n    \"videoTitle\": \"Podívejte se na video tutoriál\",\n    \"videoDescription\": \"Podívejte se na video, ve kterém se dozvíte, jak .gitignore.io funguje.\",\n    \"sourceCodeTitle\": \"Zdrojový kód\",\n    \"sourceCodeDescription\": \"Zdrojový kód pro .gitignore.io hostovaný na GitHub\"\n}\n"
  },
  {
    "path": "Localizations/de.json",
    "content": "{\n    \"title\": \"gitignore.io - Erstelle nützliche .gitignore Dateien Für Dein Projekt\",\n    \"description\": \"Erstelle nützliche .gitignore Dateien für dein Projekt in dem du eines von {templateCount} Betriebssystem, Entwicklungsumgebung und Programmiersprache .gitignore Templates wählst\",\n    \"subtitle\": \"Erstelle nützliche .gitignore Dateien für dein Projekt\",\n    \"searchPlaceholder\": \"Suche nach Betriebssystemen, Entwicklungsumgebungen oder Programmiersprachen\",\n    \"searchGo\": \"Create\",\n    \"searchDownload\": \"Datei herunterladen\",\n    \"footer\": \"%{templateCount} Betriebssystem, Entwicklungsumgebung und Programmiersprache .gitignore Templates\",\n    \"commandLineTitle\": \"Kommandozeilen Dokumentation\",\n    \"commandLineDescription\": \"Lerne wie man .gitignore.io von der Kommandozeile ausführt\",\n    \"videoTitle\": \"Schau das Video Tutorial\",\n    \"videoDescription\": \"Schau ein Video um zu lernen wie .gitignore.io funktioniert\",\n    \"sourceCodeTitle\": \"Quellcode\",\n    \"sourceCodeDescription\": \"Der Quellcode für .gitignore.io ist bei Github gehosted\"\n}\n"
  },
  {
    "path": "Localizations/el.json",
    "content": "{\n    \"title\": \"gitignore.io - Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας\",\n    \"description\": \"Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας επιλέγοντας από το %{templateCount} πρότυπα .gitignore για λειτουργικό σύστημα, IDE και γλώσσα προγραμματισμού\",\n    \"subtitle\": \"Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας\",\n    \"searchPlaceholder\": \"Αναζήτηση λειτουργικών συστημάτων, IDEs ή γλωσσών προγραμματισμού\",\n    \"searchGo\": \"Δημιουργήστε\",\n    \"searchDownload\": \"Κατεβάστε το αρχείο\",\n    \"footer\": \"%{templateCount} λειτουργικό σύστημα, IDE και γλώσσα προγραμματισμού .gitignore templates\",\n    \"commandLineTitle\": \"Command line τεκμηρίωση\",\n    \"commandLineDescription\": \"Μάθετε πώς να εκτελείτε το .gitignore.io από τη command line\",\n    \"videoTitle\": \"Παρακολουθήστε εκπαιδευτικό βίντεο\",\n    \"videoDescription\": \"Παρακολουθήστε ένα βίντεο για να μάθετε πώς λειτουργεί το .gitignore.io\",\n    \"sourceCodeTitle\": \"Πηγαίος κώδικας\",\n    \"sourceCodeDescription\": \"Πηγαίος κώδικας στο GitHub για το .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/en.json",
    "content": "{\n    \"title\": \"gitignore.io - Create Useful .gitignore Files For Your Project\",\n    \"description\": \"Create useful .gitignore files for your project by selecting from %{templateCount} Operating System, IDE, and Programming Language .gitignore templates\",\n    \"subtitle\": \"Create useful .gitignore files for your project\",\n    \"searchPlaceholder\": \"Search Operating Systems, IDEs, or Programming Languages\",\n    \"searchGo\": \"Create\",\n    \"searchDownload\": \"Download File\",\n    \"footer\": \"%{templateCount} Operating System, IDE, and Programming Language .gitignore templates\",\n    \"commandLineTitle\": \"Command Line Docs\",\n    \"commandLineDescription\": \"Learn how to run .gitignore.io from the command line\",\n    \"videoTitle\": \"Watch Video Tutorial\",\n    \"videoDescription\": \"Watch a video to learn how .gitignore.io works\",\n    \"sourceCodeTitle\": \"Source Code\",\n    \"sourceCodeDescription\": \"GitHub hosted source code for .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/fa.json",
    "content": "{\n    \"title\": \"gitignore.io - فایل های .gitignore پروژه تان را بسازید\",\n    \"description\": \"فایل های .gitignore پروژه تان را با استفاده از %{templateCount} قالب بنا به سیستم عامل، IDE و زیان برنامه نویسی بسازید.\",\n    \"subtitle\": \"فایل های .gitignore پروژه تان را بسازید\",\n    \"searchPlaceholder\": \"سیستم عامل، IDE و یا زبان برنامه نویسی تان را جستجو کنید.\",\n    \"searchGo\": \"ایجاد\",\n    \"searchDownload\": \"دانلود فایل\",\n    \"footer\": \"%{templateCount} قالب سیستم عامل، IDE و زبان برنامه نویسی\",\n    \"commandLineTitle\": \"مستندات خط فرمان\",\n    \"commandLineDescription\": \"آموزش چگونگی استفاده از .gitignore.io در خط فرمان\",\n    \"videoTitle\": \"تماشای ویدئو آموزشی\",\n    \"videoDescription\": \"تماشای ویدئو آموزشی برای اینکه بدانیم .gitignore.io چگونه کار می کند.\",\n    \"sourceCodeTitle\": \"منبع کد\",\n    \"sourceCodeDescription\": \"میزبانی شده توسط Github\"\n}\n"
  },
  {
    "path": "Localizations/fr.json",
    "content": "{\n    \"title\": \"gitignore.io - Créez des fichiers .gitignore utiles à votre Projet\",\n    \"description\": \"Créez des fichiers .gitignore utiles à votre projet en choisissant l'un des %{templateCount} templates .gitignore.io de Système d'exploitation, IDE et Langage de Programmation\",\n    \"subtitle\": \"Créez des fichiers .gitignore utiles à votre projet\",\n    \"searchPlaceholder\": \"Recherchez des Systèmes d'Exploitation, IDEs ou Langages de Programmation\",\n    \"searchGo\": \"Créer\",\n    \"searchDownload\": \"Téléchargement du fichier\",\n    \"footer\": \"%{templateCount} templates .gitignore.io de Système d'exploitation, IDE et Langage de Programmation\",\n    \"commandLineTitle\": \"Documentation\",\n    \"commandLineDescription\": \"Apprenez comment utiliser .gitignore.io en ligne de commande\",\n    \"videoTitle\": \"Regardez une Vidéo Didacticielle\",\n    \"videoDescription\": \"Regardez une vidéo pour apprendre comment fonctionne .gitignore.io\",\n    \"sourceCodeTitle\": \"Code Source\",\n    \"sourceCodeDescription\": \"Le code source de .gitignore.io est hébergé par GitHub\"\n}\n"
  },
  {
    "path": "Localizations/id.json",
    "content": "{\n    \"title\": \"gitignore.io - Buat File .gitignore yang Berguna untuk Proyek Anda\",\n    \"description\": \"Buat file .gitignore yang berguna untuk proyek anda dengan memilih template .gitginore dari %{templateCount} Sistem Operasi, IDE, dan Bahasa Pemrograman\",\n    \"subtitle\": \"Buat file .gitignore yang berguna untuk proyek anda\",\n    \"searchPlaceholder\": \"Cari Sistem Operasi, IDE, atau Bahasa Pemrograman\",\n    \"searchGo\": \"Buat\",\n    \"searchDownload\": \"Mengunduh File\",\n    \"footer\": \"template .gitignore %{templateCount} Sistem Operasi, IDE, dan Bahasa Pemrograman\",\n    \"commandLineTitle\": \"Dokumentasi Command Line\",\n    \"commandLineDescription\": \"Pelajari cara menjalankan .gitignore.io dari Command Line\",\n    \"videoTitle\": \"Menonton Video Tutorial\",\n    \"videoDescription\": \"Menonton video untuk mempelajari bagaimana .gitignore.io bekerja\",\n    \"sourceCodeTitle\": \"Kode Sumber\",\n    \"sourceCodeDescription\": \"GitHub menghosting kode sumber untuk .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/ja.json",
    "content": "{\n    \"title\": \"gitignore.io - プロジェクトに役立つ.gitignoreファイルを作成しよう\",\n    \"description\": \"%{templateCount} オペレーティングシステム、IDE、およびプログラミング言語の.gitignoreテンプレートから選択して、プロジェクトに役立つ.gitignoreファイルを作成しよう。\",\n    \"subtitle\": \"プロジェクトに役立つ.gitignoreファイルを作成しよう\",\n    \"searchPlaceholder\": \"オペレーティングシステム、IDE、プログラミング言語を検索する\",\n    \"searchGo\": \"作成する\",\n    \"searchDownload\": \"ファイルをダウンロードする\",\n    \"footer\": \"%{templateCount} オペレーティングシステム、IDE、プログラミング言語の.gitignoreテンプレート\",\n    \"commandLineTitle\": \"コマンドライン ドキュメンテーション\",\n    \"commandLineDescription\": \"コマンドラインから.gitignore.ioを実行する方法を学ぶ\",\n    \"videoTitle\": \"チュートリアルビデオを見る\",\n    \"videoDescription\": \".gitignore.ioの使い方を学ぶためにビデオを見る\",\n    \"sourceCodeTitle\": \"ソースコード\",\n    \"sourceCodeDescription\": \"GitHubでホスティングされた.gitignore.ioのソースコード\"\n}\n"
  },
  {
    "path": "Localizations/ko.json",
    "content": "{\n    \"title\": \"gitignore.io - 자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요\",\n    \"description\": \"자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요. %{templateCount} 개의 운영체제, 개발 환경(IDE), 프로그래밍 언어 .gitignore 템플릿이 준비되어 있습니다\",\n    \"subtitle\": \"자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요\",\n    \"searchPlaceholder\": \"운영체제, 개발 환경(IDE), 프로그래밍 언어 검색\",\n    \"searchGo\": \"생성\",\n    \"searchDownload\": \"파일 다운로드\",\n    \"footer\": \"%{templateCount} 개의 운영체제, 개발 환경(IDE), 프로그래밍 언어 .gitignore 템플릿\",\n    \"commandLineTitle\": \"커맨드라인 문서\",\n    \"commandLineDescription\": \".gitignore.io 를 커맨드 라인에서 실행하는 법 배우기\",\n    \"videoTitle\": \"동영상 튜토리얼 보기\",\n    \"videoDescription\": \".gitignore.io 가 어떻게 동작하는지 동영상으로 배우기\",\n    \"sourceCodeTitle\": \"소스 코드\",\n    \"sourceCodeDescription\": \"깃헙(GitHub)에서 호스팅하는 .gitignore.io 소스 코드\"\n}\n"
  },
  {
    "path": "Localizations/nl.json",
    "content": "{\n    \"title\": \"gitignore.io - Creëer nuttige .gitignore bestanden voor je project\",\n    \"description\": \"Creëer nuttige .gitignore bestanden voor je project door te kiezen uit %{templateCount} besturingssysteem, IDE en programmeertaal .gitignore sjablonen\",\n    \"subtitle\": \"Creëer nuttige .gitignore-bestanden voor je project\",\n    \"searchPlaceholder\": \"Zoek besturingssystemen, IDEs of programmeertalen\",\n    \"searchGo\": \"Creëer\",\n    \"searchDownload\": \"Download bestand\",\n    \"footer\": \"%{templateCount} besturingssysteem, IDE en programmeertaal .gitignore-sjablonen\",\n    \"commandLineTitle\": \"Command Line documentatie\",\n    \"commandLineDescription\": \"Leer hoe je .gitignore.io uitvoert vanaf de command line\",\n    \"videoTitle\": \"Video handleiding bekijken\",\n    \"videoDescription\": \"Bekijk een video om te leren hoe .gitignore.io werkt\",\n    \"sourceCodeTitle\": \"Broncode\",\n    \"sourceCodeDescription\": \"GitHub gehoste broncode voor .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/pt.json",
    "content": "{\n    \"title\": \"gitignore.io - Crie Arquivos .gitignore Úteis Para Seu Projeto.\",\n    \"description\": \"Crie arquivos .gitignore úteis para o seu projeto selecionando os %{templateCount} templates de Sistemas Operacionais, IDEs e linguagens de Programação.\",\n    \"subtitle\": \"Crie arquivos .gitignore úteis para o seu projeto.\",\n    \"searchPlaceholder\": \"Pesquise Sistemas Operacionais, IDEs ou Linguagens de Programação.\",\n    \"searchGo\": \"Criar\",\n    \"searchDownload\": \"Baixar Arquivo\",\n    \"footer\": \"%{templateCount} Templates de .gitignore de Sistemas Operacionais, IDEs e Linguagens de Programação.\",\n    \"commandLineTitle\": \"Documentação\",\n    \"commandLineDescription\": \"Saiba como executar o .gitignore.io a partir da Linha de Comando\",\n    \"videoTitle\": \"Assista ao Vídeo Tutorial\",\n    \"videoDescription\": \"Assista a um vídeo para aprender como funciona o .gitignore.io\",\n    \"sourceCodeTitle\": \"Código-fonte\",\n    \"sourceCodeDescription\": \"Código-fonte hospedado no GitHub\"\n}\n"
  },
  {
    "path": "Localizations/ro.json",
    "content": "{\n    \"title\": \"gitignore.io - Creează fișiere .gitignore utile pentru proiectul tău\",\n    \"description\": \"Creează fișiere .gitignore utile pentru proiectul tău selectând dintre %{templateCount} de șabloane .gitignore pentru sisteme de operare, IDE-uri și limbaje de programare.\",\n    \"subtitle\": \"Creează fișiere .gitignore utile pentru proiectul tău\",\n    \"searchPlaceholder\": \"Caută sisteme de operare, IDE-uri sau limbaje de programare\",\n    \"searchGo\": \"Creează\",\n    \"searchDownload\": \"Descarcă fișier\",\n    \"footer\": \"%{templateCount} de șabloane .gitignore pentru sisteme de operare, IDE-uri și limbaje de programare\",\n    \"commandLineTitle\": \"Documentație linie de comandă\",\n    \"commandLineDescription\": \"Află cum să rulezi .gitignore.io din linie de comandă\",\n    \"videoTitle\": \"Vizionează tutorialul video\",\n    \"videoDescription\": \"Vizionează videoul să vezi cum funcționează .gitignore.io\",\n    \"sourceCodeTitle\": \"Cod sursă\",\n    \"sourceCodeDescription\": \"GitHub a găzduit codul sursă pentru .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/ru.json",
    "content": "{\n    \"title\": \"gitignore.io - Генерируйте удобные .gitignore файлы для вашего проекта\",\n    \"description\": \"Генерируйте удобные .gitignore файлы для вашего проекта при помощи выбора из %{templateCount} шаблонов файла .gitignore для различных операционных систем, IDE и языков программирования\",\n    \"subtitle\": \"Генерируйте удобные .gitignore файлы для вашего проекта\",\n    \"searchPlaceholder\": \"Искать по операционным системам, IDE или языкам программирования\",\n    \"searchGo\": \"Сгенерировать\",\n    \"searchDownload\": \"Скачать файл\",\n    \"footer\": \"%{templateCount} шаблонов файла .gitignore для различных операционных систем, IDE и языков программирования\",\n    \"commandLineTitle\": \"Документация по работе из командной строки\",\n    \"commandLineDescription\": \"Изучите, как запускать .gitignore.io из командной строки\",\n    \"videoTitle\": \"Смотреть видео-туториал\",\n    \"videoDescription\": \"Смотреть видео, рассказывающее, как работает .gitignore.io\",\n    \"sourceCodeTitle\": \"Исходный код\",\n    \"sourceCodeDescription\": \"Исходный код .gitignore.io на GitHub\"\n}\n"
  },
  {
    "path": "Localizations/th.json",
    "content": "{\n    \"title\": \"gitignore.io - สร้างไฟล์ .gitignore ที่เป็นประโยชน์สำหรับโปรเจ็คต์ของคุณ\",\n    \"description\": \"สร้างไฟล์ .gitignore ที่มีประโยชน์สำหรับโปรเจ็คต์ของคุณโดยเลือกจาก %{templateCount} เทมเพลตระบบปฏิบัติการ, IDE และภาษาการเขียนโปรแกรม .gitignore\",\n    \"subtitle\": \"สร้างไฟล์ .gitignore ที่มีประโยชน์สำหรับโปรเจ็คต์ของคุณ\",\n    \"searchPlaceholder\": \"ค้นหาระบบปฏิบัติการ IDE หรือภาษาการเขียนโปรแกรม\",\n    \"searchGo\": \"สร้าง\",\n    \"searchDownload\": \"ดาวน์โหลดไฟล์\",\n    \"footer\": \"%{templateCount} เทมเพลตระบบปฏิบัติการ, IDE และภาษาการเขียนโปรแกรม .gitignore\",\n    \"commandLineTitle\": \"ลองอ่านเอกสาร คำสั่งของ คอมมานด์ไลน์ ดูสิ!\",\n    \"commandLineDescription\": \"เรียนรู้วิธีเรียกใช้ .gitignore.io จากคำสั่ง คอมมานด์ไลน์ ดูสิ!\",\n    \"videoTitle\": \"ชมวิดีโอการสอนการใช้งาน\",\n    \"videoDescription\": \"ดูวิดีโอเพื่อเรียนรู้วิธีการทำงานของ .gitignore.io\",\n    \"sourceCodeTitle\": \"ซอร์สโค้ด\",\n    \"sourceCodeDescription\": \"ไปที่ กิทฮับ ที่เก็บซอร์สโค้ด ของ .gitignore.io\"\n}\n"
  },
  {
    "path": "Localizations/tr.json",
    "content": "{\n    \"title\": \"gitignore.io - Projen İçin İşe Yarar .gitignore Dosyaları Yarat\",\n    \"description\": \"%{templateCount} İşletim Sistemi, IDE, ve Programlama Dili için .gitignore şablonlarından seçerek projen için işe yarar .gitignore dosyaları yarat\",\n    \"subtitle\": \"Projen için işe yarar .gitignore dosyaları yarat\",\n    \"searchPlaceholder\": \"İşletim Sistemleri, IDE'ler, ya da Programlama Dilleri ara\",\n    \"searchGo\": \"Yarat\",\n    \"searchDownload\": \"Dosyayı İndir\",\n    \"footer\": \"%{templateCount} İşletim Sistemi, IDE, ve Programlama Dili için .gitignore şablonları\",\n    \"commandLineTitle\": \"Komut Satırı Kılavuzu\",\n    \"commandLineDescription\": \".gitignore.io'u komut satırından çalıştırmayı öğren\",\n    \"videoTitle\": \"Öğretici Videoyu İzle\",\n    \"videoDescription\": \".gitignore.io'nun nasıl çalıştığını öğrenmek için bir video izle\",\n    \"sourceCodeTitle\": \"Kaynak Kod\",\n    \"sourceCodeDescription\": \"GitHub'da tutulan .gitignore.io'un kaynak kodu\"\n}\n"
  },
  {
    "path": "Localizations/zh.json",
    "content": "{\n    \"title\": \"gitignore.io - 为你的项目创建必要的 .gitignore 文件\",\n    \"description\": \"从 %{templateCount} 操作系统, IDE, 和编程语言的 .gitignore 模板中为你的项目创建必要的 .gitignore 文件\",\n    \"subtitle\": \"为你的项目创建必要的 .gitignore 文件\",\n    \"searchPlaceholder\": \"搜索操作系统, IDEs, 或编程语言\",\n    \"searchGo\": \"创建\",\n    \"searchDownload\": \"文件下载\",\n    \"footer\": \"%{templateCount} 操作系统, IDE, 和编程语言的 .gitignore 模板\",\n    \"commandLineTitle\": \"命令行使用文档\",\n    \"commandLineDescription\": \"学习如何从命令行运行 .gitignore.io\",\n    \"videoTitle\": \"观看视频教程\",\n    \"videoDescription\": \"通过视频学习 .gitignore.io 是如何工作的\",\n    \"sourceCodeTitle\": \"源码\",\n    \"sourceCodeDescription\": \".gitignore.io 的源码托管在 github 上\"\n}\n"
  },
  {
    "path": "Package.pins",
    "content": "{\n  \"autoPin\": true,\n  \"pins\": [\n    {\n      \"package\": \"CLibreSSL\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/clibressl.git\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"package\": \"Console\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/console.git\",\n      \"version\": \"1.0.2\"\n    },\n    {\n      \"package\": \"Core\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/core.git\",\n      \"version\": \"1.1.1\"\n    },\n    {\n      \"package\": \"Crypto\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/crypto.git\",\n      \"version\": \"1.1.0\"\n    },\n    {\n      \"package\": \"Engine\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/engine.git\",\n      \"version\": \"1.3.12\"\n    },\n    {\n      \"package\": \"Fluent\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/fluent.git\",\n      \"version\": \"1.4.1\"\n    },\n    {\n      \"package\": \"JSON\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/json.git\",\n      \"version\": \"1.0.6\"\n    },\n    {\n      \"package\": \"Jay\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/DanToml/Jay.git\",\n      \"version\": \"1.0.1\"\n    },\n    {\n      \"package\": \"Leaf\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/leaf.git\",\n      \"version\": \"1.0.6\"\n    },\n    {\n      \"package\": \"Multipart\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/multipart.git\",\n      \"version\": \"1.0.2\"\n    },\n    {\n      \"package\": \"Node\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/node.git\",\n      \"version\": \"1.0.1\"\n    },\n    {\n      \"package\": \"PathIndexable\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/path-indexable.git\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"package\": \"Polymorphic\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/polymorphic.git\",\n      \"version\": \"1.0.1\"\n    },\n    {\n      \"package\": \"Routing\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/routing.git\",\n      \"version\": \"1.1.0\"\n    },\n    {\n      \"package\": \"Socks\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/socks.git\",\n      \"version\": \"1.2.7\"\n    },\n    {\n      \"package\": \"TLS\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/tls.git\",\n      \"version\": \"1.1.2\"\n    },\n    {\n      \"package\": \"Turnstile\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/stormpath/Turnstile.git\",\n      \"version\": \"1.0.6\"\n    },\n    {\n      \"package\": \"Vapor\",\n      \"reason\": null,\n      \"repositoryURL\": \"https://github.com/vapor/vapor.git\",\n      \"version\": \"1.5.13\"\n    }\n  ],\n  \"version\": 1\n}"
  },
  {
    "path": "Package.resolved",
    "content": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"Console\",\n        \"repositoryURL\": \"https://github.com/vapor/console.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"96617dcdcbb7572cbff0645a2e3362c042bfffad\",\n          \"version\": \"3.0.3\"\n        }\n      },\n      {\n        \"package\": \"Core\",\n        \"repositoryURL\": \"https://github.com/vapor/core.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"96ce86ebf9198328795c4b9cb711489460be083c\",\n          \"version\": \"3.4.4\"\n        }\n      },\n      {\n        \"package\": \"Crypto\",\n        \"repositoryURL\": \"https://github.com/vapor/crypto.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"5605334590affd4785a5839806b4504407e054ac\",\n          \"version\": \"3.3.0\"\n        }\n      },\n      {\n        \"package\": \"DatabaseKit\",\n        \"repositoryURL\": \"https://github.com/vapor/database-kit.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"3a17dbbe9be5f8c37703e4b7982c1332ad6b00c4\",\n          \"version\": \"1.3.1\"\n        }\n      },\n      {\n        \"package\": \"HTTP\",\n        \"repositoryURL\": \"https://github.com/vapor/http.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"272b22be8cb3364e42a4701c2e0676e37480ec5a\",\n          \"version\": \"3.1.5\"\n        }\n      },\n      {\n        \"package\": \"Leaf\",\n        \"repositoryURL\": \"https://github.com/vapor/leaf.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"d35f54cbac723e673f9bd5078361eea74049c8d7\",\n          \"version\": \"3.0.2\"\n        }\n      },\n      {\n        \"package\": \"Lingo\",\n        \"repositoryURL\": \"https://github.com/miroslavkovac/Lingo.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"f21f388b04239641b3e88d14f21762125faa9857\",\n          \"version\": \"3.0.5\"\n        }\n      },\n      {\n        \"package\": \"LingoVapor\",\n        \"repositoryURL\": \"https://github.com/vapor-community/lingo-vapor.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"56fdc7e7d531907ff97024a4aff8db90bcf0f965\",\n          \"version\": \"3.0.0\"\n        }\n      },\n      {\n        \"package\": \"Multipart\",\n        \"repositoryURL\": \"https://github.com/vapor/multipart.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"e57007c23a52b68e44ebdfc70cbe882a7c4f1ec3\",\n          \"version\": \"3.0.2\"\n        }\n      },\n      {\n        \"package\": \"Routing\",\n        \"repositoryURL\": \"https://github.com/vapor/routing.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"3219e328491b0853b8554c5a694add344d2c6cfb\",\n          \"version\": \"3.0.1\"\n        }\n      },\n      {\n        \"package\": \"Service\",\n        \"repositoryURL\": \"https://github.com/vapor/service.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"281a70b69783891900be31a9e70051b6fe19e146\",\n          \"version\": \"1.0.0\"\n        }\n      },\n      {\n        \"package\": \"swift-nio\",\n        \"repositoryURL\": \"https://github.com/apple/swift-nio.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"176dd6e8564d60e936b76f3a896d667ae3acba31\",\n          \"version\": \"1.10.0\"\n        }\n      },\n      {\n        \"package\": \"swift-nio-ssl\",\n        \"repositoryURL\": \"https://github.com/apple/swift-nio-ssl.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"db16c3a90b101bb53b26a58867a344ad428072e0\",\n          \"version\": \"1.3.2\"\n        }\n      },\n      {\n        \"package\": \"swift-nio-ssl-support\",\n        \"repositoryURL\": \"https://github.com/apple/swift-nio-ssl-support.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"c02eec4e0e6d351cd092938cf44195a8e669f555\",\n          \"version\": \"1.0.0\"\n        }\n      },\n      {\n        \"package\": \"swift-nio-zlib-support\",\n        \"repositoryURL\": \"https://github.com/apple/swift-nio-zlib-support.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"37760e9a52030bb9011972c5213c3350fa9d41fd\",\n          \"version\": \"1.0.0\"\n        }\n      },\n      {\n        \"package\": \"TemplateKit\",\n        \"repositoryURL\": \"https://github.com/vapor/template-kit.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"db35b1c35aabd0f5db3abca0cfda7becfe9c43e2\",\n          \"version\": \"1.1.0\"\n        }\n      },\n      {\n        \"package\": \"URLEncodedForm\",\n        \"repositoryURL\": \"https://github.com/vapor/url-encoded-form.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"932024f363ee5ff59059cf7d67194a1c271d3d0c\",\n          \"version\": \"1.0.5\"\n        }\n      },\n      {\n        \"package\": \"Validation\",\n        \"repositoryURL\": \"https://github.com/vapor/validation.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"4de213cf319b694e4ce19e5339592601d4dd3ff6\",\n          \"version\": \"2.1.1\"\n        }\n      },\n      {\n        \"package\": \"Vapor\",\n        \"repositoryURL\": \"https://github.com/vapor/vapor.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"157d3b15336caa882662cc75024dd04b2e225246\",\n          \"version\": \"3.1.0\"\n        }\n      },\n      {\n        \"package\": \"WebSocket\",\n        \"repositoryURL\": \"https://github.com/vapor/websocket.git\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"eb4277f75f1d96a3d15c852cdd89af1799093dcd\",\n          \"version\": \"1.1.0\"\n        }\n      }\n    ]\n  },\n  \"version\": 1\n}\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:4.0\nimport PackageDescription\n\nlet package = Package(\n    name: \"GitignoreIO\",\n    dependencies: [\n        .package(\n            url: \"https://github.com/vapor/vapor.git\",\n            from: \"3.1.0\"\n        ),\n        .package(\n            url: \"https://github.com/vapor/leaf.git\",\n            from: \"3.0.0\"\n        ),\n        .package(\n            url: \"https://github.com/vapor-community/lingo-vapor.git\",\n            from: \"3.0.0\"\n        )\n    ],\n    targets: [\n        .target(\n            name: \"App\",\n            dependencies: [\"Vapor\", \"Leaf\", \"LingoVapor\"],\n            exclude: [\"Config\", \"Localization\", \"Public\", \"Resources\", \"data\", \"wiki\"]\n        ),\n        .target(\n            name: \"Run\",\n            dependencies: [\"App\"],\n            exclude: [\"Config\", \"Localization\", \"Public\", \"Resources\", \"data\", \"wiki\"]\n        ),\n        .testTarget(\n            name: \"AppTests\",\n            dependencies: [\"App\"]\n        )\n    ]\n)\n\n\n  \n"
  },
  {
    "path": "Procfile",
    "content": "web: Run serve --env production --port $PORT --hostname 0.0.0.0\n"
  },
  {
    "path": "Public/assets/main.css",
    "content": "*,:after,:before{box-sizing:border-box}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}button,input,select{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}.input-group>.form-control{background-color:#fff;-ms-flex:1 1 0%;flex:1 1 0%;margin-bottom:0;min-width:0}.input-group{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative;width:100%}.input-group-append{display:-ms-flexbox;display:flex;margin-left:-1px}.input-group-append .btn{cursor:pointer;position:relative;z-index:2}.btn{border:1px solid transparent}.btn:focus{outline:0}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;overflow:hidden;padding-left:8px;padding-right:20px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-left:20px;padding-right:8px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{border:none;box-sizing:border-box;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;left:-100000px;position:absolute;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{box-sizing:border-box;padding:4px;width:100%}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{background-color:#fff;border:0;display:block;filter:alpha(opacity=0);height:auto;left:0;margin:0;min-height:100%;min-width:100%;opacity:0;padding:0;position:fixed;top:0;width:auto;z-index:99}.select2-hidden-accessible{clip:rect(0 0 0 0)!important;border:0!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;right:1px;top:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px;margin-top:5px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{-webkit-appearance:textfield;background:transparent;border:none;box-shadow:none;outline:0}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;background-image:-webkit-linear-gradient(top,#fff 50%,#eee);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;border:1px solid #aaa;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFFFFFFF\",endColorstr=\"#FFEEEEEE\",GradientType=0);outline:0}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;border:none;border-bottom-right-radius:4px;border-left:1px solid #aaa;border-top-right-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFEEEEEE\",endColorstr=\"#FFCCCCCC\",GradientType=0);height:26px;position:absolute;right:1px;top:1px;width:20px}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-radius:0;border-bottom-left-radius:4px;border-right:1px solid #aaa;border-top-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{background-image:-webkit-linear-gradient(top,#fff,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;border-top:none;border-top-left-radius:0;border-top-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFFFFFFF\",endColorstr=\"#FFEEEEEE\",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{background-image:-webkit-linear-gradient(top,#eee 50%,#fff);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#FFEEEEEE\",endColorstr=\"#FFFFFFFF\",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{box-shadow:none;outline:0}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}.select2-container{display:block}.select2-container :focus{outline:0}.input-group .select2-container--toptal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:calc(100% - 121px)}.input-group .input-group-append{height:46px;width:120px}@media (max-width:767px){.input-group{flex-direction:column}.input-group .select2-container--toptal{max-width:100%;width:100%!important}.input-group .input-group-append{margin-left:0;margin-top:12px;width:100%}}.select2-container--toptal .select2-selection{background-color:#fff;border:1px solid #d8d9dc;border-radius:0;box-shadow:none;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;width:100%}.select2-container--toptal .select2-selection .select2-search__field{-webkit-appearance:none;border-radius:0;caret-color:#204ecf;color:#000;font-size:16px;height:24px;line-height:24px;margin:10px 0}@media (min-width:768px){.select2-container--toptal .select2-selection .select2-search__field{font-size:13px;height:20px;line-height:20px;margin:12px 0}}.select2-container--toptal .select2-selection .select2-search__field::-webkit-search-decoration{-webkit-appearance:none}.select2-container--toptal .select2-selection .select2-search__field::placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field::-webkit-input-placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field:-ms-input-placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field::-moz-placeholder{color:#d8d9dc}.select2-container--toptal.select2-container--focus .select2-selection{border-color:#204ecf;box-shadow:none}.select2-container--toptal .select2-dropdown{background-color:#fff;border:none;box-shadow:0 4px 8px 0 rgba(0,0,0,.08);color:#000;font-size:13px;line-height:16px;margin-top:0}.select2-container--toptal .select2-dropdown .select2-results__option[aria-selected=true]{background-color:#d8d9dc}.select2-container--toptal .select2-results__option{padding:10px}.select2-container--toptal .select2-results__message,.select2-container--toptal .select2-results__option--highlighted,.select2-container--toptal .select2-results__option--highlighted.select2-results__option[aria-selected=true]{background-color:rgba(32,78,207,.08)}.select2-container--toptal .select2-results>.select2-results__options{max-height:15em;overflow-y:auto}.select2-container--toptal .select2-selection--multiple{min-height:46px}.select2-container--toptal .select2-selection--multiple .select2-selection__rendered{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;list-style:none;margin:0;padding:0 10px;width:100%}.select2-container--toptal .select2-selection--multiple .select2-selection__choice{border:1px solid #d8d9dc;border-radius:100px;color:#204ecf;cursor:pointer;float:left;font-size:12px;font-weight:600;line-height:22px;margin:10px 6px 0 0;padding:0 12px}.select2-container--toptal .select2-selection--multiple .select2-selection__choice__remove{color:#455065;float:right;font-size:18px;font-weight:400;margin-left:8px}.select2-container--toptal .select2-selection--multiple .select2-selection__choice__remove:hover{color:#a6abb5}.input-group-append>.btn-gitignore{background:#00cc83;border-radius:0;color:#fff;font-size:14px;line-height:16px;text-align:center;-webkit-transition:background .35s cubic-bezier(0,0,.2,1);transition:background .35s cubic-bezier(0,0,.2,1);width:100%}.input-group-append>.btn-gitignore:focus{border-color:#204ecf;box-shadow:none}.input-group-append>.btn-gitignore:hover{background:#00a369}.internal-linking{border:0;flex-basis:56px;flex-shrink:0;height:56px;overflow:hidden;width:100vw}@media (max-width:768px){.internal-linking{flex-basis:32px;height:32px}}@keyframes ticker{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.internal-linking__container{align-items:center;background-color:#0f256e;color:#fff;display:flex;flex-direction:row;font-family:Proxima Nova,Arial,sans-serif;font-weight:400;height:56px;overflow:hidden;width:100%}.internal-linking__container .internal-linking__title{align-items:center;background-color:#fff;color:#204ecf;display:flex;flex-direction:row;flex-shrink:0;font-size:10px;font-weight:600;height:100%;line-height:12px;text-transform:uppercase;z-index:1}.internal-linking__container .internal-linking__title img{margin:22px 8px 18px 24px}.internal-linking__container .internal-linking__title span{margin:16px 24px 16px 0;white-space:nowrap}.internal-linking__container .internal-linking__ticker-list{animation-duration:180s;animation-iteration-count:infinite;animation-name:ticker;animation-timing-function:linear;display:flex;flex-direction:row;font-size:12px;line-height:16px}.internal-linking__container .internal-linking__ticker-list:hover{animation-play-state:paused}.internal-linking__container .internal-linking__ticker-list .internal-linking__link{color:#fff;margin:20px 28px;padding:5px 12px 3px;text-decoration:underline;white-space:nowrap}@media screen and (max-width:768px){.internal-linking__container{border:none;box-shadow:none;height:32px}.internal-linking__container .internal-linking__title img{margin:8px}.internal-linking__container .internal-linking__title span{font-size:8px;line-height:10px;margin:6px 16px 6px 0}}@media (max-width:768px){.internal-linking__container .internal-linking__ticker-list .internal-linking__link{border:1px solid #fff;border-radius:16px;margin:4px 16px;text-decoration:none}}@font-face{font-display:swap;font-family:Proxima Nova;font-style:normal;font-weight:400;src:url(../fonts/ProximaNova-Regular.woff2) format(\"woff2\"),url(../fonts/ProximaNova-Regular.woff) format(\"woff\"),url(../fonts/ProximaNova-Regular.otf) format(\"opentype\")}@font-face{font-display:swap;font-family:Proxima Nova;font-style:normal;font-weight:600;src:url(../fonts/ProximaNova-Semibold.woff2) format(\"woff2\"),url(../fonts/ProximaNova-Semibold.woff) format(\"woff\"),url(../fonts/ProximaNova-Semibold.otf) format(\"opentype\")}body,html{background-color:transparent;height:100%}body{color:#000;display:flex;flex-direction:column;font-family:Proxima Nova,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.5;margin:0;min-width:320px}a{color:#204ecf;text-decoration:none}a:focus,a:hover{text-decoration:underline}.content-wrapper{display:flex;flex-direction:column;min-height:100%;padding-top:72px;position:relative}header{background:#204ecf;color:#fff;height:72px;overflow-x:hidden;position:fixed;top:0;width:100%;z-index:1100}header .container{align-items:center;display:flex;height:100%;justify-content:space-between}header a{display:block;line-height:0}header .header-left-column{align-items:center;display:flex;padding:0 10px}header .header-left-column a{padding-right:16px}header .header-left-column a img{height:30px;min-width:100px}header .header-left-column h1{border-left:1px solid #ebeced;font-size:17px;line-height:28px;margin:0;padding-left:16px}header .header-right-column img{height:24px}main{flex:1 0 400px;width:100%}@media (min-width:768px){main{display:flex}}main .masthead{margin:0 auto;max-width:580px;overflow-y:auto;text-align:center}main .masthead-top{align-items:center;display:flex;flex-direction:column;margin-bottom:25px;margin-top:120px}@media (min-width:768px){main .masthead-top{margin-top:180px}}@media (max-width:320px){main .masthead-top{margin-top:42px}}main .masthead-top img{height:auto;max-width:370px;width:100%}main .masthead-top h2{color:#455065;font-size:16px;line-height:16px;margin:20px 0}main .input-group{overflow:auto}main .masthead-bottom{margin-bottom:60px;margin-top:40px}main .masthead-bottom ul{display:flex;flex-direction:column;justify-content:center;list-style:none;margin:0;padding:0}main .masthead-bottom ul li{margin-bottom:16px}main .masthead-bottom ul li a{font-size:16px;line-height:16px;padding-bottom:8px}main .masthead-bottom ul li a:focus,main .masthead-bottom ul li a:hover{border-bottom:1px solid #204ecf;text-decoration:none}footer{color:#000;height:142px;padding-bottom:64px}footer>div{margin:0 auto;max-width:624px;padding:0 16px;width:100%}footer .carbon-wrap{align-items:center;display:flex;justify-content:center}footer a.carbon-img{height:78px}footer a.carbon-img img{height:100%}footer a.carbon-text{font-size:12px;line-height:20px;padding-left:8px}footer .carbon-poweredby{display:none}.container{margin-left:auto;margin-right:auto;max-width:100%;padding-left:16px;padding-right:16px;position:relative}@media (min-width:1200px){.container{max-width:1344px}}@media (min-width:576px){.container{width:540px}main .masthead-bottom ul{flex-direction:row}main .masthead-bottom ul li:not(:first-child):before{background-color:#a6abb5;content:\"\";display:inline-block;height:12px;margin:0 21px;width:1px}}@media (min-width:768px){.container{width:720px}}@media (min-width:992px){.container{width:960px}}@media (min-width:1200px){.container{width:1376px}header .header-right-column{padding-right:98px}}#input-gitignore{-webkit-appearance:none;border:1px solid #d8d9dc;border-radius:0;height:46px;line-height:46px}#input-gitignore::-ms-expand{display:none}#internal-linking{border:0;box-shadow:0 -1px 3px 0 rgba(0,0,0,.1);height:56px}@media (max-width:768px){#internal-linking{height:32px}}"
  },
  {
    "path": "Public/assets/main.js",
    "content": "/*! For license information please see main.js.LICENSE.txt */\n(()=>{var e={755:function(e,t){var n;!function(t,n){\"use strict\";\"object\"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return n(e)}:n(t)}(\"undefined\"!=typeof window?window:this,(function(r,i){\"use strict\";var o=[],s=Object.getPrototypeOf,a=o.slice,l=o.flat?function(e){return o.flat.call(e)}:function(e){return o.concat.apply([],e)},c=o.push,u=o.indexOf,p={},d=p.toString,f=p.hasOwnProperty,h=f.toString,g=h.call(Object),m={},v=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},y=function(e){return null!=e&&e===e.window},b=r.document,x={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var r,i,o=(n=n||b).createElement(\"script\");if(o.text=e,t)for(r in x)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function _(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?p[d.call(e)]||\"object\":typeof e}var T=\"3.6.0\",C=function(e,t){return new C.fn.init(e,t)};function A(e){var t=!!e&&\"length\"in e&&e.length,n=_(e);return!v(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}C.fn=C.prototype={jquery:T,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(e){return null==e?a.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=C.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return C.each(this,e)},map:function(e){return this.pushStack(C.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:c,sort:o.sort,splice:o.splice},C.extend=C.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,l=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[a]||{},a++),\"object\"==typeof s||v(s)||(s={}),a===l&&(s=this,a--);a<l;a++)if(null!=(e=arguments[a]))for(t in e)r=e[t],\"__proto__\"!==t&&s!==r&&(c&&r&&(C.isPlainObject(r)||(i=Array.isArray(r)))?(n=s[t],o=i&&!Array.isArray(n)?[]:i||C.isPlainObject(n)?n:{},i=!1,s[t]=C.extend(c,o,r)):void 0!==r&&(s[t]=r));return s},C.extend({expando:\"jQuery\"+(T+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==d.call(e)||(t=s(e))&&(\"function\"!=typeof(n=f.call(t,\"constructor\")&&t.constructor)||h.call(n)!==g))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){w(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(A(e))for(n=e.length;r<n&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(A(Object(e))?C.merge(n,\"string\"==typeof e?[e]:e):c.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,s=!n;i<o;i++)!t(e[i],i)!==s&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,s=[];if(A(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return l(s)},guid:1,support:m}),\"function\"==typeof Symbol&&(C.fn[Symbol.iterator]=o[Symbol.iterator]),C.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),(function(e,t){p[\"[object \"+t+\"]\"]=t.toLowerCase()}));var E=function(e){var t,n,r,i,o,s,a,l,c,u,p,d,f,h,g,m,v,y,b,x=\"sizzle\"+1*new Date,w=e.document,_=0,T=0,C=le(),A=le(),E=le(),S=le(),$=function(e,t){return e===t&&(p=!0),0},D={}.hasOwnProperty,k=[],j=k.pop,L=k.push,O=k.push,q=k.slice,N=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",H=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",I=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",R=\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\"+I+\")(?:\"+H+\"*([*^$|!~]?=)\"+H+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+I+\"))|)\"+H+\"*\\\\]\",M=\":(\"+I+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+R+\")*)|.*)\\\\)|)\",U=new RegExp(H+\"+\",\"g\"),F=new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]+$\",\"g\"),W=new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*,[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),B=new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*([>+~]|[\\\\x20\\\\t\\\\r\\\\n\\\\f])[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),z=new RegExp(H+\"|>\"),G=new RegExp(M),Y=new RegExp(\"^\"+I+\"$\"),X={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+R),PSEUDO:new RegExp(\"^\"+M),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*(even|odd|(([+-]|)(\\\\d*)n|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:([+-]|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\\\\d+)|))[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+P+\")$\",\"i\"),needsContext:new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*((?:-\\\\d)?\\\\d*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)(?=[^-]|$)\",\"i\")},K=/HTML$/i,V=/^(?:input|select|textarea|button)$/i,Q=/^h\\d$/i,Z=/^[^{]+\\{\\s*\\[native \\w/,J=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){d()},se=xe((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{O.apply(k=q.call(w.childNodes),w.childNodes),k[w.childNodes.length].nodeType}catch(e){O={apply:k.length?function(e,t){L.apply(e,q.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ae(e,t,r,i){var o,a,c,u,p,h,v,y=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(d(t),t=t||f,g)){if(11!==w&&(p=J.exec(e)))if(o=p[1]){if(9===w){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(y&&(c=y.getElementById(o))&&b(t,c)&&c.id===o)return r.push(c),r}else{if(p[2])return O.apply(r,t.getElementsByTagName(e)),r;if((o=p[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+\" \"]&&(!m||!m.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===w&&(z.test(e)||B.test(e))){for((y=ee.test(e)&&ve(t.parentNode)||t)===t&&n.scope||((u=t.getAttribute(\"id\"))?u=u.replace(re,ie):t.setAttribute(\"id\",u=x)),a=(h=s(e)).length;a--;)h[a]=(u?\"#\"+u:\":scope\")+\" \"+be(h[a]);v=h.join(\",\")}try{return O.apply(r,y.querySelectorAll(v)),r}catch(t){S(e,!0)}finally{u===x&&t.removeAttribute(\"id\")}}}return l(e.replace(F,\"$1\"),t,r,i)}function le(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function ce(e){return e[x]=!0,e}function ue(e){var t=f.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&se(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function me(e){return ce((function(t){return t=+t,ce((function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))}))}))}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ae.support={},o=ae.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!K.test(t||n&&n.nodeName||\"HTML\")},d=ae.setDocument=function(e){var t,i,s=e?e.ownerDocument||e:w;return s!=f&&9===s.nodeType&&s.documentElement?(h=(f=s).documentElement,g=!o(f),w!=f&&(i=f.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ue((function(e){return h.appendChild(e).appendChild(f.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ue((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ue((function(e){return e.appendChild(f.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=Z.test(f.getElementsByClassName),n.getById=ue((function(e){return h.appendChild(e).id=x,!f.getElementsByName||!f.getElementsByName(x).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],m=[],(n.qsa=Z.test(f.querySelectorAll))&&(ue((function(e){var t;h.appendChild(e).innerHTML=\"<a id='\"+x+\"'></a><select id='\"+x+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&m.push(\"[*^$]=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||m.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:value|\"+P+\")\"),e.querySelectorAll(\"[id~=\"+x+\"-]\").length||m.push(\"~=\"),(t=f.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||m.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||m.push(\":checked\"),e.querySelectorAll(\"a#\"+x+\"+*\").length||m.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),m.push(\"[\\\\r\\\\n\\\\f]\")})),ue((function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=f.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&m.push(\"name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&m.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&m.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),m.push(\",.*:\")}))),(n.matchesSelector=Z.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue((function(e){n.disconnectedMatch=y.call(e,\"*\"),y.call(e,\"[s!='']:x\"),v.push(\"!=\",M)})),m=m.length&&new RegExp(m.join(\"|\")),v=v.length&&new RegExp(v.join(\"|\")),t=Z.test(h.compareDocumentPosition),b=t||Z.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=t?function(e,t){if(e===t)return p=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==f||e.ownerDocument==w&&b(w,e)?-1:t==f||t.ownerDocument==w&&b(w,t)?1:u?N(u,e)-N(u,t):0:4&r?-1:1)}:function(e,t){if(e===t)return p=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e==f?-1:t==f?1:i?-1:o?1:u?N(u,e)-N(u,t):0;if(i===o)return de(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?de(s[r],a[r]):s[r]==w?-1:a[r]==w?1:0},f):f},ae.matches=function(e,t){return ae(e,null,null,t)},ae.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&g&&!S[t+\" \"]&&(!v||!v.test(t))&&(!m||!m.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){S(t,!0)}return ae(t,f,null,[e]).length>0},ae.contains=function(e,t){return(e.ownerDocument||e)!=f&&d(e),b(e,t)},ae.attr=function(e,t){(e.ownerDocument||e)!=f&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},ae.escape=function(e){return(e+\"\").replace(re,ie)},ae.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},ae.uniqueSort=function(e){var t,r=[],i=0,o=0;if(p=!n.detectDuplicates,u=!n.sortStable&&e.slice(0),e.sort($),p){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return u=null,e},i=ae.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=ae.selectors={cacheLength:50,createPseudo:ce,match:X,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||ae.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&ae.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return X.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&G.test(n)&&(t=s(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+\" \"];return t||(t=new RegExp(\"(^|[\\\\x20\\\\t\\\\r\\\\n\\\\f])\"+e+\"(\"+H+\"|$)\"))&&C(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=ae.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(U,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),s=\"last\"!==e.slice(-4),a=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,p,d,f,h,g=o!==s?\"nextSibling\":\"previousSibling\",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[s?m.firstChild:m.lastChild],s&&y){for(b=(f=(c=(u=(p=(d=m)[x]||(d[x]={}))[d.uniqueID]||(p[d.uniqueID]={}))[e]||[])[0]===_&&c[1])&&c[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(b=f=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){u[e]=[_,f,b];break}}else if(y&&(b=f=(c=(u=(p=(d=t)[x]||(d[x]={}))[d.uniqueID]||(p[d.uniqueID]={}))[e]||[])[0]===_&&c[1]),!1===b)for(;(d=++f&&d&&d[g]||(b=f=0)||h.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&((u=(p=d[x]||(d[x]={}))[d.uniqueID]||(p[d.uniqueID]={}))[e]=[_,b]),d!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ae.error(\"unsupported pseudo: \"+e);return i[x]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ce((function(e,n){for(var r,o=i(e,t),s=o.length;s--;)e[r=N(e,o[s])]=!(n[r]=o[s])})):function(e){return i(e,0,n)}):i}},pseudos:{not:ce((function(e){var t=[],n=[],r=a(e.replace(F,\"$1\"));return r[x]?ce((function(e,t,n,i){for(var o,s=r(e,null,i,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:ce((function(e){return function(t){return ae(e,t).length>0}})),contains:ce((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:ce((function(e){return Y.test(e||\"\")||ae.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return V.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:me((function(){return[0]})),last:me((function(e,t){return[t-1]})),eq:me((function(e,t,n){return[n<0?n+t:n]})),even:me((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:me((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:me((function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e})),gt:me((function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e}))}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=he(t);function ye(){}function be(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function xe(e,t,n){var r=t.dir,i=t.next,o=i||r,s=n&&\"parentNode\"===o,a=T++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||s)return e(t,n,i);return!1}:function(t,n,l){var c,u,p,d=[_,a];if(l){for(;t=t[r];)if((1===t.nodeType||s)&&e(t,n,l))return!0}else for(;t=t[r];)if(1===t.nodeType||s)if(u=(p=t[x]||(t[x]={}))[t.uniqueID]||(p[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((c=u[o])&&c[0]===_&&c[1]===a)return d[2]=c[2];if(u[o]=d,d[2]=e(t,n,l))return!0}return!1}}function we(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function _e(e,t,n,r,i){for(var o,s=[],a=0,l=e.length,c=null!=t;a<l;a++)(o=e[a])&&(n&&!n(o,r,i)||(s.push(o),c&&t.push(a)));return s}function Te(e,t,n,r,i,o){return r&&!r[x]&&(r=Te(r)),i&&!i[x]&&(i=Te(i,o)),ce((function(o,s,a,l){var c,u,p,d=[],f=[],h=s.length,g=o||function(e,t,n){for(var r=0,i=t.length;r<i;r++)ae(e,t[r],n);return n}(t||\"*\",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:_e(g,d,e,a,l),v=n?i||(o?e:h||r)?[]:s:m;if(n&&n(m,v,a,l),r)for(c=_e(v,f),r(c,[],a,l),u=c.length;u--;)(p=c[u])&&(v[f[u]]=!(m[f[u]]=p));if(o){if(i||e){if(i){for(c=[],u=v.length;u--;)(p=v[u])&&c.push(m[u]=p);i(null,v=[],c,l)}for(u=v.length;u--;)(p=v[u])&&(c=i?N(o,p):d[u])>-1&&(o[c]=!(s[c]=p))}}else v=_e(v===s?v.splice(h,v.length):v),i?i(null,s,v,l):O.apply(s,v)}))}function Ce(e){for(var t,n,i,o=e.length,s=r.relative[e[0].type],a=s||r.relative[\" \"],l=s?1:0,u=xe((function(e){return e===t}),a,!0),p=xe((function(e){return N(t,e)>-1}),a,!0),d=[function(e,n,r){var i=!s&&(r||n!==c)||((t=n).nodeType?u(e,n,r):p(e,n,r));return t=null,i}];l<o;l++)if(n=r.relative[e[l].type])d=[xe(we(d),n)];else{if((n=r.filter[e[l].type].apply(null,e[l].matches))[x]){for(i=++l;i<o&&!r.relative[e[i].type];i++);return Te(l>1&&we(d),l>1&&be(e.slice(0,l-1).concat({value:\" \"===e[l-2].type?\"*\":\"\"})).replace(F,\"$1\"),n,l<i&&Ce(e.slice(l,i)),i<o&&Ce(e=e.slice(i)),i<o&&be(e))}d.push(n)}return we(d)}return ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,s=ae.tokenize=function(e,t){var n,i,o,s,a,l,c,u=A[e+\" \"];if(u)return t?0:u.slice(0);for(a=e,l=[],c=r.preFilter;a;){for(s in n&&!(i=W.exec(a))||(i&&(a=a.slice(i[0].length)||a),l.push(o=[])),n=!1,(i=B.exec(a))&&(n=i.shift(),o.push({value:n,type:i[0].replace(F,\" \")}),a=a.slice(n.length)),r.filter)!(i=X[s].exec(a))||c[s]&&!(i=c[s](i))||(n=i.shift(),o.push({value:n,type:s,matches:i}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ae.error(e):A(e,l).slice(0)},a=ae.compile=function(e,t){var n,i=[],o=[],a=E[e+\" \"];if(!a){for(t||(t=s(e)),n=t.length;n--;)(a=Ce(t[n]))[x]?i.push(a):o.push(a);(a=E(e,function(e,t){var n=t.length>0,i=e.length>0,o=function(o,s,a,l,u){var p,h,m,v=0,y=\"0\",b=o&&[],x=[],w=c,T=o||i&&r.find.TAG(\"*\",u),C=_+=null==w?1:Math.random()||.1,A=T.length;for(u&&(c=s==f||s||u);y!==A&&null!=(p=T[y]);y++){if(i&&p){for(h=0,s||p.ownerDocument==f||(d(p),a=!g);m=e[h++];)if(m(p,s||f,a)){l.push(p);break}u&&(_=C)}n&&((p=!m&&p)&&v--,o&&b.push(p))}if(v+=y,n&&y!==v){for(h=0;m=t[h++];)m(b,x,s,a);if(o){if(v>0)for(;y--;)b[y]||x[y]||(x[y]=j.call(l));x=_e(x)}O.apply(l,x),u&&!o&&x.length>0&&v+t.length>1&&ae.uniqueSort(l)}return u&&(_=C,c=w),b};return n?ce(o):o}(o,i))).selector=e}return a},l=ae.select=function(e,t,n,i){var o,l,c,u,p,d=\"function\"==typeof e&&e,f=!i&&s(e=d.selector||e);if(n=n||[],1===f.length){if((l=f[0]=f[0].slice(0)).length>2&&\"ID\"===(c=l[0]).type&&9===t.nodeType&&g&&r.relative[l[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(o=X.needsContext.test(e)?0:l.length;o--&&(c=l[o],!r.relative[u=c.type]);)if((p=r.find[u])&&(i=p(c.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(o,1),!(e=i.length&&be(l)))return O.apply(n,i),n;break}}return(d||a(e,f))(i,t,!g,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=x.split(\"\").sort($).join(\"\")===x,n.detectDuplicates=!!p,d(),n.sortDetached=ue((function(e){return 1&e.compareDocumentPosition(f.createElement(\"fieldset\"))})),ue((function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")}))||pe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ue((function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||pe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ue((function(e){return null==e.getAttribute(\"disabled\")}))||pe(P,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),ae}(r);C.find=E,C.expr=E.selectors,C.expr[\":\"]=C.expr.pseudos,C.uniqueSort=C.unique=E.uniqueSort,C.text=E.getText,C.isXMLDoc=E.isXML,C.contains=E.contains,C.escapeSelector=E.escape;var S=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&C(e).is(n))break;r.push(e)}return r},$=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=C.expr.match.needsContext;function k(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var j=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function L(e,t,n){return v(t)?C.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?C.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?C.grep(e,(function(e){return u.call(t,e)>-1!==n})):C.filter(t,e,n)}C.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?C.find.matchesSelector(r,e)?[r]:[]:C.find.matches(e,C.grep(t,(function(e){return 1===e.nodeType})))},C.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(C(e).filter((function(){for(t=0;t<r;t++)if(C.contains(i[t],this))return!0})));for(n=this.pushStack([]),t=0;t<r;t++)C.find(e,i[t],n);return r>1?C.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,\"string\"==typeof e&&D.test(e)?C(e):e||[],!1).length}});var O,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(C.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||O,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:b,!0)),j.test(r[1])&&C.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=b.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(C):C.makeArray(e,this)}).prototype=C.fn,O=C(b);var N=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t=C(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(C.contains(this,t[e]))return!0}))},closest:function(e,t){var n,r=0,i=this.length,o=[],s=\"string\"!=typeof e&&C(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&C.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?C.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?u.call(C(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),C.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,\"parentNode\")},parentsUntil:function(e,t,n){return S(e,\"parentNode\",n)},next:function(e){return H(e,\"nextSibling\")},prev:function(e){return H(e,\"previousSibling\")},nextAll:function(e){return S(e,\"nextSibling\")},prevAll:function(e){return S(e,\"previousSibling\")},nextUntil:function(e,t,n){return S(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return S(e,\"previousSibling\",n)},siblings:function(e){return $((e.parentNode||{}).firstChild,e)},children:function(e){return $(e.firstChild)},contents:function(e){return null!=e.contentDocument&&s(e.contentDocument)?e.contentDocument:(k(e,\"template\")&&(e=e.content||e),C.merge([],e.childNodes))}},(function(e,t){C.fn[e]=function(n,r){var i=C.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=C.filter(r,i)),this.length>1&&(P[e]||C.uniqueSort(i),N.test(e)&&i.reverse()),this.pushStack(i)}}));var I=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function U(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}C.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return C.each(e.match(I)||[],(function(e,n){t[n]=!0})),t}(e):C.extend({},e);var t,n,r,i,o=[],s=[],a=-1,l=function(){for(i=i||e.once,r=t=!0;s.length;a=-1)for(n=s.shift();++a<o.length;)!1===o[a].apply(n[0],n[1])&&e.stopOnFalse&&(a=o.length,n=!1);e.memory||(n=!1),t=!1,i&&(o=n?[]:\"\")},c={add:function(){return o&&(n&&!t&&(a=o.length-1,s.push(n)),function t(n){C.each(n,(function(n,r){v(r)?e.unique&&c.has(r)||o.push(r):r&&r.length&&\"string\"!==_(r)&&t(r)}))}(arguments),n&&!t&&l()),this},remove:function(){return C.each(arguments,(function(e,t){for(var n;(n=C.inArray(t,o,n))>-1;)o.splice(n,1),n<=a&&a--})),this},has:function(e){return e?C.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=s=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=s=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},C.extend({Deferred:function(e){var t=[[\"notify\",\"progress\",C.Callbacks(\"memory\"),C.Callbacks(\"memory\"),2],[\"resolve\",\"done\",C.Callbacks(\"once memory\"),C.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",C.Callbacks(\"once memory\"),C.Callbacks(\"once memory\"),1,\"rejected\"]],n=\"pending\",i={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return C.Deferred((function(n){C.each(t,(function(t,r){var i=v(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&v(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(e,n,i){var o=0;function s(e,t,n,i){return function(){var a=this,l=arguments,c=function(){var r,c;if(!(e<o)){if((r=n.apply(a,l))===t.promise())throw new TypeError(\"Thenable self-resolution\");c=r&&(\"object\"==typeof r||\"function\"==typeof r)&&r.then,v(c)?i?c.call(r,s(o,t,R,i),s(o,t,M,i)):(o++,c.call(r,s(o,t,R,i),s(o,t,M,i),s(o,t,R,t.notifyWith))):(n!==R&&(a=void 0,l=[r]),(i||t.resolveWith)(a,l))}},u=i?c:function(){try{c()}catch(r){C.Deferred.exceptionHook&&C.Deferred.exceptionHook(r,u.stackTrace),e+1>=o&&(n!==M&&(a=void 0,l=[r]),t.rejectWith(a,l))}};e?u():(C.Deferred.getStackHook&&(u.stackTrace=C.Deferred.getStackHook()),r.setTimeout(u))}}return C.Deferred((function(r){t[0][3].add(s(0,r,v(i)?i:R,r.notifyWith)),t[1][3].add(s(0,r,v(e)?e:R)),t[2][3].add(s(0,r,v(n)?n:M))})).promise()},promise:function(e){return null!=e?C.extend(e,i):i}},o={};return C.each(t,(function(e,r){var s=r[2],a=r[5];i[r[1]]=s.add,a&&s.add((function(){n=a}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),s.add(r[3].fire),o[r[0]]=function(){return o[r[0]+\"With\"](this===o?void 0:this,arguments),this},o[r[0]+\"With\"]=s.fireWith})),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=a.call(arguments),o=C.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?a.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(U(e,o.done(s(n)).resolve,o.reject,!t),\"pending\"===o.state()||v(i[n]&&i[n].then)))return o.then();for(;n--;)U(i[n],s(n),o.reject);return o.promise()}});var F=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(e,t){r.console&&r.console.warn&&e&&F.test(e.name)&&r.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},C.readyException=function(e){r.setTimeout((function(){throw e}))};var W=C.Deferred();function B(){b.removeEventListener(\"DOMContentLoaded\",B),r.removeEventListener(\"load\",B),C.ready()}C.fn.ready=function(e){return W.then(e).catch((function(e){C.readyException(e)})),this},C.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==e&&--C.readyWait>0||W.resolveWith(b,[C]))}}),C.ready.then=W.then,\"complete\"===b.readyState||\"loading\"!==b.readyState&&!b.documentElement.doScroll?r.setTimeout(C.ready):(b.addEventListener(\"DOMContentLoaded\",B),r.addEventListener(\"load\",B));var z=function(e,t,n,r,i,o,s){var a=0,l=e.length,c=null==n;if(\"object\"===_(n))for(a in i=!0,n)z(e,t,a,n[a],!0,o,s);else if(void 0!==r&&(i=!0,v(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(C(e),n)})),t))for(;a<l;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:c?t.call(e):l?t(e[0],n):o},G=/^-ms-/,Y=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function K(e){return e.replace(G,\"ms-\").replace(Y,X)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=C.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[K(t)]=n;else for(r in t)i[K(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][K(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(K):(t=K(t))in r?[t]:t.match(I)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||C.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!C.isEmptyObject(t)}};var Z=new Q,J=new Q,ee=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,te=/[A-Z]/g;function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(te,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=function(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}J.set(e,t,n)}else n=void 0;return n}C.extend({hasData:function(e){return J.hasData(e)||Z.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Z.access(e,t,n)},_removeData:function(e,t){Z.remove(e,t)}}),C.fn.extend({data:function(e,t){var n,r,i,o=this[0],s=o&&o.attributes;if(void 0===e){if(this.length&&(i=J.get(o),1===o.nodeType&&!Z.get(o,\"hasDataAttrs\"))){for(n=s.length;n--;)s[n]&&0===(r=s[n].name).indexOf(\"data-\")&&(r=K(r.slice(5)),ne(o,r,i[r]));Z.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each((function(){J.set(this,e)})):z(this,(function(t){var n;if(o&&void 0===t)return void 0!==(n=J.get(o,e))||void 0!==(n=ne(o,e))?n:void 0;this.each((function(){J.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){J.remove(this,e)}))}}),C.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Z.get(e,t),n&&(!r||Array.isArray(n)?r=Z.access(e,t,C.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=C.queue(e,t),r=n.length,i=n.shift(),o=C._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){C.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Z.get(e,n)||Z.access(e,n,{empty:C.Callbacks(\"once memory\").add((function(){Z.remove(e,[t+\"queue\",n])}))})}}),C.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?C.queue(this[0],e):void 0===t?this:this.each((function(){var n=C.queue(this,e,t);C._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&C.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){C.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=C.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";s--;)(n=Z.get(o[s],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var re=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+re+\")([a-z%]*)$\",\"i\"),oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],se=b.documentElement,ae=function(e){return C.contains(e.ownerDocument,e)},le={composed:!0};se.getRootNode&&(ae=function(e){return C.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ce=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&ae(e)&&\"none\"===C.css(e,\"display\")};function ue(e,t,n,r){var i,o,s=20,a=r?function(){return r.cur()}:function(){return C.css(e,t,\"\")},l=a(),c=n&&n[3]||(C.cssNumber[t]?\"\":\"px\"),u=e.nodeType&&(C.cssNumber[t]||\"px\"!==c&&+l)&&ie.exec(C.css(e,t));if(u&&u[3]!==c){for(l/=2,c=c||u[3],u=+l||1;s--;)C.style(e,t,u+c),(1-o)*(1-(o=a()/l||.5))<=0&&(s=0),u/=o;u*=2,C.style(e,t,u+c),n=n||[]}return n&&(u=+u||+l||0,i=n[1]?u+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=u,r.end=i)),i}var pe={};function de(e){var t,n=e.ownerDocument,r=e.nodeName,i=pe[r];return i||(t=n.body.appendChild(n.createElement(r)),i=C.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===i&&(i=\"block\"),pe[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,s=e.length;o<s;o++)(r=e[o]).style&&(n=r.style.display,t?(\"none\"===n&&(i[o]=Z.get(r,\"display\")||null,i[o]||(r.style.display=\"\")),\"\"===r.style.display&&ce(r)&&(i[o]=de(r))):\"none\"!==n&&(i[o]=\"none\",Z.set(r,\"display\",n)));for(o=0;o<s;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}C.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each((function(){ce(this)?C(this).show():C(this).hide()}))}});var he,ge,me=/^(?:checkbox|radio)$/i,ve=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,ye=/^$|^module$|\\/(?:java|ecma)script/i;he=b.createDocumentFragment().appendChild(b.createElement(\"div\")),(ge=b.createElement(\"input\")).setAttribute(\"type\",\"radio\"),ge.setAttribute(\"checked\",\"checked\"),ge.setAttribute(\"name\",\"t\"),he.appendChild(ge),m.checkClone=he.cloneNode(!0).cloneNode(!0).lastChild.checked,he.innerHTML=\"<textarea>x</textarea>\",m.noCloneChecked=!!he.cloneNode(!0).lastChild.defaultValue,he.innerHTML=\"<option></option>\",m.option=!!he.lastChild;var be={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function xe(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&k(e,t)?C.merge([e],n):n}function we(e,t){for(var n=0,r=e.length;n<r;n++)Z.set(e[n],\"globalEval\",!t||Z.get(t[n],\"globalEval\"))}be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,m.option||(be.optgroup=be.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var _e=/<|&#?\\w+;/;function Te(e,t,n,r,i){for(var o,s,a,l,c,u,p=t.createDocumentFragment(),d=[],f=0,h=e.length;f<h;f++)if((o=e[f])||0===o)if(\"object\"===_(o))C.merge(d,o.nodeType?[o]:o);else if(_e.test(o)){for(s=s||p.appendChild(t.createElement(\"div\")),a=(ve.exec(o)||[\"\",\"\"])[1].toLowerCase(),l=be[a]||be._default,s.innerHTML=l[1]+C.htmlPrefilter(o)+l[2],u=l[0];u--;)s=s.lastChild;C.merge(d,s.childNodes),(s=p.firstChild).textContent=\"\"}else d.push(t.createTextNode(o));for(p.textContent=\"\",f=0;o=d[f++];)if(r&&C.inArray(o,r)>-1)i&&i.push(o);else if(c=ae(o),s=xe(p.appendChild(o),\"script\"),c&&we(s),n)for(u=0;o=s[u++];)ye.test(o.type||\"\")&&n.push(o);return p}var Ce=/^([^.]*)(?:\\.(.+)|)/;function Ae(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return b.activeElement}catch(e){}}()==(\"focus\"===t)}function $e(e,t,n,r,i,o){var s,a;if(\"object\"==typeof t){for(a in\"string\"!=typeof n&&(r=r||n,n=void 0),t)$e(e,a,n,r,t[a],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(s=i,(i=function(e){return C().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=C.guid++)),e.each((function(){C.event.add(this,t,i,r,n)}))}function De(e,t,n){n?(Z.set(e,t,!1),C.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=Z.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(C.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=a.call(arguments),Z.set(this,t,o),r=n(this,t),this[t](),o!==(i=Z.get(this,t))||r?Z.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i&&i.value}else o.length&&(Z.set(this,t,{value:C.event.trigger(C.extend(o[0],C.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Z.get(e,t)&&C.event.add(e,t,Ae)}C.event={global:{},add:function(e,t,n,r,i){var o,s,a,l,c,u,p,d,f,h,g,m=Z.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&C.find.matchesSelector(se,i),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(s=m.handle)||(s=m.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||\"\").match(I)||[\"\"]).length;c--;)f=g=(a=Ce.exec(t[c])||[])[1],h=(a[2]||\"\").split(\".\").sort(),f&&(p=C.event.special[f]||{},f=(i?p.delegateType:p.bindType)||f,p=C.event.special[f]||{},u=C.extend({type:f,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&C.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(d=l[f])||((d=l[f]=[]).delegateCount=0,p.setup&&!1!==p.setup.call(e,r,h,s)||e.addEventListener&&e.addEventListener(f,s)),p.add&&(p.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,u):d.push(u),C.event.global[f]=!0)},remove:function(e,t,n,r,i){var o,s,a,l,c,u,p,d,f,h,g,m=Z.hasData(e)&&Z.get(e);if(m&&(l=m.events)){for(c=(t=(t||\"\").match(I)||[\"\"]).length;c--;)if(f=g=(a=Ce.exec(t[c])||[])[1],h=(a[2]||\"\").split(\".\").sort(),f){for(p=C.event.special[f]||{},d=l[f=(r?p.delegateType:p.bindType)||f]||[],a=a[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),s=o=d.length;o--;)u=d[o],!i&&g!==u.origType||n&&n.guid!==u.guid||a&&!a.test(u.namespace)||r&&r!==u.selector&&(\"**\"!==r||!u.selector)||(d.splice(o,1),u.selector&&d.delegateCount--,p.remove&&p.remove.call(e,u));s&&!d.length&&(p.teardown&&!1!==p.teardown.call(e,h,m.handle)||C.removeEvent(e,f,m.handle),delete l[f])}else for(f in l)C.event.remove(e,f+t[c],n,r,!0);C.isEmptyObject(l)&&Z.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,s,a=new Array(arguments.length),l=C.event.fix(e),c=(Z.get(this,\"events\")||Object.create(null))[l.type]||[],u=C.event.special[l.type]||{};for(a[0]=l,t=1;t<arguments.length;t++)a[t]=arguments[t];if(l.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,l)){for(s=C.event.handlers.call(this,l,c),t=0;(i=s[t++])&&!l.isPropagationStopped();)for(l.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!l.isImmediatePropagationStopped();)l.rnamespace&&!1!==o.namespace&&!l.rnamespace.test(o.namespace)||(l.handleObj=o,l.data=o.data,void 0!==(r=((C.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a))&&!1===(l.result=r)&&(l.preventDefault(),l.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,l),l.result}},handlers:function(e,t){var n,r,i,o,s,a=[],l=t.delegateCount,c=e.target;if(l&&c.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&(\"click\"!==e.type||!0!==c.disabled)){for(o=[],s={},n=0;n<l;n++)void 0===s[i=(r=t[n]).selector+\" \"]&&(s[i]=r.needsContext?C(i,this).index(c)>-1:C.find(i,this,null,[c]).length),s[i]&&o.push(r);o.length&&a.push({elem:c,handlers:o})}return c=this,l<t.length&&a.push({elem:c,handlers:t.slice(l)}),a},addProp:function(e,t){Object.defineProperty(C.Event.prototype,e,{enumerable:!0,configurable:!0,get:v(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[C.expando]?e:new C.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return me.test(t.type)&&t.click&&k(t,\"input\")&&De(t,\"click\",Ae),!1},trigger:function(e){var t=this||e;return me.test(t.type)&&t.click&&k(t,\"input\")&&De(t,\"click\"),!0},_default:function(e){var t=e.target;return me.test(t.type)&&t.click&&k(t,\"input\")&&Z.get(t,\"click\")||k(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},C.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},C.Event=function(e,t){if(!(this instanceof C.Event))return new C.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ae:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&C.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[C.expando]=!0},C.Event.prototype={constructor:C.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ae,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ae,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ae,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},C.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},C.event.addProp),C.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){C.event.special[e]={setup:function(){return De(this,e,Se),!1},trigger:function(){return De(this,e),!0},_default:function(){return!0},delegateType:t}})),C.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},(function(e,t){C.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||C.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}})),C.fn.extend({on:function(e,t,n,r){return $e(this,e,t,n,r)},one:function(e,t,n,r){return $e(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,C(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each((function(){C.event.remove(this,e,n,t)}))}});var ke=/<script|<style|<link/i,je=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Le=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Oe(e,t){return k(e,\"table\")&&k(11!==t.nodeType?t:t.firstChild,\"tr\")&&C(e).children(\"tbody\")[0]||e}function qe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Ne(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Pe(e,t){var n,r,i,o,s,a;if(1===t.nodeType){if(Z.hasData(e)&&(a=Z.get(e).events))for(i in Z.remove(t,\"handle events\"),a)for(n=0,r=a[i].length;n<r;n++)C.event.add(t,i,a[i][n]);J.hasData(e)&&(o=J.access(e),s=C.extend({},o),J.set(t,s))}}function He(e,t){var n=t.nodeName.toLowerCase();\"input\"===n&&me.test(e.type)?t.checked=e.checked:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}function Ie(e,t,n,r){t=l(t);var i,o,s,a,c,u,p=0,d=e.length,f=d-1,h=t[0],g=v(h);if(g||d>1&&\"string\"==typeof h&&!m.checkClone&&je.test(h))return e.each((function(i){var o=e.eq(i);g&&(t[0]=h.call(this,i,o.html())),Ie(o,t,n,r)}));if(d&&(o=(i=Te(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(a=(s=C.map(xe(i,\"script\"),qe)).length;p<d;p++)c=i,p!==f&&(c=C.clone(c,!0,!0),a&&C.merge(s,xe(c,\"script\"))),n.call(e[p],c,p);if(a)for(u=s[s.length-1].ownerDocument,C.map(s,Ne),p=0;p<a;p++)c=s[p],ye.test(c.type||\"\")&&!Z.access(c,\"globalEval\")&&C.contains(u,c)&&(c.src&&\"module\"!==(c.type||\"\").toLowerCase()?C._evalUrl&&!c.noModule&&C._evalUrl(c.src,{nonce:c.nonce||c.getAttribute(\"nonce\")},u):w(c.textContent.replace(Le,\"\"),c,u))}return e}function Re(e,t,n){for(var r,i=t?C.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||C.cleanData(xe(r)),r.parentNode&&(n&&ae(r)&&we(xe(r,\"script\")),r.parentNode.removeChild(r));return e}C.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),l=ae(e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(s=xe(a),r=0,i=(o=xe(e)).length;r<i;r++)He(o[r],s[r]);if(t)if(n)for(o=o||xe(e),s=s||xe(a),r=0,i=o.length;r<i;r++)Pe(o[r],s[r]);else Pe(e,a);return(s=xe(a,\"script\")).length>0&&we(s,!l&&xe(e,\"script\")),a},cleanData:function(e){for(var t,n,r,i=C.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Z.expando]){if(t.events)for(r in t.events)i[r]?C.event.remove(n,r):C.removeEvent(n,r,t.handle);n[Z.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),C.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return z(this,(function(e){return void 0===e?C.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Ie(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return Ie(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Ie(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Ie(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(C.cleanData(xe(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return C.clone(this,e,t)}))},html:function(e){return z(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!ke.test(e)&&!be[(ve.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(C.cleanData(xe(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Ie(this,arguments,(function(t){var n=this.parentNode;C.inArray(this,e)<0&&(C.cleanData(xe(this)),n&&n.replaceChild(t,this))}),e)}}),C.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},(function(e,t){C.fn[e]=function(e){for(var n,r=[],i=C(e),o=i.length-1,s=0;s<=o;s++)n=s===o?this:this.clone(!0),C(i[s])[t](n),c.apply(r,n.get());return this.pushStack(r)}}));var Me=new RegExp(\"^(\"+re+\")(?!px)[a-z%]+$\",\"i\"),Ue=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=r),t.getComputedStyle(e)},Fe=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},We=new RegExp(oe.join(\"|\"),\"i\");function Be(e,t,n){var r,i,o,s,a=e.style;return(n=n||Ue(e))&&(\"\"!==(s=n.getPropertyValue(t)||n[t])||ae(e)||(s=C.style(e,t)),!m.pixelBoxStyles()&&Me.test(s)&&We.test(t)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=r,a.minWidth=i,a.maxWidth=o)),void 0!==s?s+\"\":s}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){c.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",u.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",se.appendChild(c).appendChild(u);var e=r.getComputedStyle(u);n=\"1%\"!==e.top,l=12===t(e.marginLeft),u.style.right=\"60%\",s=36===t(e.right),i=36===t(e.width),u.style.position=\"absolute\",o=12===t(u.offsetWidth/3),se.removeChild(c),u=null}}function t(e){return Math.round(parseFloat(e))}var n,i,o,s,a,l,c=b.createElement(\"div\"),u=b.createElement(\"div\");u.style&&(u.style.backgroundClip=\"content-box\",u.cloneNode(!0).style.backgroundClip=\"\",m.clearCloneStyle=\"content-box\"===u.style.backgroundClip,C.extend(m,{boxSizingReliable:function(){return e(),i},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),o},reliableTrDimensions:function(){var e,t,n,i;return null==a&&(e=b.createElement(\"table\"),t=b.createElement(\"tr\"),n=b.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px;border-collapse:separate\",t.style.cssText=\"border:1px solid\",t.style.height=\"1px\",n.style.height=\"9px\",n.style.display=\"block\",se.appendChild(e).appendChild(t).appendChild(n),i=r.getComputedStyle(t),a=parseInt(i.height,10)+parseInt(i.borderTopWidth,10)+parseInt(i.borderBottomWidth,10)===t.offsetHeight,se.removeChild(e)),a}}))}();var Ge=[\"Webkit\",\"Moz\",\"ms\"],Ye=b.createElement(\"div\").style,Xe={};function Ke(e){return C.cssProps[e]||Xe[e]||(e in Ye?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;n--;)if((e=Ge[n]+t)in Ye)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Ze={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Je={letterSpacing:\"0\",fontWeight:\"400\"};function et(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function tt(e,t,n,r,i,o){var s=\"width\"===t?1:0,a=0,l=0;if(n===(r?\"border\":\"content\"))return 0;for(;s<4;s+=2)\"margin\"===n&&(l+=C.css(e,n+oe[s],!0,i)),r?(\"content\"===n&&(l-=C.css(e,\"padding\"+oe[s],!0,i)),\"margin\"!==n&&(l-=C.css(e,\"border\"+oe[s]+\"Width\",!0,i))):(l+=C.css(e,\"padding\"+oe[s],!0,i),\"padding\"!==n?l+=C.css(e,\"border\"+oe[s]+\"Width\",!0,i):a+=C.css(e,\"border\"+oe[s]+\"Width\",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-l-a-.5))||0),l}function nt(e,t,n){var r=Ue(e),i=(!m.boxSizingReliable()||n)&&\"border-box\"===C.css(e,\"boxSizing\",!1,r),o=i,s=Be(e,t,r),a=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Me.test(s)){if(!n)return s;s=\"auto\"}return(!m.boxSizingReliable()&&i||!m.reliableTrDimensions()&&k(e,\"tr\")||\"auto\"===s||!parseFloat(s)&&\"inline\"===C.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===C.css(e,\"boxSizing\",!1,r),(o=a in e)&&(s=e[a])),(s=parseFloat(s)||0)+tt(e,t,n||(i?\"border\":\"content\"),o,r,s)+\"px\"}function rt(e,t,n,r,i){return new rt.prototype.init(e,t,n,r,i)}C.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=K(t),l=Qe.test(t),c=e.style;if(l||(t=Ke(a)),s=C.cssHooks[t]||C.cssHooks[a],void 0===n)return s&&\"get\"in s&&void 0!==(i=s.get(e,!1,r))?i:c[t];\"string\"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||l||(n+=i&&i[3]||(C.cssNumber[a]?\"\":\"px\")),m.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(c[t]=\"inherit\"),s&&\"set\"in s&&void 0===(n=s.set(e,n,r))||(l?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,r){var i,o,s,a=K(t);return Qe.test(t)||(t=Ke(a)),(s=C.cssHooks[t]||C.cssHooks[a])&&\"get\"in s&&(i=s.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),\"normal\"===i&&t in Je&&(i=Je[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),C.each([\"height\",\"width\"],(function(e,t){C.cssHooks[t]={get:function(e,n,r){if(n)return!Ve.test(C.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,t,r):Fe(e,Ze,(function(){return nt(e,t,r)}))},set:function(e,n,r){var i,o=Ue(e),s=!m.scrollboxSize()&&\"absolute\"===o.position,a=(s||r)&&\"border-box\"===C.css(e,\"boxSizing\",!1,o),l=r?tt(e,t,r,a,o):0;return a&&s&&(l-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-tt(e,t,\"border\",!1,o)-.5)),l&&(i=ie.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=C.css(e,t)),et(0,n,l)}}})),C.cssHooks.marginLeft=ze(m.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Be(e,\"marginLeft\"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),C.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){C.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(C.cssHooks[e+t].set=et)})),C.fn.extend({css:function(e,t){return z(this,(function(e,t,n){var r,i,o={},s=0;if(Array.isArray(t)){for(r=Ue(e),i=t.length;s<i;s++)o[t[s]]=C.css(e,t[s],!1,r);return o}return void 0!==n?C.style(e,t,n):C.css(e,t)}),e,t,arguments.length>1)}}),C.Tween=rt,rt.prototype={constructor:rt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||C.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(C.cssNumber[n]?\"\":\"px\")},cur:function(){var e=rt.propHooks[this.prop];return e&&e.get?e.get(this):rt.propHooks._default.get(this)},run:function(e){var t,n=rt.propHooks[this.prop];return this.options.duration?this.pos=t=C.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rt.propHooks._default.set(this),this}},rt.prototype.init.prototype=rt.prototype,rt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=C.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){C.fx.step[e.prop]?C.fx.step[e.prop](e):1!==e.elem.nodeType||!C.cssHooks[e.prop]&&null==e.elem.style[Ke(e.prop)]?e.elem[e.prop]=e.now:C.style(e.elem,e.prop,e.now+e.unit)}}},rt.propHooks.scrollTop=rt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},C.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},C.fx=rt.prototype.init,C.fx.step={};var it,ot,st=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function lt(){ot&&(!1===b.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(lt):r.setTimeout(lt,C.fx.interval),C.fx.tick())}function ct(){return r.setTimeout((function(){it=void 0})),it=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=oe[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners[\"*\"]),o=0,s=i.length;o<s;o++)if(r=i[o].call(n,t,e))return r}function dt(e,t,n){var r,i,o=0,s=dt.prefilters.length,a=C.Deferred().always((function(){delete l.elem})),l=function(){if(i)return!1;for(var t=it||ct(),n=Math.max(0,c.startTime+c.duration-t),r=1-(n/c.duration||0),o=0,s=c.tweens.length;o<s;o++)c.tweens[o].run(r);return a.notifyWith(e,[c,r,n]),r<1&&s?n:(s||a.notifyWith(e,[c,1,0]),a.resolveWith(e,[c]),!1)},c=a.promise({elem:e,props:C.extend({},t),opts:C.extend(!0,{specialEasing:{},easing:C.easing._default},n),originalProperties:t,originalOptions:n,startTime:it||ct(),duration:n.duration,tweens:[],createTween:function(t,n){var r=C.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(r),r},stop:function(t){var n=0,r=t?c.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)c.tweens[n].run(1);return t?(a.notifyWith(e,[c,1,0]),a.resolveWith(e,[c,t])):a.rejectWith(e,[c,t]),this}}),u=c.props;for(function(e,t){var n,r,i,o,s;for(n in e)if(i=t[r=K(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(s=C.cssHooks[r])&&\"expand\"in s)for(n in o=s.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(u,c.opts.specialEasing);o<s;o++)if(r=dt.prefilters[o].call(c,e,u,c.opts))return v(r.stop)&&(C._queueHooks(c.elem,c.opts.queue).stop=r.stop.bind(r)),r;return C.map(u,pt,c),v(c.opts.start)&&c.opts.start.call(e,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),C.fx.timer(C.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c}C.Animation=C.extend(dt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=[\"*\"]):e=e.match(I);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,s,a,l,c,u,p=\"width\"in t||\"height\"in t,d=this,f={},h=e.style,g=e.nodeType&&ce(e),m=Z.get(e,\"fxshow\");for(r in n.queue||(null==(s=C._queueHooks(e,\"fx\")).unqueued&&(s.unqueued=0,a=s.empty.fire,s.empty.fire=function(){s.unqueued||a()}),s.unqueued++,d.always((function(){d.always((function(){s.unqueued--,C.queue(e,\"fx\").length||s.empty.fire()}))}))),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!m||void 0===m[r])continue;g=!0}f[r]=m&&m[r]||C.style(e,r)}if((l=!C.isEmptyObject(t))||!C.isEmptyObject(f))for(r in p&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(c=m&&m.display)&&(c=Z.get(e,\"display\")),\"none\"===(u=C.css(e,\"display\"))&&(c?u=c:(fe([e],!0),c=e.style.display||c,u=C.css(e,\"display\"),fe([e]))),(\"inline\"===u||\"inline-block\"===u&&null!=c)&&\"none\"===C.css(e,\"float\")&&(l||(d.done((function(){h.display=c})),null==c&&(u=h.display,c=\"none\"===u?\"\":u)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",d.always((function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}))),l=!1,f)l||(m?\"hidden\"in m&&(g=m.hidden):m=Z.access(e,\"fxshow\",{display:c}),o&&(m.hidden=!g),g&&fe([e],!0),d.done((function(){for(r in g||fe([e]),Z.remove(e,\"fxshow\"),f)C.style(e,r,f[r])}))),l=pt(g?m[r]:0,r,d),r in m||(m[r]=l.start,g&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),C.speed=function(e,t,n){var r=e&&\"object\"==typeof e?C.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return C.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in C.fx.speeds?r.duration=C.fx.speeds[r.duration]:r.duration=C.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&C.dequeue(this,r.queue)},r},C.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ce).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=C.isEmptyObject(e),o=C.speed(t,n,r),s=function(){var t=dt(this,C.extend({},e),o);(i||Z.get(this,\"finish\"))&&t.stop(!0)};return s.finish=s,i||!1===o.queue?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&this.queue(e||\"fx\",[]),this.each((function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=C.timers,s=Z.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&at.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||C.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each((function(){var t,n=Z.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=C.timers,s=r?r.length:0;for(n.finish=!0,C.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<s;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish}))}}),C.each([\"toggle\",\"show\",\"hide\"],(function(e,t){var n=C.fn[t];C.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}})),C.each({slideDown:ut(\"show\"),slideUp:ut(\"hide\"),slideToggle:ut(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},(function(e,t){C.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}})),C.timers=[],C.fx.tick=function(){var e,t=0,n=C.timers;for(it=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||C.fx.stop(),it=void 0},C.fx.timer=function(e){C.timers.push(e),C.fx.start()},C.fx.interval=13,C.fx.start=function(){ot||(ot=!0,lt())},C.fx.stop=function(){ot=null},C.fx.speeds={slow:600,fast:200,_default:400},C.fn.delay=function(e,t){return e=C.fx&&C.fx.speeds[e]||e,t=t||\"fx\",this.queue(t,(function(t,n){var i=r.setTimeout(t,e);n.stop=function(){r.clearTimeout(i)}}))},function(){var e=b.createElement(\"input\"),t=b.createElement(\"select\").appendChild(b.createElement(\"option\"));e.type=\"checkbox\",m.checkOn=\"\"!==e.value,m.optSelected=t.selected,(e=b.createElement(\"input\")).value=\"t\",e.type=\"radio\",m.radioValue=\"t\"===e.value}();var ft,ht=C.expr.attrHandle;C.fn.extend({attr:function(e,t){return z(this,C.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each((function(){C.removeAttr(this,e)}))}}),C.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?C.prop(e,t,n):(1===o&&C.isXMLDoc(e)||(i=C.attrHooks[t.toLowerCase()]||(C.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void C.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=C.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\"radio\"===t&&k(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(I);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?C.removeAttr(e,n):e.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=ht[t]||C.find.attr;ht[t]=function(e,t,r){var i,o,s=t.toLowerCase();return r||(o=ht[s],ht[s]=i,i=null!=n(e,t,r)?s:null,ht[s]=o),i}}));var gt=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function vt(e){return(e.match(I)||[]).join(\" \")}function yt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function bt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(I)||[]}C.fn.extend({prop:function(e,t){return z(this,C.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[C.propFix[e]||e]}))}}),C.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&C.isXMLDoc(e)||(t=C.propFix[t]||t,i=C.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=C.find.attr(e,\"tabindex\");return t?parseInt(t,10):gt.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),m.optSelected||(C.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),C.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(e){var t,n,r,i,o,s,a,l=0;if(v(e))return this.each((function(t){C(this).addClass(e.call(this,t,yt(this)))}));if((t=bt(e)).length)for(;n=this[l++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(s=0;o=t[s++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(a=vt(r))&&n.setAttribute(\"class\",a)}return this},removeClass:function(e){var t,n,r,i,o,s,a,l=0;if(v(e))return this.each((function(t){C(this).removeClass(e.call(this,t,yt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=bt(e)).length)for(;n=this[l++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(s=0;o=t[s++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(a=vt(r))&&n.setAttribute(\"class\",a)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):v(e)?this.each((function(n){C(this).toggleClass(e.call(this,n,yt(this),t),t)})):this.each((function(){var t,i,o,s;if(r)for(i=0,o=C(this),s=bt(e);t=s[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=yt(this))&&Z.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Z.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+vt(yt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var xt=/\\r/g;C.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=v(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,C(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=C.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(xt,\"\"):null==n?\"\":n:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,\"value\");return null!=t?t:vt(C.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,s=\"select-one\"===e.type,a=s?null:[],l=s?o+1:i.length;for(r=o<0?l:s?o:0;r<l;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!k(n.parentNode,\"optgroup\"))){if(t=C(n).val(),s)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=C.makeArray(t),s=i.length;s--;)((r=i[s]).selected=C.inArray(C.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),C.each([\"radio\",\"checkbox\"],(function(){C.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=C.inArray(C(e).val(),t)>-1}},m.checkOn||(C.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),m.focusin=\"onfocusin\"in r;var wt=/^(?:focusinfocus|focusoutblur)$/,_t=function(e){e.stopPropagation()};C.extend(C.event,{trigger:function(e,t,n,i){var o,s,a,l,c,u,p,d,h=[n||b],g=f.call(e,\"type\")?e.type:e,m=f.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(s=d=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!wt.test(g+C.event.triggered)&&(g.indexOf(\".\")>-1&&(m=g.split(\".\"),g=m.shift(),m.sort()),c=g.indexOf(\":\")<0&&\"on\"+g,(e=e[C.expando]?e:new C.Event(g,\"object\"==typeof e&&e)).isTrigger=i?2:3,e.namespace=m.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+m.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:C.makeArray(t,[e]),p=C.event.special[g]||{},i||!p.trigger||!1!==p.trigger.apply(n,t))){if(!i&&!p.noBubble&&!y(n)){for(l=p.delegateType||g,wt.test(l+g)||(s=s.parentNode);s;s=s.parentNode)h.push(s),a=s;a===(n.ownerDocument||b)&&h.push(a.defaultView||a.parentWindow||r)}for(o=0;(s=h[o++])&&!e.isPropagationStopped();)d=s,e.type=o>1?l:p.bindType||g,(u=(Z.get(s,\"events\")||Object.create(null))[e.type]&&Z.get(s,\"handle\"))&&u.apply(s,t),(u=c&&s[c])&&u.apply&&V(s)&&(e.result=u.apply(s,t),!1===e.result&&e.preventDefault());return e.type=g,i||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(h.pop(),t)||!V(n)||c&&v(n[g])&&!y(n)&&((a=n[c])&&(n[c]=null),C.event.triggered=g,e.isPropagationStopped()&&d.addEventListener(g,_t),n[g](),e.isPropagationStopped()&&d.removeEventListener(g,_t),C.event.triggered=void 0,a&&(n[c]=a)),e.result}},simulate:function(e,t,n){var r=C.extend(new C.Event,n,{type:e,isSimulated:!0});C.event.trigger(r,null,t)}}),C.fn.extend({trigger:function(e,t){return this.each((function(){C.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return C.event.trigger(e,t,n,!0)}}),m.focusin||C.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){C.event.simulate(t,e.target,C.event.fix(e))};C.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Z.access(r,t);i||r.addEventListener(e,n,!0),Z.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Z.access(r,t)-1;i?Z.access(r,t,i):(r.removeEventListener(e,n,!0),Z.remove(r,t))}}}));var Tt=r.location,Ct={guid:Date.now()},At=/\\?/;C.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{t=(new r.DOMParser).parseFromString(e,\"text/xml\")}catch(e){}return n=t&&t.getElementsByTagName(\"parsererror\")[0],t&&!n||C.error(\"Invalid XML: \"+(n?C.map(n.childNodes,(function(e){return e.textContent})).join(\"\\n\"):e)),t};var Et=/\\[\\]$/,St=/\\r?\\n/g,$t=/^(?:submit|button|image|reset|file)$/i,Dt=/^(?:input|select|textarea|keygen)/i;function kt(e,t,n,r){var i;if(Array.isArray(t))C.each(t,(function(t,i){n||Et.test(e)?r(e,i):kt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==_(t))r(e,t);else for(i in t)kt(e+\"[\"+i+\"]\",t[i],n,r)}C.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!C.isPlainObject(e))C.each(e,(function(){i(this.name,this.value)}));else for(n in e)kt(n,e[n],t,i);return r.join(\"&\")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=C.prop(this,\"elements\");return e?C.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!C(this).is(\":disabled\")&&Dt.test(this.nodeName)&&!$t.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}})):{name:t.name,value:n.replace(St,\"\\r\\n\")}})).get()}});var jt=/%20/g,Lt=/#.*$/,Ot=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,Pt=/^\\/\\//,Ht={},It={},Rt=\"*/\".concat(\"*\"),Mt=b.createElement(\"a\");function Ut(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(I)||[];if(v(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ft(e,t,n,r){var i={},o=e===It;function s(a){var l;return i[a]=!0,C.each(e[a]||[],(function(e,a){var c=a(t,n,r);return\"string\"!=typeof c||o||i[c]?o?!(l=c):void 0:(t.dataTypes.unshift(c),s(c),!1)})),l}return s(t.dataTypes[0])||!i[\"*\"]&&s(\"*\")}function Wt(e,t){var n,r,i=C.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&C.extend(!0,e,r),e}Mt.href=Tt.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Wt(Wt(e,C.ajaxSettings),t):Wt(C.ajaxSettings,e)},ajaxPrefilter:Ut(Ht),ajaxTransport:Ut(It),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var n,i,o,s,a,l,c,u,p,d,f=C.ajaxSetup({},t),h=f.context||f,g=f.context&&(h.nodeType||h.jquery)?C(h):C.event,m=C.Deferred(),v=C.Callbacks(\"once memory\"),y=f.statusCode||{},x={},w={},_=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=qt.exec(o);)s[t[1].toLowerCase()+\" \"]=(s[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=s[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return c?o:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||_;return n&&n.abort(t),A(0,t),this}};if(m.promise(T),f.url=((e||f.url||Tt.href)+\"\").replace(Pt,Tt.protocol+\"//\"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||\"*\").toLowerCase().match(I)||[\"\"],null==f.crossDomain){l=b.createElement(\"a\");try{l.href=f.url,l.href=l.href,f.crossDomain=Mt.protocol+\"//\"+Mt.host!=l.protocol+\"//\"+l.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&\"string\"!=typeof f.data&&(f.data=C.param(f.data,f.traditional)),Ft(Ht,f,t,T),c)return T;for(p in(u=C.event&&f.global)&&0==C.active++&&C.event.trigger(\"ajaxStart\"),f.type=f.type.toUpperCase(),f.hasContent=!Nt.test(f.type),i=f.url.replace(Lt,\"\"),f.hasContent?f.data&&f.processData&&0===(f.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(f.data=f.data.replace(jt,\"+\")):(d=f.url.slice(i.length),f.data&&(f.processData||\"string\"==typeof f.data)&&(i+=(At.test(i)?\"&\":\"?\")+f.data,delete f.data),!1===f.cache&&(i=i.replace(Ot,\"$1\"),d=(At.test(i)?\"&\":\"?\")+\"_=\"+Ct.guid+++d),f.url=i+d),f.ifModified&&(C.lastModified[i]&&T.setRequestHeader(\"If-Modified-Since\",C.lastModified[i]),C.etag[i]&&T.setRequestHeader(\"If-None-Match\",C.etag[i])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&T.setRequestHeader(\"Content-Type\",f.contentType),T.setRequestHeader(\"Accept\",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(\"*\"!==f.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):f.accepts[\"*\"]),f.headers)T.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(h,T,f)||c))return T.abort();if(_=\"abort\",v.add(f.complete),T.done(f.success),T.fail(f.error),n=Ft(It,f,t,T)){if(T.readyState=1,u&&g.trigger(\"ajaxSend\",[T,f]),c)return T;f.async&&f.timeout>0&&(a=r.setTimeout((function(){T.abort(\"timeout\")}),f.timeout));try{c=!1,n.send(x,A)}catch(e){if(c)throw e;A(-1,e)}}else A(-1,\"No Transport\");function A(e,t,s,l){var p,d,b,x,w,_=t;c||(c=!0,a&&r.clearTimeout(a),n=void 0,o=l||\"\",T.readyState=e>0?4:0,p=e>=200&&e<300||304===e,s&&(x=function(e,t,n){for(var r,i,o,s,a=e.contents,l=e.dataTypes;\"*\"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in a)if(a[i]&&a[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+\" \"+l[0]]){o=i;break}s||(s=i)}o=o||s}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,T,s)),!p&&C.inArray(\"script\",f.dataTypes)>-1&&C.inArray(\"json\",f.dataTypes)<0&&(f.converters[\"text script\"]=function(){}),x=function(e,t,n,r){var i,o,s,a,l,c={},u=e.dataTypes.slice();if(u[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if(\"*\"===o)o=l;else if(\"*\"!==l&&l!==o){if(!(s=c[l+\" \"+o]||c[\"* \"+o]))for(i in c)if((a=i.split(\" \"))[1]===o&&(s=c[l+\" \"+a[0]]||c[\"* \"+a[0]])){!0===s?s=c[i]:!0!==c[i]&&(o=a[0],u.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(e){return{state:\"parsererror\",error:s?e:\"No conversion from \"+l+\" to \"+o}}}return{state:\"success\",data:t}}(f,x,T,p),p?(f.ifModified&&((w=T.getResponseHeader(\"Last-Modified\"))&&(C.lastModified[i]=w),(w=T.getResponseHeader(\"etag\"))&&(C.etag[i]=w)),204===e||\"HEAD\"===f.type?_=\"nocontent\":304===e?_=\"notmodified\":(_=x.state,d=x.data,p=!(b=x.error))):(b=_,!e&&_||(_=\"error\",e<0&&(e=0))),T.status=e,T.statusText=(t||_)+\"\",p?m.resolveWith(h,[d,_,T]):m.rejectWith(h,[T,_,b]),T.statusCode(y),y=void 0,u&&g.trigger(p?\"ajaxSuccess\":\"ajaxError\",[T,f,p?d:b]),v.fireWith(h,[T,_]),u&&(g.trigger(\"ajaxComplete\",[T,f]),--C.active||C.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return C.get(e,t,n,\"json\")},getScript:function(e,t){return C.get(e,void 0,t,\"script\")}}),C.each([\"get\",\"post\"],(function(e,t){C[t]=function(e,n,r,i){return v(n)&&(i=i||r,r=n,n=void 0),C.ajax(C.extend({url:e,type:t,dataType:i,data:n,success:r},C.isPlainObject(e)&&e))}})),C.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),C._evalUrl=function(e,t,n){return C.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){C.globalEval(e,t,n)}})},C.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return v(e)?this.each((function(t){C(this).wrapInner(e.call(this,t))})):this.each((function(){var t=C(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=v(e);return this.each((function(n){C(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(e){return!C.expr.pseudos.visible(e)},C.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},zt=C.ajaxSettings.xhr();m.cors=!!zt&&\"withCredentials\"in zt,m.ajax=zt=!!zt,C.ajaxTransport((function(e){var t,n;if(m.cors||zt&&!e.crossDomain)return{send:function(i,o){var s,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(s in e.xhrFields)a[s]=e.xhrFields[s];for(s in e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)a.setRequestHeader(s,i[s]);t=function(e){return function(){t&&(t=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,\"abort\"===e?a.abort():\"error\"===e?\"number\"!=typeof a.status?o(0,\"error\"):o(a.status,a.statusText):o(Bt[a.status]||a.status,a.statusText,\"text\"!==(a.responseType||\"text\")||\"string\"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),n=a.onerror=a.ontimeout=t(\"error\"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&r.setTimeout((function(){t&&n()}))},t=t(\"abort\");try{a.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),C.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),C.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return C.globalEval(e),e}}}),C.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),C.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=C(\"<script>\").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&i(\"error\"===e.type?404:200,e.type)}),b.head.appendChild(t[0])},abort:function(){n&&n()}}}));var Gt,Yt=[],Xt=/(=)\\?(?=&|$)|\\?\\?/;C.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Yt.pop()||C.expando+\"_\"+Ct.guid++;return this[e]=!0,e}}),C.ajaxPrefilter(\"json jsonp\",(function(e,t,n){var i,o,s,a=!1!==e.jsonp&&(Xt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Xt.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return i=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Xt,\"$1\"+i):!1!==e.jsonp&&(e.url+=(At.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+i),e.converters[\"script json\"]=function(){return s||C.error(i+\" was not called\"),s[0]},e.dataTypes[0]=\"json\",o=r[i],r[i]=function(){s=arguments},n.always((function(){void 0===o?C(r).removeProp(i):r[i]=o,e[i]&&(e.jsonpCallback=t.jsonpCallback,Yt.push(i)),s&&v(o)&&o(s[0]),s=o=void 0})),\"script\"})),m.createHTMLDocument=((Gt=b.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===Gt.childNodes.length),C.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=b.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=b.location.href,t.head.appendChild(r)):t=b),o=!n&&[],(i=j.exec(e))?[t.createElement(i[1])]:(i=Te([e],t,o),o&&o.length&&C(o).remove(),C.merge([],i.childNodes)));var r,i,o},C.fn.load=function(e,t,n){var r,i,o,s=this,a=e.indexOf(\" \");return a>-1&&(r=vt(e.slice(a)),e=e.slice(0,a)),v(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),s.length>0&&C.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done((function(e){o=arguments,s.html(r?C(\"<div>\").append(C.parseHTML(e)).find(r):e)})).always(n&&function(e,t){s.each((function(){n.apply(this,o||[e.responseText,t,e])}))}),this},C.expr.pseudos.animated=function(e){return C.grep(C.timers,(function(t){return e===t.elem})).length},C.offset={setOffset:function(e,t,n){var r,i,o,s,a,l,c=C.css(e,\"position\"),u=C(e),p={};\"static\"===c&&(e.style.position=\"relative\"),a=u.offset(),o=C.css(e,\"top\"),l=C.css(e,\"left\"),(\"absolute\"===c||\"fixed\"===c)&&(o+l).indexOf(\"auto\")>-1?(s=(r=u.position()).top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(l)||0),v(t)&&(t=t.call(e,n,C.extend({},a))),null!=t.top&&(p.top=t.top-a.top+s),null!=t.left&&(p.left=t.left-a.left+i),\"using\"in t?t.using.call(e,p):u.css(p)}},C.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){C.offset.setOffset(this,e,t)}));var t,n,r=this[0];return r?r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===C.css(r,\"position\"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&\"static\"===C.css(e,\"position\");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=C(e).offset()).top+=C.css(e,\"borderTopWidth\",!0),i.left+=C.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-C.css(r,\"marginTop\",!0),left:t.left-i.left-C.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&\"static\"===C.css(e,\"position\");)e=e.offsetParent;return e||se}))}}),C.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},(function(e,t){var n=\"pageYOffset\"===t;C.fn[e]=function(r){return z(this,(function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i}),e,r,arguments.length)}})),C.each([\"top\",\"left\"],(function(e,t){C.cssHooks[t]=ze(m.pixelPosition,(function(e,n){if(n)return n=Be(e,t),Me.test(n)?C(e).position()[t]+\"px\":n}))})),C.each({Height:\"height\",Width:\"width\"},(function(e,t){C.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},(function(n,r){C.fn[r]=function(i,o){var s=arguments.length&&(n||\"boolean\"!=typeof i),a=n||(!0===i||!0===o?\"margin\":\"border\");return z(this,(function(t,n,i){var o;return y(t)?0===r.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?C.css(t,n,a):C.style(t,n,i,a)}),t,s?i:void 0,s)}}))})),C.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],(function(e,t){C.fn[t]=function(e){return this.on(t,e)}})),C.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),C.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),(function(e,t){C.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}));var Kt=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;C.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=a.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(a.call(arguments)))}).guid=e.guid=e.guid||C.guid++,i},C.holdReady=function(e){e?C.readyWait++:C.ready(!0)},C.isArray=Array.isArray,C.parseJSON=JSON.parse,C.nodeName=k,C.isFunction=v,C.isWindow=y,C.camelCase=K,C.type=_,C.now=Date.now,C.isNumeric=function(e){var t=C.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},C.trim=function(e){return null==e?\"\":(e+\"\").replace(Kt,\"\")},void 0===(n=function(){return C}.apply(t,[]))||(e.exports=n);var Vt=r.jQuery,Qt=r.$;return C.noConflict=function(e){return r.$===C&&(r.$=Qt),e&&r.jQuery===C&&(r.jQuery=Vt),C},void 0===i&&(r.jQuery=r.$=C),C}))},821:(e,t,n)=>{var r,i,o;i=[n(755)],void 0===(o=\"function\"==typeof(r=function(e){var t=function(){if(e&&e.fn&&e.fn.select2&&e.fn.select2.amd)var t=e.fn.select2.amd;var n,r,i,o,s,a,l,c,u,p,d,f,h,g,m;function v(e,t){return h.call(e,t)}function y(e,t){var n,r,i,o,s,a,l,c,u,p,f,h=t&&t.split(\"/\"),g=d.map,v=g&&g[\"*\"]||{};if(e){for(s=(e=e.split(\"/\")).length-1,d.nodeIdCompat&&m.test(e[s])&&(e[s]=e[s].replace(m,\"\")),\".\"===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if(\".\"===(f=e[u]))e.splice(u,1),--u;else if(\"..\"===f){if(0===u||1===u&&\"..\"===e[2]||\"..\"===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join(\"/\")}if((h||v)&&g){for(u=(n=e.split(\"/\")).length;0<u;--u){if(r=n.slice(0,u).join(\"/\"),h)for(p=h.length;0<p;--p)if(i=(i=g[h.slice(0,p).join(\"/\")])&&i[r]){o=i,a=u;break}if(o)break;!l&&v&&v[r]&&(l=v[r],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join(\"/\"))}return e}function b(e,t){return function(){var n=g.call(arguments,0);return\"string\"!=typeof n[0]&&1===n.length&&n.push(null),a.apply(o,n.concat([e,t]))}}function x(e){return function(t){u[e]=t}}function w(e){if(v(p,e)){var t=p[e];delete p[e],f[e]=!0,s.apply(o,t)}if(!v(u,e)&&!v(f,e))throw new Error(\"No \"+e);return u[e]}function _(e){var t,n=e?e.indexOf(\"!\"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function T(e){return e?_(e):[]}return t&&t.requirejs||(t?r=t:t={},u={},p={},d={},f={},h=Object.prototype.hasOwnProperty,g=[].slice,m=/\\.js$/,l=function(e,t){var n,r,i=_(e),o=i[0],s=t[1];return e=i[1],o&&(n=w(o=y(o,s))),o?e=n&&n.normalize?n.normalize(e,(r=s,function(e){return y(e,r)})):y(e,s):(o=(i=_(e=y(e,s)))[0],e=i[1],o&&(n=w(o))),{f:o?o+\"!\"+e:e,n:e,pr:o,p:n}},c={require:function(e){return b(e)},exports:function(e){var t=u[e];return void 0!==t?t:u[e]={}},module:function(e){return{id:e,uri:\"\",exports:u[e],config:(t=e,function(){return d&&d.config&&d.config[t]||{}})};var t}},s=function(e,t,n,r){var i,s,a,d,h,g,m,y=[],_=typeof n;if(g=T(r=r||e),\"undefined\"==_||\"function\"==_){for(t=!t.length&&n.length?[\"require\",\"exports\",\"module\"]:t,h=0;h<t.length;h+=1)if(\"require\"===(s=(d=l(t[h],g)).f))y[h]=c.require(e);else if(\"exports\"===s)y[h]=c.exports(e),m=!0;else if(\"module\"===s)i=y[h]=c.module(e);else if(v(u,s)||v(p,s)||v(f,s))y[h]=w(s);else{if(!d.p)throw new Error(e+\" missing \"+s);d.p.load(d.n,b(r,!0),x(s),{}),y[h]=u[s]}a=n?n.apply(u[e],y):void 0,e&&(i&&i.exports!==o&&i.exports!==u[e]?u[e]=i.exports:a===o&&m||(u[e]=a))}else e&&(u[e]=n)},n=r=a=function(e,t,n,r,i){if(\"string\"==typeof e)return c[e]?c[e](t):w(l(e,T(t)).f);if(!e.splice){if((d=e).deps&&a(d.deps,d.callback),!t)return;t.splice?(e=t,t=n,n=null):e=o}return t=t||function(){},\"function\"==typeof n&&(n=r,r=i),r?s(o,e,t,n):setTimeout((function(){s(o,e,t,n)}),4),a},a.config=function(e){return a(e)},n._defined=u,(i=function(e,t,n){if(\"string\"!=typeof e)throw new Error(\"See almond README: incorrect module build, no module name\");t.splice||(n=t,t=[]),v(u,e)||v(p,e)||(p[e]=[e,t,n])}).amd={jQuery:!0},t.requirejs=n,t.require=r,t.define=i),t.define(\"almond\",(function(){})),t.define(\"jquery\",[],(function(){var t=e||$;return null==t&&console&&console.error&&console.error(\"Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page.\"),t})),t.define(\"select2/utils\",[\"jquery\"],(function(e){var t={};function n(e){var t=e.prototype,n=[];for(var r in t)\"function\"==typeof t[r]&&\"constructor\"!==r&&n.push(r);return n}function r(){this.listeners={}}t.Extend=function(e,t){var n={}.hasOwnProperty;function r(){this.constructor=e}for(var i in t)n.call(t,i)&&(e[i]=t[i]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},t.Decorate=function(e,t){var r=n(t),i=n(e);function o(){var n=Array.prototype.unshift,r=t.prototype.constructor.length,i=e.prototype.constructor;0<r&&(n.call(arguments,e.prototype.constructor),i=t.prototype.constructor),i.apply(this,arguments)}t.displayName=e.displayName,o.prototype=new function(){this.constructor=o};for(var s=0;s<i.length;s++){var a=i[s];o.prototype[a]=e.prototype[a]}function l(e){var n=function(){};e in o.prototype&&(n=o.prototype[e]);var r=t.prototype[e];return function(){return Array.prototype.unshift.call(arguments,n),r.apply(this,arguments)}}for(var c=0;c<r.length;c++){var u=r[c];o.prototype[u]=l(u)}return o},r.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},r.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),\"*\"in this.listeners&&this.invoke(this.listeners[\"*\"],arguments)},r.prototype.invoke=function(e,t){for(var n=0,r=e.length;n<r;n++)e[n].apply(this,t)},t.Observable=r,t.generateChars=function(e){for(var t=\"\",n=0;n<e;n++)t+=Math.floor(36*Math.random()).toString(36);return t},t.bind=function(e,t){return function(){e.apply(t,arguments)}},t._convertData=function(e){for(var t in e){var n=t.split(\"-\"),r=e;if(1!==n.length){for(var i=0;i<n.length;i++){var o=n[i];(o=o.substring(0,1).toLowerCase()+o.substring(1))in r||(r[o]={}),i==n.length-1&&(r[o]=e[t]),r=r[o]}delete e[t]}}return e},t.hasScroll=function(t,n){var r=e(n),i=n.style.overflowX,o=n.style.overflowY;return(i!==o||\"hidden\"!==o&&\"visible\"!==o)&&(\"scroll\"===i||\"scroll\"===o||r.innerHeight()<n.scrollHeight||r.innerWidth()<n.scrollWidth)},t.escapeMarkup=function(e){var t={\"\\\\\":\"&#92;\",\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\",\"/\":\"&#47;\"};return\"string\"!=typeof e?e:String(e).replace(/[&<>\"'\\/\\\\]/g,(function(e){return t[e]}))},t.appendMany=function(t,n){if(\"1.7\"===e.fn.jquery.substr(0,3)){var r=e();e.map(n,(function(e){r=r.add(e)})),n=r}t.append(n)},t.__cache={};var i=0;return t.GetUniqueElementId=function(e){var t=e.getAttribute(\"data-select2-id\");return null==t&&(e.id?(t=e.id,e.setAttribute(\"data-select2-id\",t)):(e.setAttribute(\"data-select2-id\",++i),t=i.toString())),t},t.StoreData=function(e,n,r){var i=t.GetUniqueElementId(e);t.__cache[i]||(t.__cache[i]={}),t.__cache[i][n]=r},t.GetData=function(n,r){var i=t.GetUniqueElementId(n);return r?t.__cache[i]&&null!=t.__cache[i][r]?t.__cache[i][r]:e(n).data(r):t.__cache[i]},t.RemoveData=function(e){var n=t.GetUniqueElementId(e);null!=t.__cache[n]&&delete t.__cache[n],e.removeAttribute(\"data-select2-id\")},t})),t.define(\"select2/results\",[\"jquery\",\"./utils\"],(function(e,t){function n(e,t,r){this.$element=e,this.data=r,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');return this.options.get(\"multiple\")&&t.attr(\"aria-multiselectable\",\"true\"),this.$results=t},n.prototype.clear=function(){this.$results.empty()},n.prototype.displayMessage=function(t){var n=this.options.get(\"escapeMarkup\");this.clear(),this.hideLoading();var r=e('<li role=\"alert\" aria-live=\"assertive\" class=\"select2-results__option\"></li>'),i=this.options.get(\"translations\").get(t.message);r.append(n(i(t.args))),r[0].className+=\" select2-results__message\",this.$results.append(r)},n.prototype.hideMessages=function(){this.$results.find(\".select2-results__message\").remove()},n.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var r=e.results[n],i=this.option(r);t.push(i)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger(\"results:message\",{message:\"noResults\"})},n.prototype.position=function(e,t){t.find(\".select2-results\").append(e)},n.prototype.sort=function(e){return this.options.get(\"sorter\")(e)},n.prototype.highlightFirstItem=function(){var e=this.$results.find(\".select2-results__option[aria-selected]\"),t=e.filter(\"[aria-selected=true]\");0<t.length?t.first().trigger(\"mouseenter\"):e.first().trigger(\"mouseenter\"),this.ensureHighlightVisible()},n.prototype.setClasses=function(){var n=this;this.data.current((function(r){var i=e.map(r,(function(e){return e.id.toString()}));n.$results.find(\".select2-results__option[aria-selected]\").each((function(){var n=e(this),r=t.GetData(this,\"data\"),o=\"\"+r.id;null!=r.element&&r.element.selected||null==r.element&&-1<e.inArray(o,i)?n.attr(\"aria-selected\",\"true\"):n.attr(\"aria-selected\",\"false\")}))}))},n.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get(\"translations\").get(\"searching\")(e)},n=this.option(t);n.className+=\" loading-results\",this.$results.prepend(n)},n.prototype.hideLoading=function(){this.$results.find(\".loading-results\").remove()},n.prototype.option=function(n){var r=document.createElement(\"li\");r.className=\"select2-results__option\";var i={role:\"option\",\"aria-selected\":\"false\"},o=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var s in(null!=n.element&&o.call(n.element,\":disabled\")||null==n.element&&n.disabled)&&(delete i[\"aria-selected\"],i[\"aria-disabled\"]=\"true\"),null==n.id&&delete i[\"aria-selected\"],null!=n._resultId&&(r.id=n._resultId),n.title&&(r.title=n.title),n.children&&(i.role=\"group\",i[\"aria-label\"]=n.text,delete i[\"aria-selected\"]),i){var a=i[s];r.setAttribute(s,a)}if(n.children){var l=e(r),c=document.createElement(\"strong\");c.className=\"select2-results__group\",e(c),this.template(n,c);for(var u=[],p=0;p<n.children.length;p++){var d=n.children[p],f=this.option(d);u.push(f)}var h=e(\"<ul></ul>\",{class:\"select2-results__options select2-results__options--nested\"});h.append(u),l.append(c),l.append(h)}else this.template(n,r);return t.StoreData(r,\"data\",n),r},n.prototype.bind=function(n,r){var i=this,o=n.id+\"-results\";this.$results.attr(\"id\",o),n.on(\"results:all\",(function(e){i.clear(),i.append(e.data),n.isOpen()&&(i.setClasses(),i.highlightFirstItem())})),n.on(\"results:append\",(function(e){i.append(e.data),n.isOpen()&&i.setClasses()})),n.on(\"query\",(function(e){i.hideMessages(),i.showLoading(e)})),n.on(\"select\",(function(){n.isOpen()&&(i.setClasses(),i.options.get(\"scrollAfterSelect\")&&i.highlightFirstItem())})),n.on(\"unselect\",(function(){n.isOpen()&&(i.setClasses(),i.options.get(\"scrollAfterSelect\")&&i.highlightFirstItem())})),n.on(\"open\",(function(){i.$results.attr(\"aria-expanded\",\"true\"),i.$results.attr(\"aria-hidden\",\"false\"),i.setClasses(),i.ensureHighlightVisible()})),n.on(\"close\",(function(){i.$results.attr(\"aria-expanded\",\"false\"),i.$results.attr(\"aria-hidden\",\"true\"),i.$results.removeAttr(\"aria-activedescendant\")})),n.on(\"results:toggle\",(function(){var e=i.getHighlightedResults();0!==e.length&&e.trigger(\"mouseup\")})),n.on(\"results:select\",(function(){var e=i.getHighlightedResults();if(0!==e.length){var n=t.GetData(e[0],\"data\");\"true\"==e.attr(\"aria-selected\")?i.trigger(\"close\",{}):i.trigger(\"select\",{data:n})}})),n.on(\"results:previous\",(function(){var e=i.getHighlightedResults(),t=i.$results.find(\"[aria-selected]\"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var o=t.eq(r);o.trigger(\"mouseenter\");var s=i.$results.offset().top,a=o.offset().top,l=i.$results.scrollTop()+(a-s);0===r?i.$results.scrollTop(0):a-s<0&&i.$results.scrollTop(l)}})),n.on(\"results:next\",(function(){var e=i.getHighlightedResults(),t=i.$results.find(\"[aria-selected]\"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger(\"mouseenter\");var o=i.$results.offset().top+i.$results.outerHeight(!1),s=r.offset().top+r.outerHeight(!1),a=i.$results.scrollTop()+s-o;0===n?i.$results.scrollTop(0):o<s&&i.$results.scrollTop(a)}})),n.on(\"results:focus\",(function(e){e.element.addClass(\"select2-results__option--highlighted\")})),n.on(\"results:message\",(function(e){i.displayMessage(e)})),e.fn.mousewheel&&this.$results.on(\"mousewheel\",(function(e){var t=i.$results.scrollTop(),n=i.$results.get(0).scrollHeight-t+e.deltaY,r=0<e.deltaY&&t-e.deltaY<=0,o=e.deltaY<0&&n<=i.$results.height();r?(i.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):o&&(i.$results.scrollTop(i.$results.get(0).scrollHeight-i.$results.height()),e.preventDefault(),e.stopPropagation())})),this.$results.on(\"mouseup\",\".select2-results__option[aria-selected]\",(function(n){var r=e(this),o=t.GetData(this,\"data\");\"true\"!==r.attr(\"aria-selected\")?i.trigger(\"select\",{originalEvent:n,data:o}):i.options.get(\"multiple\")?i.trigger(\"unselect\",{originalEvent:n,data:o}):i.trigger(\"close\",{})})),this.$results.on(\"mouseenter\",\".select2-results__option[aria-selected]\",(function(n){var r=t.GetData(this,\"data\");i.getHighlightedResults().removeClass(\"select2-results__option--highlighted\"),i.trigger(\"results:focus\",{data:r,element:e(this)})}))},n.prototype.getHighlightedResults=function(){return this.$results.find(\".select2-results__option--highlighted\")},n.prototype.destroy=function(){this.$results.remove()},n.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find(\"[aria-selected]\").index(e),n=this.$results.offset().top,r=e.offset().top,i=this.$results.scrollTop()+(r-n),o=r-n;i-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},n.prototype.template=function(t,n){var r=this.options.get(\"templateResult\"),i=this.options.get(\"escapeMarkup\"),o=r(t,n);null==o?n.style.display=\"none\":\"string\"==typeof o?n.innerHTML=i(o):e(n).append(o)},n})),t.define(\"select2/keys\",[],(function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}})),t.define(\"select2/selection/base\",[\"jquery\",\"../utils\",\"../keys\"],(function(e,t,n){function r(e,t){this.$element=e,this.options=t,r.__super__.constructor.call(this)}return t.Extend(r,t.Observable),r.prototype.render=function(){var n=e('<span class=\"select2-selection\" role=\"combobox\"  aria-haspopup=\"true\" aria-expanded=\"false\"></span>');return this._tabindex=0,null!=t.GetData(this.$element[0],\"old-tabindex\")?this._tabindex=t.GetData(this.$element[0],\"old-tabindex\"):null!=this.$element.attr(\"tabindex\")&&(this._tabindex=this.$element.attr(\"tabindex\")),n.attr(\"title\",this.$element.attr(\"title\")),n.attr(\"tabindex\",this._tabindex),n.attr(\"aria-disabled\",\"false\"),this.$selection=n},r.prototype.bind=function(e,t){var r=this,i=e.id+\"-results\";this.container=e,this.$selection.on(\"focus\",(function(e){r.trigger(\"focus\",e)})),this.$selection.on(\"blur\",(function(e){r._handleBlur(e)})),this.$selection.on(\"keydown\",(function(e){r.trigger(\"keypress\",e),e.which===n.SPACE&&e.preventDefault()})),e.on(\"results:focus\",(function(e){r.$selection.attr(\"aria-activedescendant\",e.data._resultId)})),e.on(\"selection:update\",(function(e){r.update(e.data)})),e.on(\"open\",(function(){r.$selection.attr(\"aria-expanded\",\"true\"),r.$selection.attr(\"aria-owns\",i),r._attachCloseHandler(e)})),e.on(\"close\",(function(){r.$selection.attr(\"aria-expanded\",\"false\"),r.$selection.removeAttr(\"aria-activedescendant\"),r.$selection.removeAttr(\"aria-owns\"),r.$selection.trigger(\"focus\"),r._detachCloseHandler(e)})),e.on(\"enable\",(function(){r.$selection.attr(\"tabindex\",r._tabindex),r.$selection.attr(\"aria-disabled\",\"false\")})),e.on(\"disable\",(function(){r.$selection.attr(\"tabindex\",\"-1\"),r.$selection.attr(\"aria-disabled\",\"true\")}))},r.prototype._handleBlur=function(t){var n=this;window.setTimeout((function(){document.activeElement==n.$selection[0]||e.contains(n.$selection[0],document.activeElement)||n.trigger(\"blur\",t)}),1)},r.prototype._attachCloseHandler=function(n){e(document.body).on(\"mousedown.select2.\"+n.id,(function(n){var r=e(n.target).closest(\".select2\");e(\".select2.select2-container--open\").each((function(){this!=r[0]&&t.GetData(this,\"element\").select2(\"close\")}))}))},r.prototype._detachCloseHandler=function(t){e(document.body).off(\"mousedown.select2.\"+t.id)},r.prototype.position=function(e,t){t.find(\".selection\").append(e)},r.prototype.destroy=function(){this._detachCloseHandler(this.container)},r.prototype.update=function(e){throw new Error(\"The `update` method must be defined in child classes.\")},r.prototype.isEnabled=function(){return!this.isDisabled()},r.prototype.isDisabled=function(){return this.options.get(\"disabled\")},r})),t.define(\"select2/selection/single\",[\"jquery\",\"./base\",\"../utils\",\"../keys\"],(function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass(\"select2-selection--single\"),e.html('<span class=\"select2-selection__rendered\"></span><span class=\"select2-selection__arrow\" role=\"presentation\"><b role=\"presentation\"></b></span>'),e},i.prototype.bind=function(e,t){var n=this;i.__super__.bind.apply(this,arguments);var r=e.id+\"-container\";this.$selection.find(\".select2-selection__rendered\").attr(\"id\",r).attr(\"role\",\"textbox\").attr(\"aria-readonly\",\"true\"),this.$selection.attr(\"aria-labelledby\",r),this.$selection.on(\"mousedown\",(function(e){1===e.which&&n.trigger(\"toggle\",{originalEvent:e})})),this.$selection.on(\"focus\",(function(e){})),this.$selection.on(\"blur\",(function(e){})),e.on(\"focus\",(function(t){e.isOpen()||n.$selection.trigger(\"focus\")}))},i.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},i.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},i.prototype.selectionContainer=function(){return e(\"<span></span>\")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(\".select2-selection__rendered\"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr(\"title\",i):n.removeAttr(\"title\")}else this.clear()},i})),t.define(\"select2/selection/multiple\",[\"jquery\",\"./base\",\"../utils\"],(function(e,t,n){function r(e,t){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass(\"select2-selection--multiple\"),e.html('<ul class=\"select2-selection__rendered\"></ul>'),e},r.prototype.bind=function(t,i){var o=this;r.__super__.bind.apply(this,arguments),this.$selection.on(\"click\",(function(e){o.trigger(\"toggle\",{originalEvent:e})})),this.$selection.on(\"click\",\".select2-selection__choice__remove\",(function(t){if(!o.isDisabled()){var r=e(this).parent(),i=n.GetData(r[0],\"data\");o.trigger(\"unselect\",{originalEvent:t,data:i})}}))},r.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},r.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},r.prototype.selectionContainer=function(){return e('<li class=\"select2-selection__choice\"><span class=\"select2-selection__choice__remove\" role=\"presentation\">&times;</span></li>')},r.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],r=0;r<e.length;r++){var i=e[r],o=this.selectionContainer(),s=this.display(i,o);o.append(s);var a=i.title||i.text;a&&o.attr(\"title\",a),n.StoreData(o[0],\"data\",i),t.push(o)}var l=this.$selection.find(\".select2-selection__rendered\");n.appendMany(l,t)}},r})),t.define(\"select2/selection/placeholder\",[\"../utils\"],(function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get(\"placeholder\")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return\"string\"==typeof t&&(t={id:\"\",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass(\"select2-selection__placeholder\").removeClass(\"select2-selection__choice\"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();var r=this.createPlaceholder(this.placeholder);this.$selection.find(\".select2-selection__rendered\").append(r)},t})),t.define(\"select2/selection/allowClear\",[\"jquery\",\"../keys\",\"../utils\"],(function(e,t,n){function r(){}return r.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),null==this.placeholder&&this.options.get(\"debug\")&&window.console&&console.error&&console.error(\"Select2: The `allowClear` option should be used in combination with the `placeholder` option.\"),this.$selection.on(\"mousedown\",\".select2-selection__clear\",(function(e){r._handleClear(e)})),t.on(\"keypress\",(function(e){r._handleKeyboardClear(e,t)}))},r.prototype._handleClear=function(e,t){if(!this.isDisabled()){var r=this.$selection.find(\".select2-selection__clear\");if(0!==r.length){t.stopPropagation();var i=n.GetData(r[0],\"data\"),o=this.$element.val();this.$element.val(this.placeholder.id);var s={data:i};if(this.trigger(\"clear\",s),s.prevented)this.$element.val(o);else{for(var a=0;a<i.length;a++)if(s={data:i[a]},this.trigger(\"unselect\",s),s.prevented)return void this.$element.val(o);this.$element.trigger(\"input\").trigger(\"change\"),this.trigger(\"toggle\",{})}}}},r.prototype._handleKeyboardClear=function(e,n,r){r.isOpen()||n.which!=t.DELETE&&n.which!=t.BACKSPACE||this._handleClear(n)},r.prototype.update=function(t,r){if(t.call(this,r),!(0<this.$selection.find(\".select2-selection__placeholder\").length||0===r.length)){var i=this.options.get(\"translations\").get(\"removeAllItems\"),o=e('<span class=\"select2-selection__clear\" title=\"'+i()+'\">&times;</span>');n.StoreData(o[0],\"data\",r),this.$selection.find(\".select2-selection__rendered\").prepend(o)}},r})),t.define(\"select2/selection/search\",[\"jquery\",\"../utils\",\"../keys\"],(function(e,t,n){function r(e,t,n){e.call(this,t,n)}return r.prototype.render=function(t){var n=e('<li class=\"select2-search select2-search--inline\"><input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" /></li>');this.$searchContainer=n,this.$search=n.find(\"input\");var r=t.call(this);return this._transferTabIndex(),r},r.prototype.bind=function(e,r,i){var o=this,s=r.id+\"-results\";e.call(this,r,i),r.on(\"open\",(function(){o.$search.attr(\"aria-controls\",s),o.$search.trigger(\"focus\")})),r.on(\"close\",(function(){o.$search.val(\"\"),o.$search.removeAttr(\"aria-controls\"),o.$search.removeAttr(\"aria-activedescendant\"),o.$search.trigger(\"focus\")})),r.on(\"enable\",(function(){o.$search.prop(\"disabled\",!1),o._transferTabIndex()})),r.on(\"disable\",(function(){o.$search.prop(\"disabled\",!0)})),r.on(\"focus\",(function(e){o.$search.trigger(\"focus\")})),r.on(\"results:focus\",(function(e){e.data._resultId?o.$search.attr(\"aria-activedescendant\",e.data._resultId):o.$search.removeAttr(\"aria-activedescendant\")})),this.$selection.on(\"focusin\",\".select2-search--inline\",(function(e){o.trigger(\"focus\",e)})),this.$selection.on(\"focusout\",\".select2-search--inline\",(function(e){o._handleBlur(e)})),this.$selection.on(\"keydown\",\".select2-search--inline\",(function(e){if(e.stopPropagation(),o.trigger(\"keypress\",e),o._keyUpPrevented=e.isDefaultPrevented(),e.which===n.BACKSPACE&&\"\"===o.$search.val()){var r=o.$searchContainer.prev(\".select2-selection__choice\");if(0<r.length){var i=t.GetData(r[0],\"data\");o.searchRemoveChoice(i),e.preventDefault()}}})),this.$selection.on(\"click\",\".select2-search--inline\",(function(e){o.$search.val()&&e.stopPropagation()}));var a=document.documentMode,l=a&&a<=11;this.$selection.on(\"input.searchcheck\",\".select2-search--inline\",(function(e){l?o.$selection.off(\"input.search input.searchcheck\"):o.$selection.off(\"keyup.search\")})),this.$selection.on(\"keyup.search input.search\",\".select2-search--inline\",(function(e){if(l&&\"input\"===e.type)o.$selection.off(\"input.search input.searchcheck\");else{var t=e.which;t!=n.SHIFT&&t!=n.CTRL&&t!=n.ALT&&t!=n.TAB&&o.handleSearch(e)}}))},r.prototype._transferTabIndex=function(e){this.$search.attr(\"tabindex\",this.$selection.attr(\"tabindex\")),this.$selection.attr(\"tabindex\",\"-1\")},r.prototype.createPlaceholder=function(e,t){this.$search.attr(\"placeholder\",t.text)},r.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr(\"placeholder\",\"\"),e.call(this,t),this.$selection.find(\".select2-selection__rendered\").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger(\"focus\")},r.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger(\"query\",{term:e})}this._keyUpPrevented=!1},r.prototype.searchRemoveChoice=function(e,t){this.trigger(\"unselect\",{data:t}),this.$search.val(t.text),this.handleSearch()},r.prototype.resizeSearch=function(){this.$search.css(\"width\",\"25px\");var e;e=\"\"!==this.$search.attr(\"placeholder\")?this.$selection.find(\".select2-selection__rendered\").width():.75*(this.$search.val().length+1)+\"em\",this.$search.css(\"width\",e)},r})),t.define(\"select2/selection/eventRelay\",[\"jquery\"],(function(e){function t(){}return t.prototype.bind=function(t,n,r){var i=this,o=[\"open\",\"opening\",\"close\",\"closing\",\"select\",\"selecting\",\"unselect\",\"unselecting\",\"clear\",\"clearing\"],s=[\"opening\",\"closing\",\"selecting\",\"unselecting\",\"clearing\"];t.call(this,n,r),n.on(\"*\",(function(t,n){if(-1!==e.inArray(t,o)){n=n||{};var r=e.Event(\"select2:\"+t,{params:n});i.$element.trigger(r),-1!==e.inArray(t,s)&&(n.prevented=r.isDefaultPrevented())}}))},t})),t.define(\"select2/translation\",[\"jquery\",\"require\"],(function(e,t){function n(e){this.dict=e||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(e){return this.dict[e]},n.prototype.extend=function(t){this.dict=e.extend({},t.all(),this.dict)},n._cache={},n.loadPath=function(e){if(!(e in n._cache)){var r=t(e);n._cache[e]=r}return new n(n._cache[e])},n})),t.define(\"select2/diacritics\",[],(function(){return{\"Ⓐ\":\"A\",Ａ:\"A\",À:\"A\",Á:\"A\",Â:\"A\",Ầ:\"A\",Ấ:\"A\",Ẫ:\"A\",Ẩ:\"A\",Ã:\"A\",Ā:\"A\",Ă:\"A\",Ằ:\"A\",Ắ:\"A\",Ẵ:\"A\",Ẳ:\"A\",Ȧ:\"A\",Ǡ:\"A\",Ä:\"A\",Ǟ:\"A\",Ả:\"A\",Å:\"A\",Ǻ:\"A\",Ǎ:\"A\",Ȁ:\"A\",Ȃ:\"A\",Ạ:\"A\",Ậ:\"A\",Ặ:\"A\",Ḁ:\"A\",Ą:\"A\",Ⱥ:\"A\",Ɐ:\"A\",Ꜳ:\"AA\",Æ:\"AE\",Ǽ:\"AE\",Ǣ:\"AE\",Ꜵ:\"AO\",Ꜷ:\"AU\",Ꜹ:\"AV\",Ꜻ:\"AV\",Ꜽ:\"AY\",\"Ⓑ\":\"B\",Ｂ:\"B\",Ḃ:\"B\",Ḅ:\"B\",Ḇ:\"B\",Ƀ:\"B\",Ƃ:\"B\",Ɓ:\"B\",\"Ⓒ\":\"C\",Ｃ:\"C\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",Ç:\"C\",Ḉ:\"C\",Ƈ:\"C\",Ȼ:\"C\",Ꜿ:\"C\",\"Ⓓ\":\"D\",Ｄ:\"D\",Ḋ:\"D\",Ď:\"D\",Ḍ:\"D\",Ḑ:\"D\",Ḓ:\"D\",Ḏ:\"D\",Đ:\"D\",Ƌ:\"D\",Ɗ:\"D\",Ɖ:\"D\",Ꝺ:\"D\",Ǳ:\"DZ\",Ǆ:\"DZ\",ǲ:\"Dz\",ǅ:\"Dz\",\"Ⓔ\":\"E\",Ｅ:\"E\",È:\"E\",É:\"E\",Ê:\"E\",Ề:\"E\",Ế:\"E\",Ễ:\"E\",Ể:\"E\",Ẽ:\"E\",Ē:\"E\",Ḕ:\"E\",Ḗ:\"E\",Ĕ:\"E\",Ė:\"E\",Ë:\"E\",Ẻ:\"E\",Ě:\"E\",Ȅ:\"E\",Ȇ:\"E\",Ẹ:\"E\",Ệ:\"E\",Ȩ:\"E\",Ḝ:\"E\",Ę:\"E\",Ḙ:\"E\",Ḛ:\"E\",Ɛ:\"E\",Ǝ:\"E\",\"Ⓕ\":\"F\",Ｆ:\"F\",Ḟ:\"F\",Ƒ:\"F\",Ꝼ:\"F\",\"Ⓖ\":\"G\",Ｇ:\"G\",Ǵ:\"G\",Ĝ:\"G\",Ḡ:\"G\",Ğ:\"G\",Ġ:\"G\",Ǧ:\"G\",Ģ:\"G\",Ǥ:\"G\",Ɠ:\"G\",Ꞡ:\"G\",Ᵹ:\"G\",Ꝿ:\"G\",\"Ⓗ\":\"H\",Ｈ:\"H\",Ĥ:\"H\",Ḣ:\"H\",Ḧ:\"H\",Ȟ:\"H\",Ḥ:\"H\",Ḩ:\"H\",Ḫ:\"H\",Ħ:\"H\",Ⱨ:\"H\",Ⱶ:\"H\",Ɥ:\"H\",\"Ⓘ\":\"I\",Ｉ:\"I\",Ì:\"I\",Í:\"I\",Î:\"I\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",İ:\"I\",Ï:\"I\",Ḯ:\"I\",Ỉ:\"I\",Ǐ:\"I\",Ȉ:\"I\",Ȋ:\"I\",Ị:\"I\",Į:\"I\",Ḭ:\"I\",Ɨ:\"I\",\"Ⓙ\":\"J\",Ｊ:\"J\",Ĵ:\"J\",Ɉ:\"J\",\"Ⓚ\":\"K\",Ｋ:\"K\",Ḱ:\"K\",Ǩ:\"K\",Ḳ:\"K\",Ķ:\"K\",Ḵ:\"K\",Ƙ:\"K\",Ⱪ:\"K\",Ꝁ:\"K\",Ꝃ:\"K\",Ꝅ:\"K\",Ꞣ:\"K\",\"Ⓛ\":\"L\",Ｌ:\"L\",Ŀ:\"L\",Ĺ:\"L\",Ľ:\"L\",Ḷ:\"L\",Ḹ:\"L\",Ļ:\"L\",Ḽ:\"L\",Ḻ:\"L\",Ł:\"L\",Ƚ:\"L\",Ɫ:\"L\",Ⱡ:\"L\",Ꝉ:\"L\",Ꝇ:\"L\",Ꞁ:\"L\",Ǉ:\"LJ\",ǈ:\"Lj\",\"Ⓜ\":\"M\",Ｍ:\"M\",Ḿ:\"M\",Ṁ:\"M\",Ṃ:\"M\",Ɱ:\"M\",Ɯ:\"M\",\"Ⓝ\":\"N\",Ｎ:\"N\",Ǹ:\"N\",Ń:\"N\",Ñ:\"N\",Ṅ:\"N\",Ň:\"N\",Ṇ:\"N\",Ņ:\"N\",Ṋ:\"N\",Ṉ:\"N\",Ƞ:\"N\",Ɲ:\"N\",Ꞑ:\"N\",Ꞥ:\"N\",Ǌ:\"NJ\",ǋ:\"Nj\",\"Ⓞ\":\"O\",Ｏ:\"O\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Ồ:\"O\",Ố:\"O\",Ỗ:\"O\",Ổ:\"O\",Õ:\"O\",Ṍ:\"O\",Ȭ:\"O\",Ṏ:\"O\",Ō:\"O\",Ṑ:\"O\",Ṓ:\"O\",Ŏ:\"O\",Ȯ:\"O\",Ȱ:\"O\",Ö:\"O\",Ȫ:\"O\",Ỏ:\"O\",Ő:\"O\",Ǒ:\"O\",Ȍ:\"O\",Ȏ:\"O\",Ơ:\"O\",Ờ:\"O\",Ớ:\"O\",Ỡ:\"O\",Ở:\"O\",Ợ:\"O\",Ọ:\"O\",Ộ:\"O\",Ǫ:\"O\",Ǭ:\"O\",Ø:\"O\",Ǿ:\"O\",Ɔ:\"O\",Ɵ:\"O\",Ꝋ:\"O\",Ꝍ:\"O\",Œ:\"OE\",Ƣ:\"OI\",Ꝏ:\"OO\",Ȣ:\"OU\",\"Ⓟ\":\"P\",Ｐ:\"P\",Ṕ:\"P\",Ṗ:\"P\",Ƥ:\"P\",Ᵽ:\"P\",Ꝑ:\"P\",Ꝓ:\"P\",Ꝕ:\"P\",\"Ⓠ\":\"Q\",Ｑ:\"Q\",Ꝗ:\"Q\",Ꝙ:\"Q\",Ɋ:\"Q\",\"Ⓡ\":\"R\",Ｒ:\"R\",Ŕ:\"R\",Ṙ:\"R\",Ř:\"R\",Ȑ:\"R\",Ȓ:\"R\",Ṛ:\"R\",Ṝ:\"R\",Ŗ:\"R\",Ṟ:\"R\",Ɍ:\"R\",Ɽ:\"R\",Ꝛ:\"R\",Ꞧ:\"R\",Ꞃ:\"R\",\"Ⓢ\":\"S\",Ｓ:\"S\",ẞ:\"S\",Ś:\"S\",Ṥ:\"S\",Ŝ:\"S\",Ṡ:\"S\",Š:\"S\",Ṧ:\"S\",Ṣ:\"S\",Ṩ:\"S\",Ș:\"S\",Ş:\"S\",Ȿ:\"S\",Ꞩ:\"S\",Ꞅ:\"S\",\"Ⓣ\":\"T\",Ｔ:\"T\",Ṫ:\"T\",Ť:\"T\",Ṭ:\"T\",Ț:\"T\",Ţ:\"T\",Ṱ:\"T\",Ṯ:\"T\",Ŧ:\"T\",Ƭ:\"T\",Ʈ:\"T\",Ⱦ:\"T\",Ꞇ:\"T\",Ꜩ:\"TZ\",\"Ⓤ\":\"U\",Ｕ:\"U\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ũ:\"U\",Ṹ:\"U\",Ū:\"U\",Ṻ:\"U\",Ŭ:\"U\",Ü:\"U\",Ǜ:\"U\",Ǘ:\"U\",Ǖ:\"U\",Ǚ:\"U\",Ủ:\"U\",Ů:\"U\",Ű:\"U\",Ǔ:\"U\",Ȕ:\"U\",Ȗ:\"U\",Ư:\"U\",Ừ:\"U\",Ứ:\"U\",Ữ:\"U\",Ử:\"U\",Ự:\"U\",Ụ:\"U\",Ṳ:\"U\",Ų:\"U\",Ṷ:\"U\",Ṵ:\"U\",Ʉ:\"U\",\"Ⓥ\":\"V\",Ｖ:\"V\",Ṽ:\"V\",Ṿ:\"V\",Ʋ:\"V\",Ꝟ:\"V\",Ʌ:\"V\",Ꝡ:\"VY\",\"Ⓦ\":\"W\",Ｗ:\"W\",Ẁ:\"W\",Ẃ:\"W\",Ŵ:\"W\",Ẇ:\"W\",Ẅ:\"W\",Ẉ:\"W\",Ⱳ:\"W\",\"Ⓧ\":\"X\",Ｘ:\"X\",Ẋ:\"X\",Ẍ:\"X\",\"Ⓨ\":\"Y\",Ｙ:\"Y\",Ỳ:\"Y\",Ý:\"Y\",Ŷ:\"Y\",Ỹ:\"Y\",Ȳ:\"Y\",Ẏ:\"Y\",Ÿ:\"Y\",Ỷ:\"Y\",Ỵ:\"Y\",Ƴ:\"Y\",Ɏ:\"Y\",Ỿ:\"Y\",\"Ⓩ\":\"Z\",Ｚ:\"Z\",Ź:\"Z\",Ẑ:\"Z\",Ż:\"Z\",Ž:\"Z\",Ẓ:\"Z\",Ẕ:\"Z\",Ƶ:\"Z\",Ȥ:\"Z\",Ɀ:\"Z\",Ⱬ:\"Z\",Ꝣ:\"Z\",\"ⓐ\":\"a\",ａ:\"a\",ẚ:\"a\",à:\"a\",á:\"a\",â:\"a\",ầ:\"a\",ấ:\"a\",ẫ:\"a\",ẩ:\"a\",ã:\"a\",ā:\"a\",ă:\"a\",ằ:\"a\",ắ:\"a\",ẵ:\"a\",ẳ:\"a\",ȧ:\"a\",ǡ:\"a\",ä:\"a\",ǟ:\"a\",ả:\"a\",å:\"a\",ǻ:\"a\",ǎ:\"a\",ȁ:\"a\",ȃ:\"a\",ạ:\"a\",ậ:\"a\",ặ:\"a\",ḁ:\"a\",ą:\"a\",ⱥ:\"a\",ɐ:\"a\",ꜳ:\"aa\",æ:\"ae\",ǽ:\"ae\",ǣ:\"ae\",ꜵ:\"ao\",ꜷ:\"au\",ꜹ:\"av\",ꜻ:\"av\",ꜽ:\"ay\",\"ⓑ\":\"b\",ｂ:\"b\",ḃ:\"b\",ḅ:\"b\",ḇ:\"b\",ƀ:\"b\",ƃ:\"b\",ɓ:\"b\",\"ⓒ\":\"c\",ｃ:\"c\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",ç:\"c\",ḉ:\"c\",ƈ:\"c\",ȼ:\"c\",ꜿ:\"c\",ↄ:\"c\",\"ⓓ\":\"d\",ｄ:\"d\",ḋ:\"d\",ď:\"d\",ḍ:\"d\",ḑ:\"d\",ḓ:\"d\",ḏ:\"d\",đ:\"d\",ƌ:\"d\",ɖ:\"d\",ɗ:\"d\",ꝺ:\"d\",ǳ:\"dz\",ǆ:\"dz\",\"ⓔ\":\"e\",ｅ:\"e\",è:\"e\",é:\"e\",ê:\"e\",ề:\"e\",ế:\"e\",ễ:\"e\",ể:\"e\",ẽ:\"e\",ē:\"e\",ḕ:\"e\",ḗ:\"e\",ĕ:\"e\",ė:\"e\",ë:\"e\",ẻ:\"e\",ě:\"e\",ȅ:\"e\",ȇ:\"e\",ẹ:\"e\",ệ:\"e\",ȩ:\"e\",ḝ:\"e\",ę:\"e\",ḙ:\"e\",ḛ:\"e\",ɇ:\"e\",ɛ:\"e\",ǝ:\"e\",\"ⓕ\":\"f\",ｆ:\"f\",ḟ:\"f\",ƒ:\"f\",ꝼ:\"f\",\"ⓖ\":\"g\",ｇ:\"g\",ǵ:\"g\",ĝ:\"g\",ḡ:\"g\",ğ:\"g\",ġ:\"g\",ǧ:\"g\",ģ:\"g\",ǥ:\"g\",ɠ:\"g\",ꞡ:\"g\",ᵹ:\"g\",ꝿ:\"g\",\"ⓗ\":\"h\",ｈ:\"h\",ĥ:\"h\",ḣ:\"h\",ḧ:\"h\",ȟ:\"h\",ḥ:\"h\",ḩ:\"h\",ḫ:\"h\",ẖ:\"h\",ħ:\"h\",ⱨ:\"h\",ⱶ:\"h\",ɥ:\"h\",ƕ:\"hv\",\"ⓘ\":\"i\",ｉ:\"i\",ì:\"i\",í:\"i\",î:\"i\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",ï:\"i\",ḯ:\"i\",ỉ:\"i\",ǐ:\"i\",ȉ:\"i\",ȋ:\"i\",ị:\"i\",į:\"i\",ḭ:\"i\",ɨ:\"i\",ı:\"i\",\"ⓙ\":\"j\",ｊ:\"j\",ĵ:\"j\",ǰ:\"j\",ɉ:\"j\",\"ⓚ\":\"k\",ｋ:\"k\",ḱ:\"k\",ǩ:\"k\",ḳ:\"k\",ķ:\"k\",ḵ:\"k\",ƙ:\"k\",ⱪ:\"k\",ꝁ:\"k\",ꝃ:\"k\",ꝅ:\"k\",ꞣ:\"k\",\"ⓛ\":\"l\",ｌ:\"l\",ŀ:\"l\",ĺ:\"l\",ľ:\"l\",ḷ:\"l\",ḹ:\"l\",ļ:\"l\",ḽ:\"l\",ḻ:\"l\",ſ:\"l\",ł:\"l\",ƚ:\"l\",ɫ:\"l\",ⱡ:\"l\",ꝉ:\"l\",ꞁ:\"l\",ꝇ:\"l\",ǉ:\"lj\",\"ⓜ\":\"m\",ｍ:\"m\",ḿ:\"m\",ṁ:\"m\",ṃ:\"m\",ɱ:\"m\",ɯ:\"m\",\"ⓝ\":\"n\",ｎ:\"n\",ǹ:\"n\",ń:\"n\",ñ:\"n\",ṅ:\"n\",ň:\"n\",ṇ:\"n\",ņ:\"n\",ṋ:\"n\",ṉ:\"n\",ƞ:\"n\",ɲ:\"n\",ŉ:\"n\",ꞑ:\"n\",ꞥ:\"n\",ǌ:\"nj\",\"ⓞ\":\"o\",ｏ:\"o\",ò:\"o\",ó:\"o\",ô:\"o\",ồ:\"o\",ố:\"o\",ỗ:\"o\",ổ:\"o\",õ:\"o\",ṍ:\"o\",ȭ:\"o\",ṏ:\"o\",ō:\"o\",ṑ:\"o\",ṓ:\"o\",ŏ:\"o\",ȯ:\"o\",ȱ:\"o\",ö:\"o\",ȫ:\"o\",ỏ:\"o\",ő:\"o\",ǒ:\"o\",ȍ:\"o\",ȏ:\"o\",ơ:\"o\",ờ:\"o\",ớ:\"o\",ỡ:\"o\",ở:\"o\",ợ:\"o\",ọ:\"o\",ộ:\"o\",ǫ:\"o\",ǭ:\"o\",ø:\"o\",ǿ:\"o\",ɔ:\"o\",ꝋ:\"o\",ꝍ:\"o\",ɵ:\"o\",œ:\"oe\",ƣ:\"oi\",ȣ:\"ou\",ꝏ:\"oo\",\"ⓟ\":\"p\",ｐ:\"p\",ṕ:\"p\",ṗ:\"p\",ƥ:\"p\",ᵽ:\"p\",ꝑ:\"p\",ꝓ:\"p\",ꝕ:\"p\",\"ⓠ\":\"q\",ｑ:\"q\",ɋ:\"q\",ꝗ:\"q\",ꝙ:\"q\",\"ⓡ\":\"r\",ｒ:\"r\",ŕ:\"r\",ṙ:\"r\",ř:\"r\",ȑ:\"r\",ȓ:\"r\",ṛ:\"r\",ṝ:\"r\",ŗ:\"r\",ṟ:\"r\",ɍ:\"r\",ɽ:\"r\",ꝛ:\"r\",ꞧ:\"r\",ꞃ:\"r\",\"ⓢ\":\"s\",ｓ:\"s\",ß:\"s\",ś:\"s\",ṥ:\"s\",ŝ:\"s\",ṡ:\"s\",š:\"s\",ṧ:\"s\",ṣ:\"s\",ṩ:\"s\",ș:\"s\",ş:\"s\",ȿ:\"s\",ꞩ:\"s\",ꞅ:\"s\",ẛ:\"s\",\"ⓣ\":\"t\",ｔ:\"t\",ṫ:\"t\",ẗ:\"t\",ť:\"t\",ṭ:\"t\",ț:\"t\",ţ:\"t\",ṱ:\"t\",ṯ:\"t\",ŧ:\"t\",ƭ:\"t\",ʈ:\"t\",ⱦ:\"t\",ꞇ:\"t\",ꜩ:\"tz\",\"ⓤ\":\"u\",ｕ:\"u\",ù:\"u\",ú:\"u\",û:\"u\",ũ:\"u\",ṹ:\"u\",ū:\"u\",ṻ:\"u\",ŭ:\"u\",ü:\"u\",ǜ:\"u\",ǘ:\"u\",ǖ:\"u\",ǚ:\"u\",ủ:\"u\",ů:\"u\",ű:\"u\",ǔ:\"u\",ȕ:\"u\",ȗ:\"u\",ư:\"u\",ừ:\"u\",ứ:\"u\",ữ:\"u\",ử:\"u\",ự:\"u\",ụ:\"u\",ṳ:\"u\",ų:\"u\",ṷ:\"u\",ṵ:\"u\",ʉ:\"u\",\"ⓥ\":\"v\",ｖ:\"v\",ṽ:\"v\",ṿ:\"v\",ʋ:\"v\",ꝟ:\"v\",ʌ:\"v\",ꝡ:\"vy\",\"ⓦ\":\"w\",ｗ:\"w\",ẁ:\"w\",ẃ:\"w\",ŵ:\"w\",ẇ:\"w\",ẅ:\"w\",ẘ:\"w\",ẉ:\"w\",ⱳ:\"w\",\"ⓧ\":\"x\",ｘ:\"x\",ẋ:\"x\",ẍ:\"x\",\"ⓨ\":\"y\",ｙ:\"y\",ỳ:\"y\",ý:\"y\",ŷ:\"y\",ỹ:\"y\",ȳ:\"y\",ẏ:\"y\",ÿ:\"y\",ỷ:\"y\",ẙ:\"y\",ỵ:\"y\",ƴ:\"y\",ɏ:\"y\",ỿ:\"y\",\"ⓩ\":\"z\",ｚ:\"z\",ź:\"z\",ẑ:\"z\",ż:\"z\",ž:\"z\",ẓ:\"z\",ẕ:\"z\",ƶ:\"z\",ȥ:\"z\",ɀ:\"z\",ⱬ:\"z\",ꝣ:\"z\",Ά:\"Α\",Έ:\"Ε\",Ή:\"Η\",Ί:\"Ι\",Ϊ:\"Ι\",Ό:\"Ο\",Ύ:\"Υ\",Ϋ:\"Υ\",Ώ:\"Ω\",ά:\"α\",έ:\"ε\",ή:\"η\",ί:\"ι\",ϊ:\"ι\",ΐ:\"ι\",ό:\"ο\",ύ:\"υ\",ϋ:\"υ\",ΰ:\"υ\",ώ:\"ω\",ς:\"σ\",\"’\":\"'\"}})),t.define(\"select2/data/base\",[\"../utils\"],(function(e){function t(e,n){t.__super__.constructor.call(this)}return e.Extend(t,e.Observable),t.prototype.current=function(e){throw new Error(\"The `current` method must be defined in child classes.\")},t.prototype.query=function(e,t){throw new Error(\"The `query` method must be defined in child classes.\")},t.prototype.bind=function(e,t){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,n){var r=t.id+\"-result-\";return r+=e.generateChars(4),null!=n.id?r+=\"-\"+n.id.toString():r+=\"-\"+e.generateChars(4),r},t})),t.define(\"select2/data/select\",[\"./base\",\"../utils\",\"jquery\"],(function(e,t,n){function r(e,t){this.$element=e,this.options=t,r.__super__.constructor.call(this)}return t.Extend(r,e),r.prototype.current=function(e){var t=[],r=this;this.$element.find(\":selected\").each((function(){var e=n(this),i=r.item(e);t.push(i)})),e(t)},r.prototype.select=function(e){var t=this;if(e.selected=!0,n(e.element).is(\"option\"))return e.element.selected=!0,void this.$element.trigger(\"input\").trigger(\"change\");if(this.$element.prop(\"multiple\"))this.current((function(r){var i=[];(e=[e]).push.apply(e,r);for(var o=0;o<e.length;o++){var s=e[o].id;-1===n.inArray(s,i)&&i.push(s)}t.$element.val(i),t.$element.trigger(\"input\").trigger(\"change\")}));else{var r=e.id;this.$element.val(r),this.$element.trigger(\"input\").trigger(\"change\")}},r.prototype.unselect=function(e){var t=this;if(this.$element.prop(\"multiple\")){if(e.selected=!1,n(e.element).is(\"option\"))return e.element.selected=!1,void this.$element.trigger(\"input\").trigger(\"change\");this.current((function(r){for(var i=[],o=0;o<r.length;o++){var s=r[o].id;s!==e.id&&-1===n.inArray(s,i)&&i.push(s)}t.$element.val(i),t.$element.trigger(\"input\").trigger(\"change\")}))}},r.prototype.bind=function(e,t){var n=this;(this.container=e).on(\"select\",(function(e){n.select(e.data)})),e.on(\"unselect\",(function(e){n.unselect(e.data)}))},r.prototype.destroy=function(){this.$element.find(\"*\").each((function(){t.RemoveData(this)}))},r.prototype.query=function(e,t){var r=[],i=this;this.$element.children().each((function(){var t=n(this);if(t.is(\"option\")||t.is(\"optgroup\")){var o=i.item(t),s=i.matches(e,o);null!==s&&r.push(s)}})),t({results:r})},r.prototype.addOptions=function(e){t.appendMany(this.$element,e)},r.prototype.option=function(e){var r;e.children?(r=document.createElement(\"optgroup\")).label=e.text:void 0!==(r=document.createElement(\"option\")).textContent?r.textContent=e.text:r.innerText=e.text,void 0!==e.id&&(r.value=e.id),e.disabled&&(r.disabled=!0),e.selected&&(r.selected=!0),e.title&&(r.title=e.title);var i=n(r),o=this._normalizeItem(e);return o.element=r,t.StoreData(r,\"data\",o),i},r.prototype.item=function(e){var r={};if(null!=(r=t.GetData(e[0],\"data\")))return r;if(e.is(\"option\"))r={id:e.val(),text:e.text(),disabled:e.prop(\"disabled\"),selected:e.prop(\"selected\"),title:e.prop(\"title\")};else if(e.is(\"optgroup\")){r={text:e.prop(\"label\"),children:[],title:e.prop(\"title\")};for(var i=e.children(\"option\"),o=[],s=0;s<i.length;s++){var a=n(i[s]),l=this.item(a);o.push(l)}r.children=o}return(r=this._normalizeItem(r)).element=e[0],t.StoreData(e[0],\"data\",r),r},r.prototype._normalizeItem=function(e){return e!==Object(e)&&(e={id:e,text:e}),null!=(e=n.extend({},{text:\"\"},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),n.extend({},{selected:!1,disabled:!1},e)},r.prototype.matches=function(e,t){return this.options.get(\"matcher\")(e,t)},r})),t.define(\"select2/data/array\",[\"./select\",\"../utils\",\"jquery\"],(function(e,t,n){function r(e,t){this._dataToConvert=t.get(\"data\")||[],r.__super__.constructor.call(this,e,t)}return t.Extend(r,e),r.prototype.bind=function(e,t){r.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},r.prototype.select=function(e){var t=this.$element.find(\"option\").filter((function(t,n){return n.value==e.id.toString()}));0===t.length&&(t=this.option(e),this.addOptions(t)),r.__super__.select.call(this,e)},r.prototype.convertToOptions=function(e){var r=this,i=this.$element.find(\"option\"),o=i.map((function(){return r.item(n(this)).id})).get(),s=[];function a(e){return function(){return n(this).val()==e.id}}for(var l=0;l<e.length;l++){var c=this._normalizeItem(e[l]);if(0<=n.inArray(c.id,o)){var u=i.filter(a(c)),p=this.item(u),d=n.extend(!0,{},c,p),f=this.option(d);u.replaceWith(f)}else{var h=this.option(c);if(c.children){var g=this.convertToOptions(c.children);t.appendMany(h,g)}s.push(h)}}return s},r})),t.define(\"select2/data/ajax\",[\"./array\",\"../utils\",\"jquery\"],(function(e,t,n){function r(e,t){this.ajaxOptions=this._applyDefaults(t.get(\"ajax\")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),r.__super__.constructor.call(this,e,t)}return t.Extend(r,e),r.prototype._applyDefaults=function(e){var t={data:function(e){return n.extend({},e,{q:e.term})},transport:function(e,t,r){var i=n.ajax(e);return i.then(t),i.fail(r),i}};return n.extend({},t,e,!0)},r.prototype.processResults=function(e){return e},r.prototype.query=function(e,t){var r=this;null!=this._request&&(n.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var i=n.extend({type:\"GET\"},this.ajaxOptions);function o(){var o=i.transport(i,(function(i){var o=r.processResults(i,e);r.options.get(\"debug\")&&window.console&&console.error&&(o&&o.results&&n.isArray(o.results)||console.error(\"Select2: The AJAX results did not return an array in the `results` key of the response.\")),t(o)}),(function(){\"status\"in o&&(0===o.status||\"0\"===o.status)||r.trigger(\"results:message\",{message:\"errorLoading\"})}));r._request=o}\"function\"==typeof i.url&&(i.url=i.url.call(this.$element,e)),\"function\"==typeof i.data&&(i.data=i.data.call(this.$element,e)),this.ajaxOptions.delay&&null!=e.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(o,this.ajaxOptions.delay)):o()},r})),t.define(\"select2/data/tags\",[\"jquery\"],(function(e){function t(t,n,r){var i=r.get(\"tags\"),o=r.get(\"createTag\");void 0!==o&&(this.createTag=o);var s=r.get(\"insertTag\");if(void 0!==s&&(this.insertTag=s),t.call(this,n,r),e.isArray(i))for(var a=0;a<i.length;a++){var l=i[a],c=this._normalizeItem(l),u=this.option(c);this.$element.append(u)}}return t.prototype.query=function(e,t,n){var r=this;this._removeOldTags(),null!=t.term&&null==t.page?e.call(this,t,(function e(i,o){for(var s=i.results,a=0;a<s.length;a++){var l=s[a],c=null!=l.children&&!e({results:l.children},!0);if((l.text||\"\").toUpperCase()===(t.term||\"\").toUpperCase()||c)return!o&&(i.data=s,void n(i))}if(o)return!0;var u=r.createTag(t);if(null!=u){var p=r.option(u);p.attr(\"data-select2-tag\",!0),r.addOptions([p]),r.insertTag(s,u)}i.results=s,n(i)})):e.call(this,t,n)},t.prototype.createTag=function(t,n){var r=e.trim(n.term);return\"\"===r?null:{id:r,text:r}},t.prototype.insertTag=function(e,t,n){t.unshift(n)},t.prototype._removeOldTags=function(t){this.$element.find(\"option[data-select2-tag]\").each((function(){this.selected||e(this).remove()}))},t})),t.define(\"select2/data/tokenizer\",[\"jquery\"],(function(e){function t(e,t,n){var r=n.get(\"tokenizer\");void 0!==r&&(this.tokenizer=r),e.call(this,t,n)}return t.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(\".select2-search__field\")},t.prototype.query=function(t,n,r){var i=this;n.term=n.term||\"\";var o=this.tokenizer(n,this.options,(function(t){var n,r=i._normalizeItem(t);if(!i.$element.find(\"option\").filter((function(){return e(this).val()===r.id})).length){var o=i.option(r);o.attr(\"data-select2-tag\",!0),i._removeOldTags(),i.addOptions([o])}n=r,i.trigger(\"select\",{data:n})}));o.term!==n.term&&(this.$search.length&&(this.$search.val(o.term),this.$search.trigger(\"focus\")),n.term=o.term),t.call(this,n,r)},t.prototype.tokenizer=function(t,n,r,i){for(var o=r.get(\"tokenSeparators\")||[],s=n.term,a=0,l=this.createTag||function(e){return{id:e.term,text:e.term}};a<s.length;){var c=s[a];if(-1!==e.inArray(c,o)){var u=s.substr(0,a),p=l(e.extend({},n,{term:u}));null!=p?(i(p),s=s.substr(a+1)||\"\",a=0):a++}else a++}return{term:s}},t})),t.define(\"select2/data/minimumInputLength\",[],(function(){function e(e,t,n){this.minimumInputLength=n.get(\"minimumInputLength\"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||\"\",t.term.length<this.minimumInputLength?this.trigger(\"results:message\",{message:\"inputTooShort\",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),t.define(\"select2/data/maximumInputLength\",[],(function(){function e(e,t,n){this.maximumInputLength=n.get(\"maximumInputLength\"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||\"\",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger(\"results:message\",{message:\"inputTooLong\",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),t.define(\"select2/data/maximumSelectionLength\",[],(function(){function e(e,t,n){this.maximumSelectionLength=n.get(\"maximumSelectionLength\"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on(\"select\",(function(){r._checkIfMaximumSelected()}))},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected((function(){e.call(r,t,n)}))},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current((function(e){var r=null!=e?e.length:0;0<n.maximumSelectionLength&&r>=n.maximumSelectionLength?n.trigger(\"results:message\",{message:\"maximumSelected\",args:{maximum:n.maximumSelectionLength}}):t&&t()}))},e})),t.define(\"select2/dropdown\",[\"jquery\",\"./utils\"],(function(e,t){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<span class=\"select2-dropdown\"><span class=\"select2-results\"></span></span>');return t.attr(\"dir\",this.options.get(\"dir\")),this.$dropdown=t},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n})),t.define(\"select2/dropdown/search\",[\"jquery\",\"../utils\"],(function(e,t){function n(){}return n.prototype.render=function(t){var n=t.call(this),r=e('<span class=\"select2-search select2-search--dropdown\"><input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" /></span>');return this.$searchContainer=r,this.$search=r.find(\"input\"),n.prepend(r),n},n.prototype.bind=function(t,n,r){var i=this,o=n.id+\"-results\";t.call(this,n,r),this.$search.on(\"keydown\",(function(e){i.trigger(\"keypress\",e),i._keyUpPrevented=e.isDefaultPrevented()})),this.$search.on(\"input\",(function(t){e(this).off(\"keyup\")})),this.$search.on(\"keyup input\",(function(e){i.handleSearch(e)})),n.on(\"open\",(function(){i.$search.attr(\"tabindex\",0),i.$search.attr(\"aria-controls\",o),i.$search.trigger(\"focus\"),window.setTimeout((function(){i.$search.trigger(\"focus\")}),0)})),n.on(\"close\",(function(){i.$search.attr(\"tabindex\",-1),i.$search.removeAttr(\"aria-controls\"),i.$search.removeAttr(\"aria-activedescendant\"),i.$search.val(\"\"),i.$search.trigger(\"blur\")})),n.on(\"focus\",(function(){n.isOpen()||i.$search.trigger(\"focus\")})),n.on(\"results:all\",(function(e){null!=e.query.term&&\"\"!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass(\"select2-search--hide\"):i.$searchContainer.addClass(\"select2-search--hide\"))})),n.on(\"results:focus\",(function(e){e.data._resultId?i.$search.attr(\"aria-activedescendant\",e.data._resultId):i.$search.removeAttr(\"aria-activedescendant\")}))},n.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger(\"query\",{term:t})}this._keyUpPrevented=!1},n.prototype.showSearch=function(e,t){return!0},n})),t.define(\"select2/dropdown/hidePlaceholder\",[],(function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get(\"placeholder\")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return\"string\"==typeof t&&(t={id:\"\",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e})),t.define(\"select2/dropdown/infiniteScroll\",[\"jquery\"],(function(e){function t(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return t.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},t.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on(\"query\",(function(e){r.lastParams=e,r.loading=!0})),t.on(\"query:append\",(function(e){r.lastParams=e,r.loading=!0})),this.$results.on(\"scroll\",this.loadMoreIfNeeded.bind(this))},t.prototype.loadMoreIfNeeded=function(){var t=e.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&t){var n=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=n+50&&this.loadMore()}},t.prototype.loadMore=function(){this.loading=!0;var t=e.extend({},{page:1},this.lastParams);t.page++,this.trigger(\"query:append\",t)},t.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=e('<li class=\"select2-results__option select2-results__option--load-more\"role=\"option\" aria-disabled=\"true\"></li>'),n=this.options.get(\"translations\").get(\"loadingMore\");return t.html(n(this.lastParams)),t},t})),t.define(\"select2/dropdown/attachBody\",[\"jquery\",\"../utils\"],(function(e,t){function n(t,n,r){this.$dropdownParent=e(r.get(\"dropdownParent\")||document.body),t.call(this,n,r)}return n.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on(\"open\",(function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)})),t.on(\"close\",(function(){r._hideDropdown(),r._detachPositioningHandler(t)})),this.$dropdownContainer.on(\"mousedown\",(function(e){e.stopPropagation()}))},n.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(e,t,n){t.attr(\"class\",n.attr(\"class\")),t.removeClass(\"select2\"),t.addClass(\"select2-container--open\"),t.css({position:\"absolute\",top:-999999}),this.$container=n},n.prototype.render=function(t){var n=e(\"<span></span>\"),r=t.call(this);return n.append(r),this.$dropdownContainer=n},n.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},n.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on(\"results:all\",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on(\"results:append\",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on(\"results:message\",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on(\"select\",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on(\"unselect\",(function(){n._positionDropdown(),n._resizeDropdown()})),this._containerResultsHandlersBound=!0}},n.prototype._attachPositioningHandler=function(n,r){var i=this,o=\"scroll.select2.\"+r.id,s=\"resize.select2.\"+r.id,a=\"orientationchange.select2.\"+r.id,l=this.$container.parents().filter(t.hasScroll);l.each((function(){t.StoreData(this,\"select2-scroll-position\",{x:e(this).scrollLeft(),y:e(this).scrollTop()})})),l.on(o,(function(n){var r=t.GetData(this,\"select2-scroll-position\");e(this).scrollTop(r.y)})),e(window).on(o+\" \"+s+\" \"+a,(function(e){i._positionDropdown(),i._resizeDropdown()}))},n.prototype._detachPositioningHandler=function(n,r){var i=\"scroll.select2.\"+r.id,o=\"resize.select2.\"+r.id,s=\"orientationchange.select2.\"+r.id;this.$container.parents().filter(t.hasScroll).off(i),e(window).off(i+\" \"+o+\" \"+s)},n.prototype._positionDropdown=function(){var t=e(window),n=this.$dropdown.hasClass(\"select2-dropdown--above\"),r=this.$dropdown.hasClass(\"select2-dropdown--below\"),i=null,o=this.$container.offset();o.bottom=o.top+this.$container.outerHeight(!1);var s={height:this.$container.outerHeight(!1)};s.top=o.top,s.bottom=o.top+s.height;var a=this.$dropdown.outerHeight(!1),l=t.scrollTop(),c=t.scrollTop()+t.height(),u=l<o.top-a,p=c>o.bottom+a,d={left:o.left,top:s.bottom},f=this.$dropdownParent;\"static\"===f.css(\"position\")&&(f=f.offsetParent());var h={top:0,left:0};(e.contains(document.body,f[0])||f[0].isConnected)&&(h=f.offset()),d.top-=h.top,d.left-=h.left,n||r||(i=\"below\"),p||!u||n?!u&&p&&n&&(i=\"below\"):i=\"above\",(\"above\"==i||n&&\"below\"!==i)&&(d.top=s.top-h.top-a),null!=i&&(this.$dropdown.removeClass(\"select2-dropdown--below select2-dropdown--above\").addClass(\"select2-dropdown--\"+i),this.$container.removeClass(\"select2-container--below select2-container--above\").addClass(\"select2-container--\"+i)),this.$dropdownContainer.css(d)},n.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+\"px\"};this.options.get(\"dropdownAutoWidth\")&&(e.minWidth=e.width,e.position=\"relative\",e.width=\"auto\"),this.$dropdown.css(e)},n.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n})),t.define(\"select2/dropdown/minimumResultsForSearch\",[],(function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get(\"minimumResultsForSearch\"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r<t.length;r++){var i=t[r];i.children?n+=e(i.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e})),t.define(\"select2/dropdown/selectOnClose\",[\"../utils\"],(function(e){function t(){}return t.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on(\"close\",(function(e){r._handleSelectOnClose(e)}))},t.prototype._handleSelectOnClose=function(t,n){if(n&&null!=n.originalSelect2Event){var r=n.originalSelect2Event;if(\"select\"===r._type||\"unselect\"===r._type)return}var i=this.getHighlightedResults();if(!(i.length<1)){var o=e.GetData(i[0],\"data\");null!=o.element&&o.element.selected||null==o.element&&o.selected||this.trigger(\"select\",{data:o})}},t})),t.define(\"select2/dropdown/closeOnSelect\",[],(function(){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on(\"select\",(function(e){r._selectTriggered(e)})),t.on(\"unselect\",(function(e){r._selectTriggered(e)}))},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger(\"close\",{originalEvent:n,originalSelect2Event:t})},e})),t.define(\"select2/i18n/en\",[],(function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Please delete \"+t+\" character\";return 1!=t&&(n+=\"s\"),n},inputTooShort:function(e){return\"Please enter \"+(e.minimum-e.input.length)+\" or more characters\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var t=\"You can only select \"+e.maximum+\" item\";return 1!=e.maximum&&(t+=\"s\"),t},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"},removeAllItems:function(){return\"Remove all items\"}}})),t.define(\"select2/defaults\",[\"jquery\",\"require\",\"./results\",\"./selection/single\",\"./selection/multiple\",\"./selection/placeholder\",\"./selection/allowClear\",\"./selection/search\",\"./selection/eventRelay\",\"./utils\",\"./translation\",\"./diacritics\",\"./data/select\",\"./data/array\",\"./data/ajax\",\"./data/tags\",\"./data/tokenizer\",\"./data/minimumInputLength\",\"./data/maximumInputLength\",\"./data/maximumSelectionLength\",\"./dropdown\",\"./dropdown/search\",\"./dropdown/hidePlaceholder\",\"./dropdown/infiniteScroll\",\"./dropdown/attachBody\",\"./dropdown/minimumResultsForSearch\",\"./dropdown/selectOnClose\",\"./dropdown/closeOnSelect\",\"./i18n/en\"],(function(e,t,n,r,i,o,s,a,l,c,u,p,d,f,h,g,m,v,y,b,x,w,_,T,C,A,E,S,$){function D(){this.reset()}return D.prototype.apply=function(u){if(null==(u=e.extend(!0,{},this.defaults,u)).dataAdapter){if(null!=u.ajax?u.dataAdapter=h:null!=u.data?u.dataAdapter=f:u.dataAdapter=d,0<u.minimumInputLength&&(u.dataAdapter=c.Decorate(u.dataAdapter,v)),0<u.maximumInputLength&&(u.dataAdapter=c.Decorate(u.dataAdapter,y)),0<u.maximumSelectionLength&&(u.dataAdapter=c.Decorate(u.dataAdapter,b)),u.tags&&(u.dataAdapter=c.Decorate(u.dataAdapter,g)),null==u.tokenSeparators&&null==u.tokenizer||(u.dataAdapter=c.Decorate(u.dataAdapter,m)),null!=u.query){var p=t(u.amdBase+\"compat/query\");u.dataAdapter=c.Decorate(u.dataAdapter,p)}if(null!=u.initSelection){var $=t(u.amdBase+\"compat/initSelection\");u.dataAdapter=c.Decorate(u.dataAdapter,$)}}if(null==u.resultsAdapter&&(u.resultsAdapter=n,null!=u.ajax&&(u.resultsAdapter=c.Decorate(u.resultsAdapter,T)),null!=u.placeholder&&(u.resultsAdapter=c.Decorate(u.resultsAdapter,_)),u.selectOnClose&&(u.resultsAdapter=c.Decorate(u.resultsAdapter,E))),null==u.dropdownAdapter){if(u.multiple)u.dropdownAdapter=x;else{var D=c.Decorate(x,w);u.dropdownAdapter=D}if(0!==u.minimumResultsForSearch&&(u.dropdownAdapter=c.Decorate(u.dropdownAdapter,A)),u.closeOnSelect&&(u.dropdownAdapter=c.Decorate(u.dropdownAdapter,S)),null!=u.dropdownCssClass||null!=u.dropdownCss||null!=u.adaptDropdownCssClass){var k=t(u.amdBase+\"compat/dropdownCss\");u.dropdownAdapter=c.Decorate(u.dropdownAdapter,k)}u.dropdownAdapter=c.Decorate(u.dropdownAdapter,C)}if(null==u.selectionAdapter){if(u.multiple?u.selectionAdapter=i:u.selectionAdapter=r,null!=u.placeholder&&(u.selectionAdapter=c.Decorate(u.selectionAdapter,o)),u.allowClear&&(u.selectionAdapter=c.Decorate(u.selectionAdapter,s)),u.multiple&&(u.selectionAdapter=c.Decorate(u.selectionAdapter,a)),null!=u.containerCssClass||null!=u.containerCss||null!=u.adaptContainerCssClass){var j=t(u.amdBase+\"compat/containerCss\");u.selectionAdapter=c.Decorate(u.selectionAdapter,j)}u.selectionAdapter=c.Decorate(u.selectionAdapter,l)}u.language=this._resolveLanguage(u.language),u.language.push(\"en\");for(var L=[],O=0;O<u.language.length;O++){var q=u.language[O];-1===L.indexOf(q)&&L.push(q)}return u.language=L,u.translations=this._processTranslations(u.language,u.debug),u},D.prototype.reset=function(){function t(e){return e.replace(/[^\\u0000-\\u007E]/g,(function(e){return p[e]||e}))}this.defaults={amdBase:\"./\",amdLanguageBase:\"./i18n/\",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:c.escapeMarkup,language:{},matcher:function n(r,i){if(\"\"===e.trim(r.term))return i;if(i.children&&0<i.children.length){for(var o=e.extend(!0,{},i),s=i.children.length-1;0<=s;s--)null==n(r,i.children[s])&&o.children.splice(s,1);return 0<o.children.length?o:n(r,o)}var a=t(i.text).toUpperCase(),l=t(r.term).toUpperCase();return-1<a.indexOf(l)?i:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:\"default\",width:\"resolve\"}},D.prototype.applyFromElement=function(e,t){var n=e.language,r=this.defaults.language,i=t.prop(\"lang\"),o=t.closest(\"[lang]\").prop(\"lang\"),s=Array.prototype.concat.call(this._resolveLanguage(i),this._resolveLanguage(n),this._resolveLanguage(r),this._resolveLanguage(o));return e.language=s,e},D.prototype._resolveLanguage=function(t){if(!t)return[];if(e.isEmptyObject(t))return[];if(e.isPlainObject(t))return[t];var n;n=e.isArray(t)?t:[t];for(var r=[],i=0;i<n.length;i++)if(r.push(n[i]),\"string\"==typeof n[i]&&0<n[i].indexOf(\"-\")){var o=n[i].split(\"-\")[0];r.push(o)}return r},D.prototype._processTranslations=function(t,n){for(var r=new u,i=0;i<t.length;i++){var o=new u,s=t[i];if(\"string\"==typeof s)try{o=u.loadPath(s)}catch(t){try{s=this.defaults.amdLanguageBase+s,o=u.loadPath(s)}catch(t){n&&window.console&&console.warn&&console.warn('Select2: The language file for \"'+s+'\" could not be automatically loaded. A fallback will be used instead.')}}else o=e.isPlainObject(s)?new u(s):s;r.extend(o)}return r},D.prototype.set=function(t,n){var r={};r[e.camelCase(t)]=n;var i=c._convertData(r);e.extend(!0,this.defaults,i)},new D})),t.define(\"select2/options\",[\"require\",\"jquery\",\"./defaults\",\"./utils\"],(function(e,t,n,r){function i(t,i){if(this.options=t,null!=i&&this.fromElement(i),null!=i&&(this.options=n.applyFromElement(this.options,i)),this.options=n.apply(this.options),i&&i.is(\"input\")){var o=e(this.get(\"amdBase\")+\"compat/inputData\");this.options.dataAdapter=r.Decorate(this.options.dataAdapter,o)}}return i.prototype.fromElement=function(e){var n=[\"select2\"];null==this.options.multiple&&(this.options.multiple=e.prop(\"multiple\")),null==this.options.disabled&&(this.options.disabled=e.prop(\"disabled\")),null==this.options.dir&&(e.prop(\"dir\")?this.options.dir=e.prop(\"dir\"):e.closest(\"[dir]\").prop(\"dir\")?this.options.dir=e.closest(\"[dir]\").prop(\"dir\"):this.options.dir=\"ltr\"),e.prop(\"disabled\",this.options.disabled),e.prop(\"multiple\",this.options.multiple),r.GetData(e[0],\"select2Tags\")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags=\"true\"` attributes and will be removed in future versions of Select2.'),r.StoreData(e[0],\"data\",r.GetData(e[0],\"select2Tags\")),r.StoreData(e[0],\"tags\",!0)),r.GetData(e[0],\"ajaxUrl\")&&(this.options.debug&&window.console&&console.warn&&console.warn(\"Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2.\"),e.attr(\"ajax--url\",r.GetData(e[0],\"ajaxUrl\")),r.StoreData(e[0],\"ajax-Url\",r.GetData(e[0],\"ajaxUrl\")));var i={};function o(e,t){return t.toUpperCase()}for(var s=0;s<e[0].attributes.length;s++){var a=e[0].attributes[s].name,l=\"data-\";if(a.substr(0,l.length)==l){var c=a.substring(l.length),u=r.GetData(e[0],c);i[c.replace(/-([a-z])/g,o)]=u}}t.fn.jquery&&\"1.\"==t.fn.jquery.substr(0,2)&&e[0].dataset&&(i=t.extend(!0,{},e[0].dataset,i));var p=t.extend(!0,{},r.GetData(e[0]),i);for(var d in p=r._convertData(p))-1<t.inArray(d,n)||(t.isPlainObject(this.options[d])?t.extend(this.options[d],p[d]):this.options[d]=p[d]);return this},i.prototype.get=function(e){return this.options[e]},i.prototype.set=function(e,t){this.options[e]=t},i})),t.define(\"select2/core\",[\"jquery\",\"./options\",\"./utils\",\"./keys\"],(function(e,t,n,r){var i=function(e,r){null!=n.GetData(e[0],\"select2\")&&n.GetData(e[0],\"select2\").destroy(),this.$element=e,this.id=this._generateId(e),r=r||{},this.options=new t(r,e),i.__super__.constructor.call(this);var o=e.attr(\"tabindex\")||0;n.StoreData(e[0],\"old-tabindex\",o),e.attr(\"tabindex\",\"-1\");var s=this.options.get(\"dataAdapter\");this.dataAdapter=new s(e,this.options);var a=this.render();this._placeContainer(a);var l=this.options.get(\"selectionAdapter\");this.selection=new l(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,a);var c=this.options.get(\"dropdownAdapter\");this.dropdown=new c(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,a);var u=this.options.get(\"resultsAdapter\");this.results=new u(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var p=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current((function(e){p.trigger(\"selection:update\",{data:e})})),e.addClass(\"select2-hidden-accessible\"),e.attr(\"aria-hidden\",\"true\"),this._syncAttributes(),n.StoreData(e[0],\"select2\",this),e.data(\"select2\",this)};return n.Extend(i,n.Observable),i.prototype._generateId=function(e){return\"select2-\"+(null!=e.attr(\"id\")?e.attr(\"id\"):null!=e.attr(\"name\")?e.attr(\"name\")+\"-\"+n.generateChars(2):n.generateChars(4)).replace(/(:|\\.|\\[|\\]|,)/g,\"\")},i.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get(\"width\"));null!=t&&e.css(\"width\",t)},i.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if(\"resolve\"==t){var r=this._resolveWidth(e,\"style\");return null!=r?r:this._resolveWidth(e,\"element\")}if(\"element\"==t){var i=e.outerWidth(!1);return i<=0?\"auto\":i+\"px\"}if(\"style\"!=t)return\"computedstyle\"!=t?t:window.getComputedStyle(e[0]).width;var o=e.attr(\"style\");if(\"string\"!=typeof o)return null;for(var s=o.split(\";\"),a=0,l=s.length;a<l;a+=1){var c=s[a].replace(/\\s/g,\"\").match(n);if(null!==c&&1<=c.length)return c[1]}return null},i.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},i.prototype._registerDomEvents=function(){var e=this;this.$element.on(\"change.select2\",(function(){e.dataAdapter.current((function(t){e.trigger(\"selection:update\",{data:t})}))})),this.$element.on(\"focus.select2\",(function(t){e.trigger(\"focus\",t)})),this._syncA=n.bind(this._syncAttributes,this),this._syncS=n.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent(\"onpropertychange\",this._syncA);var t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=t?(this._observer=new t((function(t){e._syncA(),e._syncS(null,t)})),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener(\"DOMAttrModified\",e._syncA,!1),this.$element[0].addEventListener(\"DOMNodeInserted\",e._syncS,!1),this.$element[0].addEventListener(\"DOMNodeRemoved\",e._syncS,!1))},i.prototype._registerDataEvents=function(){var e=this;this.dataAdapter.on(\"*\",(function(t,n){e.trigger(t,n)}))},i.prototype._registerSelectionEvents=function(){var t=this,n=[\"toggle\",\"focus\"];this.selection.on(\"toggle\",(function(){t.toggleDropdown()})),this.selection.on(\"focus\",(function(e){t.focus(e)})),this.selection.on(\"*\",(function(r,i){-1===e.inArray(r,n)&&t.trigger(r,i)}))},i.prototype._registerDropdownEvents=function(){var e=this;this.dropdown.on(\"*\",(function(t,n){e.trigger(t,n)}))},i.prototype._registerResultsEvents=function(){var e=this;this.results.on(\"*\",(function(t,n){e.trigger(t,n)}))},i.prototype._registerEvents=function(){var e=this;this.on(\"open\",(function(){e.$container.addClass(\"select2-container--open\")})),this.on(\"close\",(function(){e.$container.removeClass(\"select2-container--open\")})),this.on(\"enable\",(function(){e.$container.removeClass(\"select2-container--disabled\")})),this.on(\"disable\",(function(){e.$container.addClass(\"select2-container--disabled\")})),this.on(\"blur\",(function(){e.$container.removeClass(\"select2-container--focus\")})),this.on(\"query\",(function(t){e.isOpen()||e.trigger(\"open\",{}),this.dataAdapter.query(t,(function(n){e.trigger(\"results:all\",{data:n,query:t})}))})),this.on(\"query:append\",(function(t){this.dataAdapter.query(t,(function(n){e.trigger(\"results:append\",{data:n,query:t})}))})),this.on(\"keypress\",(function(t){var n=t.which;e.isOpen()?n===r.ESC||n===r.TAB||n===r.UP&&t.altKey?(e.close(t),t.preventDefault()):n===r.ENTER?(e.trigger(\"results:select\",{}),t.preventDefault()):n===r.SPACE&&t.ctrlKey?(e.trigger(\"results:toggle\",{}),t.preventDefault()):n===r.UP?(e.trigger(\"results:previous\",{}),t.preventDefault()):n===r.DOWN&&(e.trigger(\"results:next\",{}),t.preventDefault()):(n===r.ENTER||n===r.SPACE||n===r.DOWN&&t.altKey)&&(e.open(),t.preventDefault())}))},i.prototype._syncAttributes=function(){this.options.set(\"disabled\",this.$element.prop(\"disabled\")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger(\"disable\",{})):this.trigger(\"enable\",{})},i.prototype._isChangeMutation=function(t,n){var r=!1,i=this;if(!t||!t.target||\"OPTION\"===t.target.nodeName||\"OPTGROUP\"===t.target.nodeName){if(n)if(n.addedNodes&&0<n.addedNodes.length)for(var o=0;o<n.addedNodes.length;o++)n.addedNodes[o].selected&&(r=!0);else n.removedNodes&&0<n.removedNodes.length?r=!0:e.isArray(n)&&e.each(n,(function(e,t){if(i._isChangeMutation(e,t))return!(r=!0)}));else r=!0;return r}},i.prototype._syncSubtree=function(e,t){var n=this._isChangeMutation(e,t),r=this;n&&this.dataAdapter.current((function(e){r.trigger(\"selection:update\",{data:e})}))},i.prototype.trigger=function(e,t){var n=i.__super__.trigger,r={open:\"opening\",close:\"closing\",select:\"selecting\",unselect:\"unselecting\",clear:\"clearing\"};if(void 0===t&&(t={}),e in r){var o=r[e],s={prevented:!1,name:e,args:t};if(n.call(this,o,s),s.prevented)return void(t.prevented=!0)}n.call(this,e,t)},i.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},i.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger(\"query\",{})},i.prototype.close=function(e){this.isOpen()&&this.trigger(\"close\",{originalEvent:e})},i.prototype.isEnabled=function(){return!this.isDisabled()},i.prototype.isDisabled=function(){return this.options.get(\"disabled\")},i.prototype.isOpen=function(){return this.$container.hasClass(\"select2-container--open\")},i.prototype.hasFocus=function(){return this.$container.hasClass(\"select2-container--focus\")},i.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass(\"select2-container--focus\"),this.trigger(\"focus\",{}))},i.prototype.enable=function(e){this.options.get(\"debug\")&&window.console&&console.warn&&console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop(\"disabled\") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop(\"disabled\",t)},i.prototype.data=function(){this.options.get(\"debug\")&&0<arguments.length&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You should consider setting the value instead using `$element.val()`.');var e=[];return this.dataAdapter.current((function(t){e=t})),e},i.prototype.val=function(t){if(this.options.get(\"debug\")&&window.console&&console.warn&&console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==t||0===t.length)return this.$element.val();var n=t[0];e.isArray(n)&&(n=e.map(n,(function(e){return e.toString()}))),this.$element.val(n).trigger(\"input\").trigger(\"change\")},i.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent(\"onpropertychange\",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener(\"DOMAttrModified\",this._syncA,!1),this.$element[0].removeEventListener(\"DOMNodeInserted\",this._syncS,!1),this.$element[0].removeEventListener(\"DOMNodeRemoved\",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(\".select2\"),this.$element.attr(\"tabindex\",n.GetData(this.$element[0],\"old-tabindex\")),this.$element.removeClass(\"select2-hidden-accessible\"),this.$element.attr(\"aria-hidden\",\"false\"),n.RemoveData(this.$element[0]),this.$element.removeData(\"select2\"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},i.prototype.render=function(){var t=e('<span class=\"select2 select2-container\"><span class=\"selection\"></span><span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span></span>');return t.attr(\"dir\",this.options.get(\"dir\")),this.$container=t,this.$container.addClass(\"select2-container--\"+this.options.get(\"theme\")),n.StoreData(t[0],\"element\",this.$element),t},i})),t.define(\"jquery-mousewheel\",[\"jquery\"],(function(e){return e})),t.define(\"jquery.select2\",[\"jquery\",\"jquery-mousewheel\",\"./select2/core\",\"./select2/defaults\",\"./select2/utils\"],(function(e,t,n,r,i){if(null==e.fn.select2){var o=[\"open\",\"close\",\"destroy\"];e.fn.select2=function(t){if(\"object\"==typeof(t=t||{}))return this.each((function(){var r=e.extend(!0,{},t);new n(e(this),r)})),this;if(\"string\"!=typeof t)throw new Error(\"Invalid arguments for Select2: \"+t);var r,s=Array.prototype.slice.call(arguments,1);return this.each((function(){var e=i.GetData(this,\"select2\");null==e&&window.console&&console.error&&console.error(\"The select2('\"+t+\"') method was called on an element that is not using Select2.\"),r=e[t].apply(e,s)})),-1<e.inArray(t,o)?this:r}}return null==e.fn.select2.defaults&&(e.fn.select2.defaults=r),n})),{define:t.define,require:t.require}}(),n=t.require(\"jquery.select2\");return e.fn.select2.amd=t,n})?r.apply(t,i):r)||(e.exports=o)},9:()=>{var e,t,n=n||function(){\"use strict\";function e(e){var n,r,i,o,s,p,d=Object.create(null);if(this[a]=d,e)if(\"string\"==typeof e)for(\"?\"===e.charAt(0)&&(e=e.slice(1)),s=0,p=(o=e.split(\"&\")).length;s<p;s++)-1<(n=(i=o[s]).indexOf(\"=\"))?c(d,u(i.slice(0,n)),u(i.slice(n+1))):i.length&&c(d,u(i),\"\");else if(t(e))for(s=0,p=e.length;s<p;s++)c(d,(i=e[s])[0],i[1]);else if(e.forEach)e.forEach(l,d);else for(r in e)c(d,r,e[r])}var t=Array.isArray,n=e.prototype,r=/[!'\\(\\)~]|%20|%00/g,i=/\\+/g,o={\"!\":\"%21\",\"'\":\"%27\",\"(\":\"%28\",\")\":\"%29\",\"~\":\"%7E\",\"%20\":\"+\",\"%00\":\"\\0\"},s=function(e){return o[e]},a=\"__URLSearchParams__:\"+Math.random();function l(e,t){c(this,t,e)}function c(e,n,r){var i=t(r)?r.join(\",\"):r;n in e?e[n].push(i):e[n]=[i]}function u(e){return decodeURIComponent(e.replace(i,\" \"))}function p(e){return encodeURIComponent(e).replace(r,s)}n.append=function(e,t){c(this[a],e,t)},n.delete=function(e){delete this[a][e]},n.get=function(e){var t=this[a];return e in t?t[e][0]:null},n.getAll=function(e){var t=this[a];return e in t?t[e].slice(0):[]},n.has=function(e){return e in this[a]},n.set=function(e,t){this[a][e]=[\"\"+t]},n.forEach=function(e,t){var n=this[a];Object.getOwnPropertyNames(n).forEach((function(r){n[r].forEach((function(n){e.call(t,n,r,this)}),this)}),this)},n.toJSON=function(){return{}},n.toString=function(){var e,t,n,r,i=this[a],o=[];for(t in i)for(n=p(t),e=0,r=i[t];e<r.length;e++)o.push(n+\"=\"+p(r[e]));return o.join(\"&\")};var d=Object.defineProperty,f=Object.getOwnPropertyDescriptor,h=function(t){var r=t.append;t.append=n.append,e.call(t,t._usp.search.slice(1)),t.append=r},g=function(e,t){if(!(e instanceof t))throw new TypeError(\"'searchParams' accessed on an object that does not implement interface \"+t.name)},m=function(t){var r,i,o=t.prototype,s=f(o,\"searchParams\"),a=f(o,\"href\"),l=f(o,\"search\");!s&&l&&l.set&&(i=function(e){function t(t,r){n.append.call(this,t,r),t=this.toString(),e.set.call(this._usp,t?\"?\"+t:\"\")}function r(t){n.delete.call(this,t),t=this.toString(),e.set.call(this._usp,t?\"?\"+t:\"\")}function i(t,r){n.set.call(this,t,r),t=this.toString(),e.set.call(this._usp,t?\"?\"+t:\"\")}return function(e,n){return e.append=t,e.delete=r,e.set=i,d(e,\"_usp\",{configurable:!0,writable:!0,value:n})}}(l),r=function(e,t){return d(e,\"_searchParams\",{configurable:!0,writable:!0,value:i(t,e)}),t},Object.defineProperties(o,{href:{get:function(){return a.get.call(this)},set:function(e){var t=this._searchParams;a.set.call(this,e),t&&h(t)}},search:{get:function(){return l.get.call(this)},set:function(e){var t=this._searchParams;l.set.call(this,e),t&&h(t)}},searchParams:{get:function(){return g(this,t),this._searchParams||r(this,new e(this.search.slice(1)))},set:function(e){g(this,t),r(this,e)}}}))};return m(HTMLAnchorElement),/^function|object$/.test(typeof URL)&&URL.prototype&&m(URL),e}();e=n.prototype,t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),\"forEach\"in e||(e.forEach=function(e,t){var n=Object.create(null);this.toString().replace(/=[\\s\\S]*?(?:&|$)/g,\"=\").split(\"=\").forEach((function(r){r.length&&!(r in n)&&(n[r]=this.getAll(r)).forEach((function(n){e.call(t,n,r,this)}),this)}),this)}),\"keys\"in e||(e.keys=function(){var e=[];this.forEach((function(t,n){e.push(n)}));var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n}),\"values\"in e||(e.values=function(){var e=[];this.forEach((function(t){e.push(t)}));var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n}),\"entries\"in e||(e.entries=function(){var e=[];this.forEach((function(t,n){e.push([n,t])}));var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n}),t&&!(Symbol.iterator in e)&&(e[Symbol.iterator]=e.entries),\"sort\"in e||(e.sort=function(){for(var e,t,n,r=this.entries(),i=r.next(),o=i.done,s=[],a=Object.create(null);!o;)t=(n=i.value)[0],s.push(t),t in a||(a[t]=[]),a[t].push(n[1]),o=(i=r.next()).done;for(s.sort(),e=0;e<s.length;e++)this.delete(s[e]);for(e=0;e<s.length;e++)t=s[e],this.append(t,a[t].shift())})}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{\"use strict\";n(821),n(9);var e,t,r,i,o=n(755),s=n.n(o),a=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:\"v2-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)}},l=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if(\"first-input\"===e&&!(\"PerformanceEventTiming\"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},c=function(e,t){var n=function n(r){\"pagehide\"!==r.type&&\"hidden\"!==document.visibilityState||(e(r),t&&(removeEventListener(\"visibilitychange\",n,!0),removeEventListener(\"pagehide\",n,!0)))};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},u=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&e(t)}),!0)},p=function(e,t,n){var r;return function(i){t.value>=0&&(i||n)&&(t.delta=t.value-(r||0),(t.delta||void 0===r)&&(r=t.value,e(t)))}},d=-1,f=function(){return\"hidden\"===document.visibilityState?0:1/0},h=function(){c((function(e){var t=e.timeStamp;d=t}),!0)},g=function(){return d<0&&(d=f(),h(),u((function(){setTimeout((function(){d=f(),h()}),0)}))),{get firstHiddenTime(){return d}}},m=function(e,t){var n,r=g(),i=a(\"FCP\"),o=function(e){\"first-contentful-paint\"===e.name&&(c&&c.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=e.startTime,i.entries.push(e),n(!0)))},s=performance.getEntriesByName&&performance.getEntriesByName(\"first-contentful-paint\")[0],c=s?null:l(\"paint\",o);(s||c)&&(n=p(e,i,t),s&&o(s),u((function(r){i=a(\"FCP\"),n=p(e,i,t),requestAnimationFrame((function(){requestAnimationFrame((function(){i.value=performance.now()-r.timeStamp,n(!0)}))}))})))},v=!1,y=-1,b={passive:!0,capture:!0},x=new Date,w=function(n,i){e||(e=i,t=n,r=new Date,C(removeEventListener),_())},_=function(){if(t>=0&&t<r-x){var n={entryType:\"first-input\",name:e.type,target:e.target,cancelable:e.cancelable,startTime:e.timeStamp,processingStart:e.timeStamp+t};i.forEach((function(e){e(n)})),i=[]}},T=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){w(e,t),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",n,b),removeEventListener(\"pointercancel\",r,b)};addEventListener(\"pointerup\",n,b),addEventListener(\"pointercancel\",r,b)}(t,e):w(t,e)}},C=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,T,b)}))},A=new Set;class E{sendToGoogleAnalytics({name:e,delta:t,id:n}){window.gtag(\"event\",e,{event_category:\"web_vitals\",event_label:n,value:Math.round(\"CLS\"===e?1e3*t:t),non_interaction:!0})}trackCoreWebVitals(){!function(e,t){v||(m((function(e){y=e.value})),v=!0);var n,r=function(t){y>-1&&e(t)},i=a(\"CLS\",0),o=0,s=[],d=function(e){if(!e.hadRecentInput){var t=s[0],r=s[s.length-1];o&&e.startTime-r.startTime<1e3&&e.startTime-t.startTime<5e3?(o+=e.value,s.push(e)):(o=e.value,s=[e]),o>i.value&&(i.value=o,i.entries=s,n())}},f=l(\"layout-shift\",d);f&&(n=p(r,i,t),c((function(){f.takeRecords().map(d),n(!0)})),u((function(){o=0,y=-1,i=a(\"CLS\",0),n=p(r,i,t)})))}(this.sendToGoogleAnalytics),function(n,r){var o,s=g(),d=a(\"FID\"),f=function(e){e.startTime<s.firstHiddenTime&&(d.value=e.processingStart-e.startTime,d.entries.push(e),o(!0))},h=l(\"first-input\",f);o=p(n,d,r),h&&c((function(){h.takeRecords().map(f),h.disconnect()}),!0),h&&u((function(){var s;d=a(\"FID\"),o=p(n,d,r),i=[],t=-1,e=null,C(addEventListener),s=f,i.push(s),_()}))}(this.sendToGoogleAnalytics),function(e,t){var n,r=g(),i=a(\"LCP\"),o=function(e){var t=e.startTime;t<r.firstHiddenTime&&(i.value=t,i.entries.push(e)),n()},s=l(\"largest-contentful-paint\",o);if(s){n=p(e,i,t);var d=function(){A.has(i.id)||(s.takeRecords().map(o),s.disconnect(),A.add(i.id),n(!0))};[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,d,{once:!0,capture:!0})})),c(d,!0),u((function(r){i=a(\"LCP\"),n=p(e,i,t),requestAnimationFrame((function(){requestAnimationFrame((function(){i.value=performance.now()-r.timeStamp,A.add(i.id),n(!0)}))}))}))}}(this.sendToGoogleAnalytics)}}s()((function(){function e(){const e=s()(\"#input-gitignore\").map((function(){return s()(this).val()})).get().join(\",\");if(e.length>0){const t=e.replace(/^,/,\"\");window.location=window.BASE_PREFIX+\"/api/\"+t,s()(\"#input-gitignore\").val(\"\")}}s().ajax(window.BASE_PREFIX+\"/dropdown/templates.json\").done((function(e){(new E).trackCoreWebVitals(),s()(\"#input-gitignore\").select2({data:e,theme:\"toptal\",multiple:!0,allowClear:!1,minimumInputLength:1,selectOnClose:!0,placeholder:s()(\"#input-gitignore-placeholder\").text(),sorter:function(e){const t=s()(\".select2-search__field\").val().toLowerCase();return e.sort((function(e,n){return e.text.toLowerCase().indexOf(t)-n.text.toLowerCase().indexOf(t)}))}});const t=new URLSearchParams(window.location.search);if(null!=t.get(\"templates\")){const n=t.get(\"templates\").replace(/\\s/g,\"+\").toLowerCase().split(\",\"),r=e.map((function(e){return e.id})),i=n.filter((function(e){return r.indexOf(e)>=0}));s()(\"#input-gitignore\").val(i).trigger(\"change.select2\")}else s()(\"#input-gitignore\").val(\"\").trigger(\"change.select2\");setTimeout((function(){s()(\".select2-search__field\").focus(),s()(\"#input-gitignore\").on(\"select2:opening\",(function(e){e.preventDefault(),s()(\"#input-gitignore\").off(\"select2:opening\")}))}))})),s()(\"#input-gitignore\").on(\"select2:selecting\",(function(t){setTimeout((function(){s()(\".select2-search__field\").keydown((function(t){13==t.keyCode&&(t.metaKey||t.ctrlKey)&&e()}))}))})),s()(\"#input-gitignore\").on(\"select2:select\",(function(e){var t=e.params.data.id,n=s()(e.target).children('[value=\"'+t+'\"]');n.detach(),s()(e.target).append(n).change()})),s()(\"#btn-gitignore\").click((function(){e()})),s().fn.select2.amd.require([\"select2/selection/search\"],(function(e){e.prototype.searchRemoveChoice=function(e,t){this.trigger(\"unselect\",{data:t}),this.$search.val(\"\"),this.handleSearch()}}))}))})()})();"
  },
  {
    "path": "Public/sitemap.xml",
    "content": "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://www.toptal.com/developers/gitignore</loc>\n    <priority>1.0</priority>\n  </url>\n</urlset>\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n    <a href=\"https://www.toptal.com/developers/gitignore\">\n        <img src=\"Public/img/gitignoreio.svg\"/>\n    </a>\n    <br>\n    <strong>Create useful .gitignore files for your project</strong>\n</p>\n<p align=\"center\">\n    <a href=\"https://swift.org\"><img src=\"https://img.shields.io/badge/Swift-4.1-orange.svg?style=flat-square\"/></a>\n    <a href=\"https://travis-ci.org/toptal/gitignore.io\"><img src=\"https://img.shields.io/travis/toptal/gitignore.io/master?style=flat-square\" alt=\"Travis\"></a>\n    <a href=\"https://codeclimate.com/github/joeblau/gitignore.io/test_coverage\"><img src=\"https://img.shields.io/codeclimate/coverage/joeblau/gitignore.io.svg?style=flat-square\" alt=\"Code Climate Test Coverage\"></a>\n    <a href=\"https://codeclimate.com/github/joeblau/gitignore.io/maintainability\"><img src=\"https://img.shields.io/codeclimate/maintainability/joeblau/gitignore.io.svg?style=flat-square\" alt=\"Code Climate Maintainability\"></a>\n    <img src=\"https://img.shields.io/badge/Platforms-Linux%20%7C%20macOS%20%7C%20Windows-blue.svg?style=flat-square\"alt=\"Platforms\">\n    <a href=\"https://github.com/joeblau/gitignore.io/blob/master/LICENSE.md\"><img src=\"https://img.shields.io/github/license/joeblau/gitignore.io.svg?style=flat-square\" alt=\"license\"></a>\n</p>\n\n## About\n\n.gitignore.io is a web service designed to help you create .gitignore files for\nyour Git repositories. The site has a graphical and command line method of\ncreating a .gitignore for your operating system, programming language, or IDE.\n\n## `.gitignore` Template Source\n\nSource templates for gitignore.io: https://github.com/toptal/gitignore\n\n## License of the generated files\n\nAll files generated by https://www.toptal.com/developers/gitignore are under [CC0](https://creativecommons.org/publicdomain/zero/1.0/).\n\n## Documentation\n\nComplete gitignore.io documentation: https://docs.gitignore.io/\n\n## Docker Container\n\n### Prerequisites\n\n- [Docker](https://www.docker.com/)\n\n### Build\n\n#### Production\n\n```\ndocker-compose up --build\n```\n\n#### Development\n\n```\ndocker-compose -f ./docker-compose-dev.yml build\n```\n```\ndocker-compose -f ./docker-compose-dev.yml up\n```\n\nIt will start the web server running on [http://localhost:8080](http://localhost:8080)\n\nDevelopment mode mounts the following directories to docker volumes:\n\n- `/Public`\n- `/Resources `\n\n## LESS and CSS\n\nThe app uses [LESS](http://lesscss.org/) as its CSS preprocessor for the files in `Public/css`.\n\nTo process the less file you need to:\n\n- Install all dependencies with `yarn install`\n- Process the assets with `yarn build`\n\n## Environment Variables\n\nPlease set your environment variables to docker configurations. All are optional.\n\n```yml\n...\nservices:\n  app:\n    ...\n    environment:\n      HOST_ORIGIN: http://www.example.com\n      BASE_PREFIX: /foo/bar\n      GOOGLE_ANALYTICS_UID:\n    ...\n...\n```\n\n### HOST_ORIGIN\n\nOrigin of your web server, falls back to https://www.toptal.com\n\n```\nHOST_ORIGIN: http://www.example.com\n```\n\n### BASE_PREFIX\n\nIf you want to host this web server under a subdirectory (http://www.example.com/foo/bar for example), please set this variable.\n\n```\nBASE_PREFIX: /foo/bar\n```\n\n### GOOGLE_ANALYTICS_UID\n\nUser ID for Google Tag Manager snippet\n\n```\nGOOGLE_ANALYTICS_UID: UA-XXXXXXXX-X\n```\n\n## E2E Tests\n\nTests are located in `e2e-tests` folder with:\n\n- API tests in `api` folder - implemented using [Superagent](https://github.com/visionmedia/superagent)\n- E2E tests in `pages` folder - implemented with [Puppeteer](https://github.com/puppeteer/puppeteer)\n\nPrerequisites:\n\n- [Node.js](https://nodejs.org/en/) 12.9 or above.\n- [Yarn](https://yarnpkg.com/lang/en/) 1.15.2 or 1.17.3\n\nRunning:\n\n- Set the BASE_URL env variable (only if you have changed the default URL or port)\n- docker-compose up --build --detach\n- yarn gitupdate\n- yarn install\n- yarn build\n- yarn test\n- docker-compose stop\n"
  },
  {
    "path": "Resources/Views/index.leaf",
    "content": "<!DOCTYPE html>\n<html lang=\"en\" itemscope=\"itemscope\" itemtype=\"https://schema.org/WebApplication\" prefix=\"og: https://ogp.me/ns\">\n<head>\n    <title>#(titleString)</title>\n\n    <base href=\"#(basePrefixString)\">\n    <script>\n      window.BASE_PREFIX = \"#(basePrefixString)\".replace(/\\/+$/, '');\n      window.GOOGLE_ANALYTICS_UID = \"#(googleAnalyticsUIDString)\";\n    </script>\n\n    <!-- Meta -->\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    <meta name=\"description\" content=\"#(descriptionString)\">\n    <meta name=\"keywords\" content=\"gitignore,.gitignore,git,ignore,file,create,make,generate,build,automatic,programmatic,command line,cli\">\n\n    <link rel=\"preload\" as=\"image\"\n      href=\"img/gitignore-logo-horizontal@2x.png\"\n      imagesrcset=\"img/gitignore-logo-horizontal.png 370w, img/gitignore-logo-horizontal@2x.png 740w\"\n      imagesizes=\"(min-width: 960px) 740px, 100vw\"\n    >\n    <link rel=\"preload\" as=\"image\" href=\"img/lightning.svg\">\n\n    <link rel=\"preload\" as=\"font\" type=\"font/woff\"  crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Regular.woff\">\n    <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Regular.woff2\">\n    <link rel=\"preload\" as=\"font\" type=\"font/otf\"   crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Regular.otf\">\n\n    <link rel=\"preload\" as=\"font\" type=\"font/woff\"  crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Semibold.woff\">\n    <link rel=\"preload\" as=\"font\" type=\"font/woff2\" crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Semibold.woff2\">\n    <link rel=\"preload\" as=\"font\" type=\"font/otf\"   crossorigin=\"anonymous\" href=\"fonts/ProximaNova-Semibold.otf\">\n\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:title\" content=\"gitignore.io\">\n    <meta property=\"og:description\" content=\"Create useful .gitignore files for your project\">\n    <meta property=\"og:image\" content=\"#(canonicalUrlString)/img/preview@2x.png\">\n    <meta property=\"og:url\" content=\"#(canonicalUrlString)\">\n\n    <meta name=\"twitter:card\" content=\"summary_large_image\">\n    <meta name=\"twitter:site\" content=\"@toptal\">\n\n    <link rel=\"canonical\" href=\"#(canonicalUrlString)\" />\n\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"assets/main.css\">\n\n    <link rel=\"icon\" href=\"favicon.ico\" type=\"image/x-icon\">\n\n    <!-- Global site tag (gtag.js) - Google Analytics -->\n    <script async src=\"https://www.googletagmanager.com/gtag/js?id=#(googleAnalyticsUIDString)\"></script>\n</head>\n<body>\n    <header>\n        <div class=\"container\">\n            <div class=\"header-left-column\">\n                <a href=\"https://www.toptal.com/developers\" aria-label=\"Toptal\" title=\"Toptal\">\n                    <img src=\"img/toptal-logo-wordmark.svg\" height=\"30\" width=\"100\" alt=\"Toptal\" />\n                </a>\n                <h1>gitignore.io</h1>\n            </div>\n            <div class=\"header-right-column\">\n                <a href=\"https://github.com/toptal/gitignore.io\" aria-label=\"#(sourceCodeDescriptionString)\" title=\"#(sourceCodeDescriptionString)\">\n                    <img src=\"img/github-logo.svg\" alt=\"GitHub\" width=\"24\" height=\"24\" />\n                </a>\n            </div>\n        </div>\n    </header>\n\n    <div class=\"content-wrapper\">\n        <main>\n            <div class=\"container\">\n                <div class=\"masthead\">\n                    <div class=\"masthead-top\">\n                        <img srcset=\"img/gitignore-logo-horizontal.png 370w,\n                                     img/gitignore-logo-horizontal@2x.png 740w\"\n                                width=\"370\"\n                                height=\"50\"\n                                sizes=\"(min-width: 960px) 740px, 100vw\"\n                                src=\"img/gitignore-logo-horizontal.png\"\n                                alt=\"gitignore.io\" />\n                        <h2>#(subtitleString)</h2>\n                    </div>\n\n                    <div class=\"input-group\">\n                        <p style=\"display:none\" id=\"input-gitignore-placeholder\">#(searchPlaceholderString)</p>\n                        <select id=\"input-gitignore\" class=\"form-control input\"></select>\n                        <div class=\"input-group-append\">\n                            <button type=\"button\" id=\"btn-gitignore\" class=\"btn btn-gitignore\">#(searchGoString)</button>\n                        </div>\n                    </div>\n\n                    <div class=\"masthead-bottom\">\n                        <ul class=\"masthead-nav\">\n                            <li><a href=\"https://github.com/toptal/gitignore.io\" aria-label=\"#(sourceCodeDescriptionString)\" title=\"#(sourceCodeDescriptionString)\">#(sourceCodeTitleString)</a></li>\n                            <li><a href=\"https://docs.gitignore.io/install/command-line\" aria-label=\"#(commandLineDescriptionString)\" title=\"#(commandLineDescriptionString)\">#(commandLineTitleString)</a></li>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n        </main>\n        #embed(\"internal-linking\")\n    </div>\n\n    <!-- Footer Scripts -->\n    <script async src=\"assets/main.js\"></script>\n    <script async>\n        window.dataLayer = window.dataLayer || [];\n        function gtag(){dataLayer.push(arguments);}\n\n        gtag('js', new Date());\n\n        gtag('config', \"#(googleAnalyticsUIDString)\", {\n            'content_group1': 'Git Ignore',\n            'custom_map': { 'dimension10': 'client_id' }\n        });\n\n        setTimeout(function() {\n            gtag('event', 'read', { 'event_category': '15_seconds' });\n        }, 15000);\n    </script>\n</body>\n</html>\n"
  },
  {
    "path": "Resources/Views/internal-linking.leaf",
    "content": "<div class=\"internal-linking\">\n  <div class=\"internal-linking__container\">\n    <div class=\"internal-linking__title\">\n      <img width=\"12\" height=\"16\" src=\"img/lightning.svg\" alt=\"\" />\n      <span>\n        Skills in High Demand\n        <br />\n        by Toptal Clients\n      </span>\n    </div>\n    <div class=\"internal-linking__ticker-list\">\n      #for(link in links.links) {\n        <a\n          href=\"#(link.url)\"\n          data-ga-category=\"inbound-link\"\n          data-ga-event=\"#(link.title)\"\n          data-ga-label=\"GitIgnore\"\n          target=\"_blank\"\n          rel=\"noopener\"\n          class=\"internal-linking__link\"\n        >\n          #(link.title)\n        </a>\n      }\n    </div>\n  </div>\n</div>\n<script>\n\nvar handleOnClick = function handleOnClick(e) {\n  if (!('gtag' in window)) return;\n  window.gtag('event', e.target.dataset.gaEvent, {\n    event_category: e.target.dataset.gaCategory,\n    event_label: e.target.dataset.gaLabel,\n    non_interaction: true\n  });\n};\n\ndocument.querySelectorAll('.internal-linking__link').forEach(function (item) {\n  item.addEventListener('click', handleOnClick);\n  item.addEventListener('auxclick', handleOnClick);\n});\n\n</script>\n"
  },
  {
    "path": "Resources/links.json",
    "content": "[\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/react\",\n    \"title\": \"React.js Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/nodejs\",\n    \"title\": \"Node.js Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/ruby-on-rails\",\n    \"title\": \"Ruby on Rails Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/azure\",\n    \"title\": \"Azure Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/react-native\",\n    \"title\": \"React Native Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/qa\",\n    \"title\": \"QA Engineer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/go\",\n    \"title\": \"Go Engineer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/javascript\",\n    \"title\": \"JavaScript Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/python\",\n    \"title\": \"Python Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/django\",\n    \"title\": \"Django Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/php\",\n    \"title\": \"PHP Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/c-sharp\",\n    \"title\": \"C# Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/ios\",\n    \"title\": \"iOS Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/blockchain\",\n    \"title\": \"Blockchain Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/swift\",\n    \"title\": \"Swift Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/aws\",\n    \"title\": \"AWS Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/vue-js\",\n    \"title\": \"Vue.js Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/java\",\n    \"title\": \"Java Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/dot-net\",\n    \"title\": \".NET Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/angular\",\n    \"title\": \"Angular Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/android\",\n    \"title\": \"Android Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/magento\",\n    \"title\": \"Magento Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/shopify\",\n    \"title\": \"Shopify Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/wordpress\",\n    \"title\": \"WordPress Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/laravel\",\n    \"title\": \"Laravel Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/elixir\",\n    \"title\": \"Elixir Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/docker\",\n    \"title\": \"Docker Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/flutter\",\n    \"title\": \"Flutter Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/software-architect\",\n    \"title\": \"Software Architect Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/unity-unity3d\",\n    \"title\": \"Unity or Unity3D Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/cloud\",\n    \"title\": \"Cloud Engineer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/asp-dot-net\",\n    \"title\": \"ASP.NET Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/kubernetes\",\n    \"title\": \"Kubernetes Expert Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/security\",\n    \"title\": \"System Security Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/kotlin\",\n    \"title\": \"Kotlin Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/css\",\n    \"title\": \"CSS Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/computer-vision\",\n    \"title\": \"Computer Vision Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/artificial-intelligence\",\n    \"title\": \"AI Engineer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/drupal\",\n    \"title\": \"Drupal Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/sql\",\n    \"title\": \"SQL Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/symfony\",\n    \"title\": \"Symfony Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/ruby\",\n    \"title\": \"Ruby Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/data-science\",\n    \"title\": \"Data Scientist Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/business-intelligence\",\n    \"title\": \"Business Intelligence Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/c-plus-plus\",\n    \"title\": \"C++ Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/ionic\",\n    \"title\": \"Ionic Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/graphql\",\n    \"title\": \"GraphQL Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/machine-learning\",\n    \"title\": \"Machine Learning Engineer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/xamarin\",\n    \"title\": \"Xamarin Developer Jobs\"\n  },\n  {\n    \"url\": \"https://www.toptal.com/freelance-jobs/developers/firebase\",\n    \"title\": \"Firebase Developer Jobs\"\n  }\n]\n"
  },
  {
    "path": "Sources/App/Controllers/InternalLinkingController.swift",
    "content": "\nimport Vapor\n\ninternal protocol ReadOnlyInternalLinkingProtocol {\n    var links: InternalLinks { get }\n}\n\ninternal struct InternalLinkingController: ReadOnlyInternalLinkingProtocol {\n    internal var links = InternalLinks(links: [InternalLink]())\n    init() {\n        let directory = DirectoryConfig.detect()\n        let internalLinksFilePath = URL(fileURLWithPath: directory.workDir)\n                                    .appendingPathComponent(\"Resources\", isDirectory: true)\n                                    .appendingPathComponent(\"links.json\", isDirectory: false)\n        var rawLinks = [InternalLink]()\n        do {\n            let jsonData = try Data(contentsOf: internalLinksFilePath)\n            rawLinks = try JSONDecoder().decode([InternalLink].self, from: jsonData)\n        \n            self.links = InternalLinks(links: rawLinks)\n        } catch {\n            print(\"‼️ Could not load internal links from json, check:\\n‼️ Resources/links.json\")\n        }\n    }\n}"
  },
  {
    "path": "Sources/App/Controllers/ReadOnlyTemplateManagerProtocol.swift",
    "content": "//\n//  ReadOnlyTemplateManagerProtocol.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\ninternal protocol ReadOnlyTemplateManagerProtocol {\n    var order: [String: Int] { get }\n    var count: Int { get }\n    var templates: [String: IgnoreTemplateModel] { get }\n}\n"
  },
  {
    "path": "Sources/App/Controllers/TemplateController.swift",
    "content": "//\n//  TemplateController.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/17/16.\n//\n//\n\nimport Foundation\n\ninternal struct TemplateController: ReadOnlyTemplateManagerProtocol {\n    internal var order = [String: Int]()\n    internal var count = 0\n    internal var templates = [String: IgnoreTemplateModel]()\n\n    /// Create Template Controller\n    ///\n    /// - Returns: Template Controller\n    init(dataDirectory: URL, orderFile: URL) {\n        do {\n            order = try parseFile(orderFile: orderFile)\n            templates = try parseTemplateDirectory(dataDirectory: dataDirectory)\n            try templates.patchTemplates(dataDirectory: dataDirectory)\n            try templates.stackTempaltes(dataDirectory: dataDirectory)\n            count = templates.count\n        } catch {\n            print(\"‼️ You might not have done a recursive clone to update your submodules:\\n‼️ `git submodule update --init --recursive`\")\n        }\n    }\n\n    // MARK: - Private\n\n    /// Parse file which defines template order precedence\n    ///\n    /// - Parameter orderFile: The dependency order file\n    /// - Returns: List of templates in order precedence\n    private func parseFile(orderFile: URL) throws -> [String: Int] {\n        return try String(contentsOf: orderFile, encoding: String.Encoding.utf8)\n            .replacingOccurrences(of: \"\\r\\n\", with: \"\\n\", options: .regularExpression)\n            .components(separatedBy: \"\\n\")\n            .map({ (line) -> String in\n                line.trimmingCharacters(in: .whitespaces).lowercased()\n            })\n            .filter({ (line) -> Bool in\n                !line.hasPrefix(\"#\") && !line.isEmpty\n            })\n            .enumerated()\n            .reduce([String: Int](), { (orderedDict, line : (offset: Int, text: String)) -> [String: Int] in\n                var mutableOrderedDict = orderedDict\n                mutableOrderedDict[line.text] = line.offset\n                return  mutableOrderedDict\n            })\n    }\n\n    /// Parse template directory\n    ///\n    /// - Parameter dataDirectory: The path to the data directory\n    /// - Returns: Ignore template model dictionary\n    private func parseTemplateDirectory(dataDirectory: URL) throws -> [String: IgnoreTemplateModel] {\n        return try FileManager().enumerator(at: dataDirectory, includingPropertiesForKeys: nil)!\n            .allObjects\n            .compactMap({ (templatePath: Any) -> URL? in\n                templatePath as? URL\n            })\n            .filter({ (templatePath: URL) -> Bool in\n                templatePath.pathExtension == TemplateSuffix.template.extension\n            })\n            .compactMap({ (templatePath: URL) -> (key: String, model: IgnoreTemplateModel) in\n                let fileContents = try String(contentsOf: templatePath, encoding: String.Encoding.utf8)\n                    .replacingOccurrences(of: \"\\r\\n\", with: \"\\n\", options: .regularExpression)\n                return (key: templatePath.name.lowercased(),\n                        model: IgnoreTemplateModel(key: templatePath.name.lowercased(),\n                                                   name: templatePath.name,\n                                                   fileName: templatePath.fileName,\n                                                   contents: TemplateSuffix.template.header(name: templatePath.name).appending(fileContents)))\n            })\n            .reduce([String: IgnoreTemplateModel]()) { (currentTemplateModels, templateData) in\n                var mutableCurrentTemplates = currentTemplateModels\n                mutableCurrentTemplates[templateData.key] = templateData.model\n                return mutableCurrentTemplates\n            }\n    }\n}\n"
  },
  {
    "path": "Sources/App/Enum/TemplateSuffix.swift",
    "content": "//\n//  TemplateSuffix.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\n/// Template Suffix Enum\ninternal enum TemplateSuffix {\n    case template, patch, stack\n\n    internal var `extension`: String {\n        switch self {\n        case .template: return \"gitignore\"\n        case .patch: return \"patch\"\n        case .stack: return \"stack\"\n        }\n    }\n\n    internal func header(name: String) -> String {\n        switch self {\n        case .template: return \"\\n### \\(name) ###\\n\"\n        case .patch: return \"\\n### \\(name) Patch ###\\n\"\n        case .stack: return \"\\n### \\(name) Stack ###\\n\"\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/Dictionary+Extensions.swift",
    "content": "//\n//  Dictionary+Extensions.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\nimport Foundation\n\ninternal extension Dictionary where Key: ExpressibleByStringLiteral, Value: IgnoreTemplateModeling {\n\n    /// Append template patches to template contents\n    ///\n    /// - Parameter dataDirectory: The path to the data directory\n    mutating func patchTemplates(dataDirectory: URL) throws {\n        try FileManager().templatePathsFor(dataDirectory)?\n            .filter({ (templatePath: URL) -> Bool in\n                templatePath.pathExtension == TemplateSuffix.patch.extension\n            })\n            .forEach({ (templatePath: URL) in\n                let fileContents = try String(contentsOf: templatePath, encoding: String.Encoding.utf8)\n                if let path = templatePath.name.lowercased() as? Key {\n                    self[path]?\n                        .contents\n                        .append(TemplateSuffix.patch.header(name: templatePath.name) + fileContents)\n                }\n            })\n    }\n\n    /// Append stacks to template contents\n    ///\n    /// - Parameter dataDictionary: The path to the data dictionary\n    mutating func stackTempaltes(dataDirectory: URL) throws {\n        try FileManager().templatePathsFor(dataDirectory)?\n            .filter({ (templatePath: URL) -> Bool in\n                templatePath.pathExtension == TemplateSuffix.stack.extension\n            })\n            .forEach({ (templatePath: URL) in\n                let fileContents = try String(contentsOf: templatePath, encoding: String.Encoding.utf8)\n                if let path = templatePath.stackName?.lowercased() as? Key {\n                    self[path]?\n                        .contents\n                        .append(TemplateSuffix.stack.header(name: templatePath.name) + fileContents)\n                }\n            })\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/FileManager+Extensions.swift",
    "content": "//\n//  FileManager+Extensions.swift\n//  App\n//\n//  Created by Joe Blau on 6/23/18.\n//\n\nimport Foundation\n\nextension FileManager {\n    func templatePathsFor(_ dataDirectory: URL) -> [URL]? {\n        return self.enumerator(at: dataDirectory, includingPropertiesForKeys: nil)?\n            .allObjects\n            .compactMap { (templatePath: Any) -> URL? in\n                templatePath as? URL\n            }\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/Router+Extensions.swift",
    "content": "//\n//  Router+Extensions.swift\n//  App\n//\n//  Created by Joe Blau on 7/2/18.\n//\n\nimport Vapor\n\nextension Request {\n    var acceptLanguage: String {\n        get {\n            let acceptLanguage = String(self.http\n                .headers\n                .firstValue(name: .acceptLanguage)?\n                .split(separator: \",\")\n                .first?\n                .split(separator: \"-\")\n                .first ?? \"en\")\n            let supportedLanguages = [\"ar\", \"cs\", \"de\", \"en\", \"fa\", \"fr\", \"id\", \"ja\", \"ko\", \"pt\", \"ro\", \"ru\", \"tr\", \"zh\", \"nl\", \"el\", \"th\"]\n            if supportedLanguages.contains(acceptLanguage) {\n                return acceptLanguage\n            } else {\n                return \"en\"\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/Sequence+Extensions.swift",
    "content": "//\n//  Sequence+Extensions.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\nimport Foundation\n\npublic extension Sequence where Iterator.Element: Hashable {\n    var uniqueElements: [Iterator.Element] {\n        return Array( Set(self) )\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/String+Extensions.swift",
    "content": "//\n//  String+Extensions.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/18/16.\n//\n//\n\nimport Foundation\n\ninternal extension String {\n    /// Remove duplicate lines, except blank strings or comment strings\n    ///\n    /// - Returns: String with duplicate lines removed\n    func removeDuplicateLines() -> String {\n        return self.components(separatedBy: \"\\n\")\n            .reduce([String]()) {\n                if !$1.isEmpty && !$1.hasPrefix(\"# \") && $0.contains($1) {\n                    return $0\n                }\n                return $0 + [$1]\n            }\n            .joined(separator: \"\\n\")\n    }\n}\n"
  },
  {
    "path": "Sources/App/Extensions/URL+Extensions.swift",
    "content": "//\n//  URL+Extensions.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\nimport Foundation\n\ninternal extension URL {\n\n    /// Name of file without extension\n    var name: String {\n        return self.deletingPathExtension().lastPathComponent\n    }\n\n    /// Name of file first component\n    var stackName: String? {\n        return self.deletingPathExtension().lastPathComponent.components(separatedBy: \".\").first\n    }\n\n    /// Name of file with extension\n    var fileName: String {\n        return self.lastPathComponent\n    }\n\n}\n"
  },
  {
    "path": "Sources/App/Middleware/FileMiddlewareWithBasePrefix.swift",
    "content": "/// Serves static files from a public directory.\n///\n///     middlewareConfig = MiddlewareConfig()\n///     middlewareConfig.use(FileMiddlewareWithBasePrefix.self)\n///     services.register(middlewareConfig)\n///\n/// `FileMiddlewareWithBasePrefix` will default to `DirectoryConfig`'s working directory with `\"/Public\"` appended.\nimport Vapor\n\npublic final class FileMiddlewareWithBasePrefix: Middleware, ServiceType {\n    /// See `ServiceType`.\n    public static func makeService(for container: Container) throws -> FileMiddlewareWithBasePrefix {\n        return try .init(publicDirectory: container.make(DirectoryConfig.self).workDir + \"Public/\")\n    }\n\n    /// The public directory.\n    /// - note: Must end with a slash.\n    private let publicDirectory: String\n\n    /// Creates a new `FileMiddlewareWithBasePrefix`.\n    public init(publicDirectory: String) {\n        self.publicDirectory = publicDirectory.hasSuffix(\"/\") ? publicDirectory : publicDirectory + \"/\"\n    }\n\n    /// See `Middleware`.\n    public func respond(to req: Request, chainingTo next: Responder) throws -> Future<Response> {\n        // make a copy of the path\n        var path = req.http.url.path\n\n        if let basePrefix = Environment.get(\"BASE_PREFIX\") {\n            if path.hasPrefix(basePrefix) {\n                path = String(path.dropFirst(basePrefix.count))\n            }\n        }\n\n        // path must be relative.\n        while path.hasPrefix(\"/\") {\n            path = String(path.dropFirst())\n        }\n\n        // protect against relative paths\n        guard !path.contains(\"../\") else {\n            throw Abort(.forbidden)\n        }\n\n        // create absolute file path\n        let filePath = publicDirectory + path\n\n        // check if file exists and is not a directory\n        var isDir: ObjCBool = false\n        guard FileManager.default.fileExists(atPath: filePath, isDirectory: &isDir), !isDir.boolValue else {\n            return try next.respond(to: req)\n        }\n\n        // stream the file\n        return try req.streamFile(at: filePath)\n    }\n}\n"
  },
  {
    "path": "Sources/App/Models/Dropdown.swift",
    "content": "//\n//  Dropdown.swift\n//  App\n//\n//  Created by Joe Blau on 6/9/18.\n//\n\nimport Vapor\n\ninternal struct Dropdown: Content {\n    var id: String\n    var text: String\n}\n"
  },
  {
    "path": "Sources/App/Models/Flags.swift",
    "content": "//\n//  Flags.swift\n//  App\n//\n//  Created by Joe Blau on 6/21/18.\n//\n\nimport Vapor\n\nstruct Flags: Content {\n    var term: String?\n    var format: String?\n}\n"
  },
  {
    "path": "Sources/App/Models/IgnoreTemplateModel.swift",
    "content": "//\n//  IgnoreTemplateModel.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/18/16.\n//\n//\n\nimport Vapor\n\ninternal struct IgnoreTemplateModel: IgnoreTemplateModeling {\n    var key: String\n    var name: String\n    var fileName: String\n    var contents: String\n}\n\nextension IgnoreTemplateModel: CustomStringConvertible {\n    var description: String {\n        return \"KEY: \\(key)\\nNAME: \\(name)FILE NAME: \\(fileName)\\nCONTENTS: \\(contents)\\n\"\n    }\n}\n"
  },
  {
    "path": "Sources/App/Models/IgnoreTemplateModeling.swift",
    "content": "//\n//  IgnoreTemplateModeling.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 1/29/17.\n//\n//\n\ninternal protocol IgnoreTemplateModeling: Codable {\n    var key: String { get set }\n    var name: String { get set }\n    var fileName: String { get set }\n    var contents: String { get set }\n}\n"
  },
  {
    "path": "Sources/App/Models/InternalLink.swift",
    "content": "struct InternalLink: Codable {\n    let title: String\n    let url: String\n}\n\nstruct InternalLinks: Encodable {\n    var links: [InternalLink]\n}"
  },
  {
    "path": "Sources/App/RouteHandlers/APIRouteHandlers.swift",
    "content": "//\n//  APIRouteHandler.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/17/16.\n//\n//\n\nimport Foundation\nimport Vapor\nimport HTTP\nimport Lingo\n\n\ninternal class APIHandlers {\n    private let splitSize = 5\n    private var order: [String: Int]!\n    private var templates: [String: IgnoreTemplateModel]!\n\n    /// Initialze the API Handlers extension\n    ///\n    /// - Parameter templateController: All of the gitignore template objects\n    init(templateController: TemplateController) {\n        templates = templateController.templates\n        order = templateController.order\n    }\n\n    /// Create the API endpoint for serving ignore templates\n    ///\n    /// - Parameter router: Vapor server side Swift router\n    internal func createIgnoreEndpoint(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/api\"), String.parameter) { request -> Response in\n            let response = request.response()\n            let ignoreString = try request.parameters.next(String.self)\n            let (template, status) = self.createTemplate(ignoreString: ignoreString)\n            try response.content.encode(template)\n            response.http.status = status\n            return response\n        }\n    }\n\n    /// Create the API endpoint for downloading ignore templates\n    ///\n    /// - Parameter router: Vapor server side Swift router\n    internal func createTemplateDownloadEndpoint(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/api/f\"), String.parameter) { request -> HTTPResponse in\n            let ignoreString = try request.parameters.next(String.self)\n            let (template, status) = self.createTemplate(ignoreString: ignoreString)\n            return HTTPResponse(status: status,\n                         version: HTTPVersion(major: 1, minor: 0),\n                         headers: HTTPHeaders([(HTTPHeaderName.contentDisposition.description, \"attachment; filename=\\\"gitignore\\\"\")]),\n                         body: template)\n        }\n    }\n\n    /// Create the API endpoint for showing the list of templates\n    ///\n    /// - Parameter router: Vapor server side Swift router\n    internal func createListEndpoint(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/api/list\")) { request -> Response in\n            let response = request.response()\n\n            let templateKeys =  self.templates.keys.sorted()\n            guard let flags = try? request.query.decode(Flags.self),\n                let format = flags.format else {\n                let groupedLines =  stride(from: 0, to: templateKeys.count, by: self.splitSize)\n                    .map {\n                        templateKeys[$0..<min($0 + self.splitSize, templateKeys.count)].joined(separator: \",\")\n                    }\n                    .joined(separator: \"\\n\")\n                try response.content.encode(groupedLines)\n                return response\n            }\n\n            switch format {\n            case \"lines\": try response.content.encode(templateKeys.joined(separator: \"\\n\"))\n            case \"json\": try response.content.encode(json: self.templates)\n            default:\n                try response.content.encode(\"Unknown Format: `lines` or `json` are acceptable formats\")\n                response.http.status = .internalServerError\n            }\n            return response\n        }\n    }\n\n    /// Create the API endpoint for showing th eorder of templates\n    ///\n    /// - Parameter router: Vapor server side Swift router\n    internal func createOrderEndpoint(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/api/order\")) { request -> Response in\n            let response = request.response()\n            try response.content.encode(json: self.order)\n            return response\n        }\n    }\n\n    /// Create the API endpoint for help\n    ///\n    /// - Parameter router: Vapor server side Swift router\n    internal func createHelp(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/api/\")) { _ in\n            \"\"\"\n            gitignore.io help:\n              list    - lists the operating systems, programming languages and IDE input types\n              :types: - creates .gitignore files for types of operating systems, programming languages or IDEs\n            \"\"\"\n        }\n    }\n\n    // MARK: - Private\n\n    /// Create final output template sorted based on `data/order` file with headers\n    /// and footers applied to templates\n    ///\n    /// - Parameter ignoreString: Comma separated string of templates to generate\n    ///\n    /// - Peturns: Final formatted template with headers and footers\n    private func createTemplate(ignoreString: String) -> (template: String, status: HTTPResponseStatus) {\n        guard let urlDecoded = ignoreString.removingPercentEncoding else {\n            return (\"\"\"\n\n                #!! ERROR: url decoding \\(ignoreString) !#\n\n                \"\"\", .internalServerError)\n        }\n        var createStatus: HTTPResponseStatus = .ok\n        let canonicalUrl = UrlResolver.getCanonicalUrl()\n        let template = urlDecoded\n            .lowercased()\n            .components(separatedBy: \",\")\n            .uniqueElements\n            .sorted()\n            .sorted(by: { (left: String, right: String) -> Bool in\n                (self.order[left] ?? 0) < (self.order[right] ?? 0)\n            })\n            .map { (templateKey) -> String in\n                guard let contents = self.templates[templateKey]?.contents else {\n                    createStatus = .notFound\n                    return \"\"\"\n\n                    #!! ERROR: \\(templateKey) is undefined. Use list command to see defined gitignore types !!#\n\n                    \"\"\"\n                }\n                return contents.replacingOccurrences(of: \"Icon\\r\\n\", with: \"Icon\\r\\r\\n\", options: .regularExpression)\n            }\n            .reduce(\"\"\"\n                # Created by \\(canonicalUrl)/api/\\(urlDecoded)\n                # Edit at \\(canonicalUrl)?templates=\\(urlDecoded)\n\n                \"\"\") { (currentTemplate, contents) -> String in\n                return currentTemplate.appending(contents)\n            }\n            .appending(\"\"\"\n\n            # End of \\(canonicalUrl)/api/\\(urlDecoded)\n\n            \"\"\")\n            .removeDuplicateLines()\n\n        return (template: template, status: createStatus)\n    }\n}\n"
  },
  {
    "path": "Sources/App/RouteHandlers/SiteRouteHandlers.swift",
    "content": "//\n//  SiteRouteHandlers.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 11/7/16.\n//\n//\n\nimport Vapor\nimport Leaf\nimport Lingo\n\nstruct IndexPageContext: Encodable {\n    var titleString: String?\n    var basePrefixString: String?\n    var canonicalUrlString: String?\n    var googleAnalyticsUIDString: String?\n    var descriptionString: String?\n    var searchPlaceholderString: String?\n    var searchGoString: String?\n    var searchDownloadString: String?\n    var subtitleString: String?\n    var sourceCodeDescriptionString: String?\n    var sourceCodeTitleString: String?\n    var commandLineDescriptionString: String?\n    var commandLineTitleString: String?\n    var videoDescriptionString: String?\n    var videoTitleString: String?\n    var footerString: String?\n    var links: InternalLinks?\n}\n\ninternal class SiteHandlers {\n    private let count: String\n    private let templates: [String: IgnoreTemplateModel]\n    private let env: Environment!\n    private var links: InternalLinks\n\n    /// Initialze the Site Handlers extension\n    ///\n    /// - Parameter templateController: All of the gitignore template objects\n    init(templateController: TemplateController, env: Environment, internalLinkingController: InternalLinkingController) {\n        self.count = String(templateController.count)\n        self.templates = templateController.templates\n        self.env = env\n        self.links = internalLinkingController.links\n    }\n\n    /// Create Index Page\n    ///\n    /// - Parameter router: Vapor server side Swift Router\n    internal func createIndexPage(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/\")) { request -> Future<View> in\n            let leaf = try request.make(LeafRenderer.self)\n            let lingo = try request.make(Lingo.self)\n            let locale = request.acceptLanguage\n\n            let context = IndexPageContext(\n                titleString: lingo.localize(\"title\", locale: locale),\n                basePrefixString: UrlResolver.withBasePrefix(\"/\"),\n                canonicalUrlString: UrlResolver.getCanonicalUrl(),\n                googleAnalyticsUIDString: Environment.get(\"GOOGLE_ANALYTICS_UID\"),\n                descriptionString: lingo.localize(\"description\", locale: locale, interpolations: [\"templateCount\": self.count]),\n                searchPlaceholderString: lingo.localize(\"searchPlaceholder\", locale: locale),\n                searchGoString: lingo.localize(\"searchGo\", locale: locale),\n                searchDownloadString: lingo.localize(\"searchDownload\", locale: locale),\n                subtitleString: lingo.localize(\"subtitle\", locale: locale),\n                sourceCodeDescriptionString: lingo.localize(\"sourceCodeDescription\", locale: locale),\n                sourceCodeTitleString: lingo.localize(\"sourceCodeTitle\", locale: locale),\n                commandLineDescriptionString: lingo.localize(\"commandLineDescription\", locale: locale),\n                commandLineTitleString: lingo.localize(\"commandLineTitle\", locale: locale),\n                videoDescriptionString: lingo.localize(\"videoDescription\", locale: locale),\n                videoTitleString: lingo.localize(\"videoTitle\", locale: locale),\n                footerString: lingo.localize(\"footer\", locale: locale, interpolations: [\"templateCount\": self.count]),\n                links: self.links\n            )\n\n            return leaf.render(\"index\", context)\n        }\n    }\n\n    /// Create health check endpoint\n    ///\n    /// - Parameter router: Vapor server side Swift Router\n    internal func addHealthEndpoint(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/health\")) { request -> HTTPResponse in\n            return HTTPResponse(status: .ok, body: \"ok\")\n        }\n    }\n\n    /// Create dropdown template JSON list\n    ///\n    /// - Parameter router: Vapor server side Swift Router\n    internal func createDropdownTemplates(router: Router) {\n        router.get(UrlResolver.withBasePrefix(\"/dropdown/templates.json\")) { request -> [Dropdown] in\n            guard let flags = try? request.query.decode(Flags.self),\n                let term = flags.term else {\n                 return self.createSortedDropdownTemplates()\n            }\n            return self.createSortedDropdownTemplates(query: term)\n        }\n    }\n\n    /// Create dropdown list template\n    ///\n    /// - Parameter templates: Template controller template dictionary\n    ///\n    /// - Returns: JSON array containing all templates\n    private func createSortedDropdownTemplates(query: String? = nil) -> [Dropdown] {\n        return templates\n            .values\n            .filter({ (templateModel) -> Bool in\n                guard let query = query else {\n                    return true\n                }\n                return templateModel.key.contains(query)\n            })\n            .sorted(by: { $0.key < $1.key })\n            .sorted(by: { $0.key.count < $1.key.count })\n            .map { (templateModel) -> Dropdown in\n                return Dropdown(id: templateModel.key, text: templateModel.name)\n            }\n    }\n}\n"
  },
  {
    "path": "Sources/App/RouteHandlers/UrlResolver.swift",
    "content": "import Vapor\n\npublic final class UrlResolver {\n    static let HOST_ORIGIN_FALLBACK = \"https://www.toptal.com\"\n\n    // reads \"HOST_ORIGIN\" from environment variables, leading/trailing \"/\"s will be removed\n    public static func getHostOrigin() -> String {\n        guard let hostOrigin = Environment.get(\"HOST_ORIGIN\") else {\n            return HOST_ORIGIN_FALLBACK\n        }\n\n        return hostOrigin.trimmingCharacters(in: [\"/\"])\n    }\n\n    // generates canonical URL, based on \"HOST_ORIGIN\" and \"BASE_PREFIX\" envvars\n    public static func getCanonicalUrl() -> String {\n        let hostOrigin = self.getHostOrigin()\n\n        guard let prefix = Environment.get(\"BASE_PREFIX\") else {\n            return hostOrigin\n        }\n\n        return hostOrigin + \"/\" + prefix.trimmingCharacters(in: [\"/\"])\n    }\n\n    // adds \"BASE_PREFIX\" envvar to \"route\" (coming as a parameter)\n    // used in route handlers\n    public static func withBasePrefix(_ route: String) -> String {\n        guard let prefix = Environment.get(\"BASE_PREFIX\") else {\n            return route\n        }\n\n        return \"/\" + prefix.trimmingCharacters(in: [\"/\"]) + route\n    }\n}\n"
  },
  {
    "path": "Sources/App/Server.swift",
    "content": "//\n//  Server.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/22/16.\n//\n//\n\nimport Vapor\nimport Leaf\nimport LingoVapor\n\npublic class Gitignore {\n    fileprivate let config: Config\n    fileprivate var services: Services\n    fileprivate let lingoProvider: LingoProvider\n    fileprivate var middlewares: MiddlewareConfig\n\n    public init() {\n        config = Config.default()\n        services = Services.default()\n        middlewares = MiddlewareConfig()\n        lingoProvider = LingoProvider(defaultLocale: \"en\", localizationsDir: \"Localizations\")\n    }\n\n    public func app(_ env: Environment) throws -> Application {\n        try configure(env: env)\n        let app = try Application(config: config, environment: env, services: services)\n\n        return app\n    }\n\n    private func configure(env: Environment) throws {\n        let router = EngineRouter.default()\n        try routes(router, env: env)\n\n        services.register(router, as: Router.self)\n\n        try services.register(LeafProvider())\n        try services.register(lingoProvider)\n        services.register(FileMiddlewareWithBasePrefix.self)\n\n        middlewares.use(FileMiddlewareWithBasePrefix.self)\n        middlewares.use(ErrorMiddleware.self)\n        services.register(middlewares)\n    }\n\n    /// Register your application's routes here.\n    private func routes(_ router: Router, env: Environment) throws {\n        let dataDirectory = URL(fileURLWithPath: DirectoryConfig.detect().workDir, isDirectory: true)\n            .absoluteURL.appendingPathComponent(\"gitignore\", isDirectory: true)\n            .absoluteURL.appendingPathComponent(\"templates\", isDirectory: true)\n        let orderFile = dataDirectory.absoluteURL.appendingPathComponent(\"order\", isDirectory: false)\n\n        let templateController = TemplateController(dataDirectory: dataDirectory, orderFile: orderFile)\n        let internalLinkingController = InternalLinkingController()\n\n        let siteHandlers = SiteHandlers(templateController: templateController, env: env, internalLinkingController: internalLinkingController)\n        siteHandlers.createIndexPage(router: router)\n        siteHandlers.createDropdownTemplates(router: router)\n        siteHandlers.addHealthEndpoint(router: router)\n\n        let apiHandlers = APIHandlers(templateController: templateController)\n        apiHandlers.createIgnoreEndpoint(router: router)\n        apiHandlers.createTemplateDownloadEndpoint(router: router)\n        apiHandlers.createListEndpoint(router: router)\n        apiHandlers.createOrderEndpoint(router: router)\n        apiHandlers.createHelp(router: router)\n    }\n\n}\n"
  },
  {
    "path": "Sources/Run/main.swift",
    "content": "import App\n\nlet gitignore = Gitignore()\ntry gitignore.app(.detect()).run()\n"
  },
  {
    "path": "Tests/AppTests/Controllers/TemplateControllerTests.swift",
    "content": "//\n//  TemplateControllerTests.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/22/16.\n//\n//\n\nimport XCTest\nimport Vapor\n\nimport Foundation\n\n@testable import App\n\nclass TemplateControllerTests: XCTestCase {\n    \n    static let allTests = [\n        (\"testIncorrectDataDirectory\", testIncorrectDataDirectory),\n    ]\n    \n    func testIncorrectDataDirectory() {\n        let rootDirectory = URL(fileURLWithPath: \"\")\n        let noFile = URL(fileURLWithPath: \"\")\n        let templateController = TemplateController(dataDirectory: rootDirectory, orderFile: noFile)\n        XCTAssertEqual(templateController.order.count , 0)\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/Extensions/Sequence+ExtensionsTest.swift",
    "content": "//\n//  Sequence+ExtensionsTest.swift\n//  AppTests\n//\n//  Created by Joe Blau on 6/22/18.\n//\n\nimport XCTest\n\n@testable import App\n\nclass Sequence_ExtensionsTest: XCTestCase {\n\n    static let allTests = [\n        (\"testUniqueElements_numbers\", testUniqueElements_numbers),\n        (\"testUniqueElements_strings\", testUniqueElements_strings),\n        (\"testUniqueElements_emoji\", testUniqueElements_emoji)\n    ]\n\n    func testUniqueElements_numbers() {\n        let sequenceOfDuplciates = [1,2,3,3,4,5,6,1]\n        let sequenceOfUniques = sequenceOfDuplciates.uniqueElements\n        XCTAssertEqual(sequenceOfUniques.count, 6)\n    }\n\n    func testUniqueElements_strings() {\n        let sequenceOfDuplciates = [\"abc\",\"def\",\"hij\",\"abc\",\"abc\",\"xyz\",\"abc\",\"def\"]\n        let sequenceOfUniques = sequenceOfDuplciates.uniqueElements\n        XCTAssertEqual(sequenceOfUniques.count, 4)\n    }\n\n    func testUniqueElements_emoji() {\n        let sequenceOfDuplciates = [\"😂\",\"😃\",\"☺️\",\"😂\",\"😅\",\"😘\",\"😅\"]\n        let sequenceOfUniques = sequenceOfDuplciates.uniqueElements\n        XCTAssertEqual(sequenceOfUniques.count, 5)\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/Extensions/String+ExtensionsTests.swift",
    "content": "//\n//  String+ExtensionsTests.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/21/16.\n//\n//\n\nimport XCTest\nimport Foundation\n\n@testable import App\n\nclass String_ExtensionsTests: XCTestCase {\n    static let allTests = [\n        (\"testStringName_valid\", testStringName_valid),\n        (\"testStringName_empty\", testStringName_empty),\n        (\"testStringFileName_valid\", testStringFileName_valid),\n        (\"testStringFileName_empty\", testStringFileName_empty),\n        (\"testRemoveDuplicateLines\", testRemoveDuplicateLines),\n    ]\n    \n    func testStringName_valid() {\n        let path = URL(fileURLWithPath: \"/User/ElonMusk/Developer/GitIgnoreIO/data/custom/tesla.gitignore\")\n        XCTAssertEqual(path.name, \"tesla\")\n    }\n    \n    func testStringName_empty() {\n        let path = URL(fileURLWithPath: \"\")\n        XCTAssertFalse(path.name.isEmpty)\n    }\n    \n    func testStringFileName_valid() {\n        let path = URL(fileURLWithPath: \"/User/ElonMusk/Developer/GitIgnoreIO/data/custom/tesla.gitignore\")\n        XCTAssertEqual(path.fileName, \"tesla.gitignore\")\n    }\n    \n    func testStringFileName_empty() {\n        let path = URL(fileURLWithPath: \"\")\n        XCTAssertFalse(path.fileName.isEmpty)\n    }\n    \n    \n    func testRemoveDuplicateLines() {\n        let string = \"abc\\n\"\n            .appending(\"#comment\\n\")\n            .appending(\"\\n\")\n            .appending(\"dup\\n\")\n            .appending(\"\\n\")\n            .appending(\"dup\\n\")\n            .appending(\"xyz\\n\")\n        \n        let answer = \"abc\\n\"\n            .appending(\"#comment\\n\")\n            .appending(\"\\n\")\n            .appending(\"dup\\n\")\n            .appending(\"\\n\")\n            .appending(\"xyz\\n\")\n        XCTAssertEqual(string.removeDuplicateLines(), answer)\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/Extensions/URL+ExtensionsTests.swift",
    "content": "//\n//  URL+ExtensionsTests.swift\n//  GitignoreIO\n//\n//  Created by Joseph Blau on 2/12/17.\n//\n//\n\nimport XCTest\nimport Vapor\n\n@testable import App\n\nclass URL_ExtensionsTests: XCTestCase {\n    \n    static let allTests = [\n        (\"testName\", testName),\n        (\"testStackName\", testStackName),\n        (\"testFileName\", testFileName)\n    ]\n\n\n    func testName() {\n        guard let mockURL = URL(string: \"file://this/is/a/test/file.txt\") else {\n            XCTFail()\n            return\n        }\n        XCTAssertEqual(mockURL.name, \"file\")\n    }\n\n    func testStackName() {\n        guard let mockURL = URL(string: \"file://this/is/a/test/file.txt\") else {\n            XCTFail()\n            return\n        }\n        XCTAssertEqual(mockURL.stackName, \"file\")\n    }\n\n    func testFileName() {\n        guard let mockURL = URL(string: \"file://this/is/a/test/file.txt\") else {\n            XCTFail()\n            return\n        }\n        XCTAssertEqual(mockURL.fileName, \"file.txt\")\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/Models/IgnoreTemplateModelTests.swift",
    "content": "//\n//  IgnoreTemplateModelTests.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/21/16.\n//\n//\n\nimport XCTest\n\n@testable import App\n\nclass IgnoreTemplateModelTests: XCTestCase {\n    static let allTests = [\n        (\"testDescription\", testDescription),\n        (\"testJSON\", testJSON),\n    ]\n\n    func testDescription() {\n        let item = IgnoreTemplateModel(key: \"a\", name: \"b\", fileName: \"c\", contents: \"d\")\n        XCTAssertEqual(\"\\(item)\", \"KEY: a\\nNAME: bFILE NAME: c\\nCONTENTS: d\\n\")\n    }\n\n    func testJSON() {\n        let item = IgnoreTemplateModel(key: \"a\", name: \"b\", fileName: \"c\", contents: \"d\")\n        XCTAssertEqual(item.name, \"b\")\n        XCTAssertEqual(item.fileName, \"c\")\n        XCTAssertEqual(item.contents, \"d\")\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/RouteHandlers/APIHandlersTests.swift",
    "content": "//\n//  APIHandlers.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/22/16.\n//\n//\n\nimport XCTest\nimport Vapor\nimport HTTP\n\n@testable import App\n\nclass APIHandlersTests: XCTestCase {\n    static let allTests = [\n        (\"testServer_api_template\", testServer_api_template),\n        (\"testServer_api_no_template\", testServer_api_no_template),\n        (\"testServer_api_file_template\", testServer_api_file_template),\n        (\"testServer_api_list\", testServer_api_list),\n        (\"testServer_api_list_lines\", testServer_api_list_lines),\n        (\"testServer_api_list_json\", testServer_api_list_json),\n        (\"testServer_api_list_xyz\", testServer_api_list_xyz),\n        (\"testServer_api_force_sort_sortable\", testServer_api_force_sort_sortable),\n        (\"testServer_api_no_sort_sortalbe\", testServer_api_no_sort_sortalbe),\n        (\"testServer_api_no_sort_not_sortable\", testServer_api_no_sort_not_sortable),\n        (\"testServer_api_order\", testServer_api_order),\n        (\"testServer_api\", testServer_api),\n    ]\n\n    func testServer_api_template() throws {\n        if let byteCount = try responseForRequest(\"/api/swift\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_no_template() throws {\n        if let byteCount = try responseForRequest(\"/api/f/tesla\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_file_template() throws {\n        if let byteCount = try responseForRequest(\"/api/f/swift\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_list() throws {\n        if let byteCount = try responseForRequest(\"/api/list\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_list_lines() throws {\n        if let byteCount = try responseForRequest(\"/api/list?format=lines\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_list_json() throws {\n        if let byteCount = try responseForRequest(\"/api/list?format=json\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_list_xyz() throws {\n        if let byteCount = try responseForRequest(\"/api/list?format=xyz\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_force_sort_sortable() throws {\n        if let byteCount = try responseForRequest(\"/api/gradle,java\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_no_sort_sortalbe() throws {\n        if let byteCount = try responseForRequest(\"/api/java,gradle\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_no_sort_not_sortable() throws {\n        let body = try responseForRequest(\"/api/macos,swift\").http.body\n        XCTAssertFalse(body.description.contains(\"!! ERROR:\"))\n        XCTAssertTrue(body.description.contains(\"### macOS ###\"))\n        XCTAssertTrue(body.description.contains(\"### Swift ###\"))\n        if let byteCount = body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_url_multiple_url_encoded() throws {\n        let body = try responseForRequest(\"/api/sbt%2Cscala%2Cintellij\").http.body\n        XCTAssertFalse(body.description.contains(\"!! ERROR:\"))\n        XCTAssertTrue(body.description.contains(\"### SBT ###\"))\n        XCTAssertTrue(body.description.contains(\"### Scala ###\"))\n        XCTAssertTrue(body.description.contains(\"### Intellij ###\"))\n        if let byteCount = body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api_order() throws {\n        if let byteCount = try responseForRequest(\"/api/order\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_api() throws {\n        if let byteCount = try responseForRequest(\"/api/\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    // MARK: - Private\n\n    private func responseForRequest(_ url: String) throws -> Response {\n        let application = try Gitignore().app(.detect())\n        let request = HTTPRequest(method: .GET, url: URL(string: url)!)\n        let wrappedRequest = Request(http: request, using: application)\n\n        let responder = try application.make(Responder.self)\n        return try responder.respond(to: wrappedRequest).wait()\n    }\n}\n"
  },
  {
    "path": "Tests/AppTests/RouteHandlers/SiteHandlersTests.swift",
    "content": "//\n//  SiteHandlers.swift\n//  GitignoreIO\n//\n//  Created by Joe Blau on 12/22/16.\n//\n//\n\nimport XCTest\nimport Vapor\nimport HTTP\n\n@testable import App\n\nclass SiteHandlersTests: XCTestCase {\n    \n    static let allTests = [\n        (\"testServer_index\", testServer_index),\n        (\"testServer_docs\", testServer_docs),\n        (\"testServer_templatesJSON_noTerm\", testServer_templatesJSON_noTerm),\n        (\"testServer_templatesJSON_term\", testServer_templatesJSON_term),\n        (\"testServer_templatesJSON_term_capitalLetter\", testServer_templatesJSON_term_capitalLetter),\n        (\"testServer_templatesJSON_multipleTerms\", testServer_templatesJSON_multipleTerms)\n    ]\n\n    func testServer_index() throws {\n        if let byteCount = try responseForRequest(\"/\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_docs() throws {\n        if let byteCount = try responseForRequest(\"/docs\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_templatesJSON_noTerm() throws {\n        if let byteCount = try responseForRequest(\"/dropdown/templates.json\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_templatesJSON_term() throws {\n        if let byteCount = try responseForRequest(\"/dropdown/templates.json?term=java\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_templatesJSON_term_capitalLetter() throws {\n        if let byteCount = try responseForRequest(\"/dropdown/templates.json?term=Java\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n    func testServer_templatesJSON_multipleTerms() throws {\n        if let byteCount = try responseForRequest(\"/dropdown/templates.json?term=java,ada\").http.body.count {\n            XCTAssertGreaterThan(byteCount, 0)\n        } else {\n            XCTFail()\n        }\n    }\n\n\n    // MARK: - Private\n\n    private func responseForRequest(_ url: String) throws -> Response {\n        let application = try Gitignore().app(.detect())\n        let request = HTTPRequest(method: .GET, url: URL(string: url)!)\n        let wrappedRequest = Request(http: request, using: application)\n\n        let responder = try application.make(Responder.self)\n        return try responder.respond(to: wrappedRequest).wait()\n    }\n}\n"
  },
  {
    "path": "Tests/LinuxMain.swift",
    "content": "#if os(Linux)\n\nimport XCTest\n@testable import AppTests\n\nXCTMain([\n    testCase(TemplateControllerTests.allTests),\n    testCase(IgnoreTemplateModelTests.allTests),\n    testCase(String_ExtensionsTests.allTests),\n    testCase(URL_ExtensionsTests.allTests),\n    testCase(APIHandlersTests.allTests),\n    testCase(SiteHandlersTests.allTests),\n])\n\n#endif\n"
  },
  {
    "path": "app.json",
    "content": "{\n    \"name\": \"GitignoreIO\",\n    \"scripts\": {},\n    \"env\": {},\n    \"formation\": {},\n    \"addons\": [],\n    \"buildpacks\": [\n        {\n            \"url\": \"https://github.com/kylef/heroku-buildpack-swift\"\n        }\n    ]\n}\n"
  },
  {
    "path": "docker-compose-dev.yml",
    "content": "# This serves ONLY local testing purposes!\nversion: \"3.5\"\nservices:\n  app:\n    platform: linux/x86_64\n    image: gitignore-io:latest\n    build:\n      context: ./\n      dockerfile: Dockerfile\n    environment:\n      HOST_ORIGIN:\n      BASE_PREFIX:\n      GOOGLE_ANALYTICS_UID:\n    volumes:\n      - ./Public:/app/Public\n      - ./Resources:/app/Resources\n    ports:\n      - 8080:8080\n    command: vapor run\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: \"3.9\"\nservices:\n  app:\n    image: gitignore-io:latest\n    build:\n      context: ./\n      dockerfile: Dockerfile\n    ports:\n      - 8080:8080\n"
  },
  {
    "path": "e2e-tests/api/index.test.js",
    "content": "const superagent = require('superagent');\nconst { templates } = require('../utils/templates');\nlet response;\n\ndescribe('/api/list as lines', () => {\n  beforeAll(async () => {\n    response = await superagent.get(`${BASE_URL}/api/list?format=lines`);\n  });\n\n  it('should be successful', async () => {\n    expect(response.status).toBe(200);\n  });\n\n  it('should contain all valid templates', async () => {\n    templates.forEach((template) => expect(response.text).toContain(template.toLowerCase()));\n  });\n});\n\ndescribe('/api/list as json', () => {\n  beforeAll(async () => {\n    response = await superagent.get(`${BASE_URL}/api/list?format=json`);\n  });\n\n  it('should be successful', async () => {\n    expect(response.status).toBe(200);\n  });\n\n  it('should contain all valid templates', async () => {\n    templates.forEach((template) => expect(Object.keys(response.body)).toContain(template.toLowerCase()));\n  });\n});\n"
  },
  {
    "path": "e2e-tests/api/show.test.js",
    "content": "const superagent = require('superagent');\nconst { randomTemplates } = require('../utils/templates');\nlet response;\n\ndescribe('/api/show single template', () => {\n  randomTemplates(10).forEach((template) => {\n    it(`${template} should be successful`, async () => {\n      response = await superagent.get(`${BASE_URL}/api/${template}`);\n      expect(response.status).toBe(200);\n    });\n    \n    it(`should return ${template} template`, async () => {\n      response = await superagent.get(`${BASE_URL}/api/${template}`);\n      \n      expect(response.text).toContain(template);\n    });\n  });\n});\n\nlet testTemplates = randomTemplates(3);\n\ndescribe('/api/show multiple templates', () => {\n  beforeAll(async () => {\n    response = await superagent.get(`${BASE_URL}/api/${testTemplates.join(',')}`);\n  });\n\n  it(`${testTemplates.join(',')} should be successful`, async () => {\n    expect(response.status).toBe(200);\n  });\n\n  it(`should return ${testTemplates.join(',')} templates`, async () => {\n    testTemplates.forEach((template) => expect(response.text).toContain(template));\n  });\n});\n"
  },
  {
    "path": "e2e-tests/pages/homepage.test.js",
    "content": "const { randomTemplate, randomTemplates } = require('../utils/templates');\n\ndescribe('Home page', () => {\n  const templateSearchResultSelector = 'li.select2-results__option'\n  const selectedTemplatesSelector = 'li.select2-selection__choice';\n  const searchInputSelector = 'input[type=\"search\"]';\n  const submitButtonSelector = '.btn-gitignore';\n  const loadPage = (templates) => {    \n    const templatesQuery = templates !== undefined ? `/?templates=${templates.join(',')}` : ''\n    return page.goto(`${BASE_URL}${templatesQuery}`, {waitUntil: 'networkidle2'});    \n  };\n  const searchFor = async (template) => {\n    const searchInput = await page.$(searchInputSelector);\n    await searchInput.type(template);\n    await expect(page).toClick(templateSearchResultSelector);\n  }\n\n  beforeEach(async () => {\n    await page.setViewport({ width: 1440, height: 900 });    \n  });\n\n  it('should successfully submit a single item', async () => {\n    const template = randomTemplate();\n    \n    await loadPage();\n    await searchFor(template);\n    await expect(await page.$(selectedTemplatesSelector)).toMatch(template, {timeout: 10000});\n    await page.click(submitButtonSelector);\n    await page.waitForFunction(`window.location.href.includes('${template.toLowerCase()}')`);\n    await expect(page).toMatch(template, {timeout: 10000});\n  });\n\n  it('should successfully submit multiple items', async () => {\n    const testTemplates = randomTemplates(3);\n\n    await loadPage();    \n    for (const template of testTemplates) { \n      await searchFor(template);\n    }\n    await expect((await page.$$(selectedTemplatesSelector)).length).toEqual(testTemplates.length);\n    await page.click(submitButtonSelector);\n    await page.waitForFunction(`window.location.href.includes('${testTemplates[0].toLowerCase()}')`);\n    for (const template of testTemplates) {\n      await expect(page).toMatch(template, {timeout: 10000});\n    }\n  });\n\n  it('should successfully load query params templates in search bar', async () => {\n    const testTemplates = randomTemplates(2);\n\n    await loadPage(testTemplates);\n    await expect((await page.$$(selectedTemplatesSelector)).length).toEqual(testTemplates.length);    \n  });\n});\n"
  },
  {
    "path": "e2e-tests/utils/templates.js",
    "content": "const fs = require('fs');\n\nlet templates = [];\n\ntry {\n  fs.readdirSync('./gitignore/templates').forEach(file => {\n    if (file.includes('.gitignore')) {\n      const filenameWithouthExtension = file.split('.')[0];\n      templates.push(filenameWithouthExtension);\n    }\n  });\n} catch (e) {\n  console.log(e);\n}\n\nconst randomTemplate = () => randomTemplates(1)[0];\nconst randomTemplates = (n) => {\n  testTemplates = [];\n  for (let index = 0; index < n; index++) {\n    const myNumArr = new Uint32Array(1);\n    crypto.getRandomValues(myNumArr);\n    const randomNumber = Number(`0.${myNumArr[0]}`);\n\n    testTemplates.push(templates[Math.floor(randomNumber * templates.length)])\n  }\n  return testTemplates;\n}\nmodule.exports = { randomTemplate, randomTemplates, templates }\n"
  },
  {
    "path": "jest-puppeteer.config.js",
    "content": "module.exports = {\n  launch: {\n    dumpio: true,\n    headless: true,\n  },\n  browser: 'chromium',\n  browserContext: 'incognito'\n}\n"
  },
  {
    "path": "jest.config.js",
    "content": "module.exports = {\n  globals: {\n    'BASE_URL': process.env.BASE_URL || 'http://localhost:8080'\n  },\n  preset: 'jest-puppeteer',\n  testTimeout: 30000\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"gitignore.io\",\n  \"version\": \"1.0.0\",\n  \"license\": \"MIT\",\n  \"private\": true,\n  \"devDependencies\": {\n    \"jest\": \"^27.5.1\",\n    \"jest-puppeteer\": \"^6.1.0\",\n    \"puppeteer\": \"^2.1.1\"\n  },\n  \"scripts\": {\n    \"build\": \"webpack --mode production\",\n    \"gitupdate\": \"git submodule update --init --recursive\",\n    \"test\": \"jest e2e-tests\"\n  },\n  \"dependencies\": {\n    \"css-loader\": \"^6.7.1\",\n    \"css-minimizer-webpack-plugin\": \"^3.4.1\",\n    \"file-loader\": \"^6.2.0\",\n    \"jquery\": \"^3.6.0\",\n    \"less\": \"^4.1.1\",\n    \"less-loader\": \"^10.0.0\",\n    \"mini-css-extract-plugin\": \"^1.6.0\",\n    \"style-loader\": \"^2.0.0\",\n    \"superagent\": \"^5.2.2\",\n    \"web-vitals\": \"^2.1.0\",\n    \"webpack\": \"^5.40.0\",\n    \"webpack-cli\": \"^4.7.2\"\n  }\n}\n"
  },
  {
    "path": "src/css/bootstrap-extract.css",
    "content": "*, ::after, ::before {\n  box-sizing: border-box;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\ninput,\nbutton,\nselect {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n}\n\n.input-group > .form-control {\n  -ms-flex: 1 1 0%;\n  flex: 1 1 0%;\n  min-width: 0;\n  margin-bottom: 0;\n  background-color: #fff;\n}\n\n.input-group {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: stretch;\n  align-items: stretch;\n  width: 100%;\n}\n\n.input-group-append {\n  margin-left: -1px;\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n  cursor: pointer;\n}\n\n.btn {\n  border: 1px solid transparent;\n}\n\n.btn:focus {\n  outline: 0;\n}\n"
  },
  {
    "path": "src/index.js",
    "content": "import \"./css/bootstrap-extract.css\";\nimport \"./css/select2.min.css\";\nimport \"./less/select2-toptal-theme.less\";\nimport \"./less/app.less\";\n\nimport \"./js/select2-4.0.13/select2.min.js\"\nimport \"./js/url-search-params-1.1.0/url-search-params.min.js\"\nimport \"./js/app.js\"\n"
  },
  {
    "path": "src/js/app.js",
    "content": "import $ from \"jquery\";\nimport { getCLS, getFID, getLCP } from \"web-vitals\";\nexport class GoogleAnalytics {\n  sendToGoogleAnalytics({ name, delta, id }) {\n    window.gtag(\"event\", name, {\n      event_category: \"web_vitals\",\n      event_label: id,\n      value: Math.round(name === \"CLS\" ? delta * 1000 : delta),\n      non_interaction: true,\n    });\n  }\n\n  trackCoreWebVitals() {\n    getCLS(this.sendToGoogleAnalytics);\n    getFID(this.sendToGoogleAnalytics);\n    getLCP(this.sendToGoogleAnalytics);\n  }\n}\n\n$(function () {\n  $.ajax(window.BASE_PREFIX + \"/dropdown/templates.json\").done(function (data) {\n    const GAInstance = new GoogleAnalytics();\n    GAInstance.trackCoreWebVitals();\n\n    // bootstrap select2\n    $(\"#input-gitignore\").select2({\n      data: data,\n      theme: \"toptal\", // customized theme\n      multiple: true,\n      allowClear: false,\n      minimumInputLength: 1,\n      selectOnClose: true,\n      placeholder: $(\"#input-gitignore-placeholder\").text(),\n      sorter: function (results) {\n        const query = $(\".select2-search__field\").val().toLowerCase();\n        return results.sort(function (a, b) {\n          return (\n            a.text.toLowerCase().indexOf(query) -\n            b.text.toLowerCase().indexOf(query)\n          );\n        });\n      },\n    });\n\n    // load pre-selected tags from URL search params\n    const urlParams = new URLSearchParams(window.location.search);\n    if (urlParams.get(\"templates\") != null) {\n      const preFilledSearchTerms = urlParams\n        .get(\"templates\")\n        .replace(/\\s/g, \"+\")\n        .toLowerCase()\n        .split(\",\");\n      const validIDs = data.map(function (datum) {\n        return datum.id;\n      });\n      const validPreFilledSearchTerms = preFilledSearchTerms.filter(function (\n        term\n      ) {\n        return validIDs.indexOf(term) >= 0;\n      });\n      $(\"#input-gitignore\")\n        .val(validPreFilledSearchTerms)\n        .trigger(\"change.select2\");\n    } else {\n      // in order to fix the problem where placeholder gets cut off\n      $(\"#input-gitignore\").val(\"\").trigger(\"change.select2\");\n    }\n\n    // Highlight input on site load\n    setTimeout(function () {\n      $(\".select2-search__field\").focus();\n      // prevent dropdown opening on page load focus\n      $(\"#input-gitignore\").on(\"select2:opening\", function (e) {\n        e.preventDefault();\n        $(\"#input-gitignore\").off(\"select2:opening\");\n      });\n    });\n  });\n\n  // All users to press ctrl+enter to create template\n  $(\"#input-gitignore\").on(\"select2:selecting\", function (e) {\n    setTimeout(function () {\n      $(\".select2-search__field\").keydown(function (e) {\n        if (e.keyCode == 13 && (e.metaKey || e.ctrlKey)) {\n          generateGitIgnore();\n        }\n      });\n    });\n  });\n\n  // prevent auto sorting of tags selection, keep the order in which they are added\n  // @ref https://github.com/select2/select2/issues/3106\n  $(\"#input-gitignore\").on(\"select2:select\", function (e) {\n    var id = e.params.data.id;\n    var option = $(e.target).children('[value=\"' + id + '\"]');\n    option.detach();\n    $(e.target).append(option).change();\n  });\n\n  // bind click handler to \"Create\" button\n  $(\"#btn-gitignore\").click(function () {\n    generateGitIgnore();\n  });\n\n  // Delete selections by tag instead of individual letter\n  $.fn.select2.amd.require([\"select2/selection/search\"], function (Search) {\n    Search.prototype.searchRemoveChoice = function (decorated, item) {\n      this.trigger(\"unselect\", {\n        data: item,\n      });\n\n      this.$search.val(\"\");\n      this.handleSearch();\n    };\n  });\n\n  // Generate gitignore template\n  function generateGitIgnore() {\n    const searchString = $(\"#input-gitignore\")\n      .map(function () {\n        return $(this).val();\n      })\n      .get()\n      .join(\",\");\n    const searchLength = searchString.length;\n    if (searchLength > 0) {\n      const files = searchString.replace(/^,/, \"\");\n      window.location = window.BASE_PREFIX + \"/api/\" + files;\n      $(\"#input-gitignore\").val(\"\");\n    }\n  }\n\n  // Generate gitignore file template\n  function generateGitIgnoreFile() {\n    const searchString = $(\"#input-gitignore\")\n      .map(function () {\n        return $(this).val();\n      })\n      .get()\n      .join(\",\");\n    const searchLength = searchString.length;\n    if (searchLength > 0) {\n      const files = searchString.replace(/^,/, \"\");\n      window.location = window.BASE_PREFIX + \"/api/f/\" + files;\n    }\n  }\n});\n"
  },
  {
    "path": "src/less/app.less",
    "content": "@import \"variables.less\";\n@import \"internal-linking.less\";\n\n@font-face {\n  font-display: swap;\n  font-weight: 400;\n  font-family: \"Proxima Nova\";\n  font-style: normal;\n  src: url(\"../fonts/ProximaNova-Regular.woff2\") format(\"woff2\"),\n  url(\"../fonts/ProximaNova-Regular.woff\") format(\"woff\"),\n  url(\"../fonts/ProximaNova-Regular.otf\") format(\"opentype\");\n}\n@font-face {\n  font-display: swap;\n  font-weight: 600;\n  font-family: \"Proxima Nova\";\n  font-style: normal;\n  src: url(\"../fonts/ProximaNova-Semibold.woff2\") format(\"woff2\"),\n  url(\"../fonts/ProximaNova-Semibold.woff\") format(\"woff\"),\n  url(\"../fonts/ProximaNova-Semibold.otf\") format(\"opentype\");\n}\n\nbody,\nhtml {\n  height: 100%;\n  background-color: @background;\n}\nbody {\n  min-width: 320px;\n  color: @text;\n  margin: 0;\n  font-family: \"Proxima Nova\", Arial, sans-serif;\n  font-size: 16px;\n  font-weight: @weight-regular;\n  line-height: 1.5;\n  display: flex;\n  flex-direction: column;\n}\na {\n  color: @link;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    text-decoration: underline;\n  }\n}\n.content-wrapper {\n  min-height: 100%;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  padding-top: 72px;\n}\n\n/* --------- header --------- */\nheader {\n  background: @blue;\n  color: @white;\n  height: 72px;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  overflow-x: hidden;\n  z-index: 1100;\n\n  .container {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    height: 100%;\n  }\n\n  a {\n    display: block;\n    line-height: 0;\n  }\n\n  .header-left-column {\n    display: flex;\n    align-items: center;\n    padding: 0 10px;\n\n    a {\n      padding-right: 16px;\n\n      img {\n        min-width: 100px;\n        height: 30px;\n      }\n    }\n\n    h1 {\n      font-size: 17px;\n      line-height: 28px;\n      border-left: 1px solid @logo-divider;\n      padding-left: 16px;\n      margin: 0;\n    }\n  }\n\n  .header-right-column {\n    img {\n      height: 24px;\n    }\n  }\n}\n/* --------- END of header --------- */\n\n/* --------- main --------- */\nmain {\n  width: 100%;\n  flex: 1 0 400px;\n\n  @media (min-width: 768px) {\n    display: flex;\n  }\n\n  .masthead {\n    margin: 0 auto;\n    max-width: 580px;\n    overflow-y: auto;\n    text-align: center;\n  }\n\n  .masthead-top {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    margin-bottom: 25px;\n    margin-top: 120px;\n\n    @media (min-width: 768px) {\n      margin-top: 180px;\n    }\n\n    @media(max-width: 320px) {\n      margin-top: 42px;\n    }\n\n    img {\n      width: 100%;\n      height: auto;\n      max-width: 370px;\n    }\n\n    h2 {\n      color: @text-secondary;\n      margin: 20px 0;\n      font-size: 16px;\n      line-height: 16px;\n    }\n  }\n\n  .input-group {\n    overflow: auto;\n  }\n\n  .masthead-bottom {\n    margin-top: 40px;\n    margin-bottom: 60px;\n\n    ul {\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      list-style: none;\n      margin: 0;\n      padding: 0;\n\n      li {\n        margin-bottom: 16px;\n\n        a {\n          font-size: 16px;\n          line-height: 16px;\n          padding-bottom: 8px;\n\n          &:hover,\n          &:focus {\n            text-decoration: none;\n            border-bottom: 1px solid @link;\n          }\n        }\n      }\n    }\n  }\n}\n/* --------- END of main --------- */\n\n/* --------- footer --------- */\nfooter {\n  height: 142px;\n  color: @text;\n  padding-bottom: 64px;\n\n  & > div {\n    width: 100%;\n    max-width: 624px;\n    margin: 0 auto;\n    padding: 0 16px;\n  }\n\n  .carbon-wrap {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  a.carbon-img {\n    height: 78px;\n\n    img {\n      height: 100%;\n    }\n  }\n\n  a.carbon-text {\n    font-size: 12px;\n    line-height: 20px;\n    padding-left: 8px;\n  }\n\n  .carbon-poweredby {\n    display: none;\n  }\n}\n/* --------- END of footer --------- */\n\n/* --------- responsiveness --------- */\n.container {\n  position: relative;\n  max-width: 100%;\n  padding-right: 16px;\n  padding-left: 16px;\n  margin-right: auto;\n  margin-left: auto;\n\n  @media (min-width: 1200px) {\n    max-width: 1344px;\n  }\n}\n@media (min-width: 576px) {\n  .container {\n    width: 540px;\n  }\n\n  main .masthead-bottom ul {\n    flex-direction: row;\n\n    li:not(:first-child) {\n      &::before {\n        display: inline-block;\n        content: \"\";\n        width: 1px;\n        height: 12px;\n        background-color: @nav-divider;\n        margin: 0 21px;\n      }\n    }\n  }\n}\n@media (min-width: 768px) {\n  .container {\n    width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1376px;\n  }\n\n  header .header-right-column {\n    padding-right: 98px;\n  }\n}\n/* --------- END of responsiveness --------- */\n\n#input-gitignore {\n  -webkit-appearance: none;\n  border: 1px solid @lightgray;\n  border-radius: 0;\n  height: 46px;\n  line-height: 46px;\n}\n#input-gitignore::-ms-expand {\n  display: none;\n}\n\n#internal-linking {\n  border: 0;\n  height: 56px;\n\n  box-shadow: 0px -1px 3px 0px rgba(0, 0, 0, 0.1);\n\n  @media (max-width: 768px) {\n    height: 32px;\n  }\n}\n"
  },
  {
    "path": "src/less/internal-linking.less",
    "content": ".internal-linking {\n    border: 0;\n    width: 100vw;\n    height: @internalLinkingHeightDesktop;\n    overflow: hidden;\n    flex-shrink: 0;\n    flex-basis: @internalLinkingHeightDesktop;\n    @media (max-width: 768px) {\n      height: @internalLinkingHeightMobile;\n      flex-basis: @internalLinkingHeightMobile;\n    }\n  }\n\n  @keyframes ticker {\n    0% {\n      transform: translateX(0%);\n    }\n\n    100% {\n      transform: translateX(-50%);\n    }\n  }\n\n  .internal-linking__container {\n    font-weight: 400;\n    font-family: Proxima Nova, Arial, sans-serif;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    width: 100%;\n    height: 56px;\n    overflow: hidden;\n    color: @white;\n    background-color: @darkBlue;\n\n    .internal-linking__title {\n      z-index: 1;\n      display: flex;\n      flex-direction: row;\n      flex-shrink: 0;\n      align-items: center;\n      height: 100%;\n      color: @blue;\n      font-weight: 600;\n      font-size: 10px;\n      line-height: 12px;\n      text-transform: uppercase;\n      background-color: @white;\n\n      img {\n        margin: 22px 8px 18px 24px;\n      }\n\n      span {\n        margin: 16px 24px 16px 0;\n        white-space: nowrap;\n      }\n    }\n\n    .internal-linking__ticker-list {\n      display: flex;\n      flex-direction: row;\n      font-size: 12px;\n      line-height: 16px;\n      animation-name: ticker;\n      animation-duration: 180s;\n      animation-timing-function: linear;\n      animation-iteration-count: infinite;\n\n      &:hover {\n        animation-play-state: paused;\n      }\n\n      .internal-linking__link {\n        margin: 20px 28px;\n        padding: 5px 12px 3px 12px;\n        color: @white;\n        white-space: nowrap;\n        text-decoration: underline;\n      }\n    }\n  }\n\n  @media screen and (max-width: 768px) {\n    .internal-linking__container {\n      height: 32px;\n      border: none;\n      box-shadow: none;\n\n      .internal-linking__title {\n        img {\n          margin: 8px;\n        }\n\n        span {\n          margin: 6px 16px 6px 0;\n          font-size: 8px;\n          line-height: 10px;\n        }\n      }\n    }\n  }\n\n  @media (max-width: 768px) {\n    .internal-linking__container {\n      .internal-linking__ticker-list {\n        .internal-linking__link {\n          margin: 4px 16px;\n          text-decoration: none;\n          border: 1px solid @white;\n          border-radius: 16px;\n        }\n      }\n    }\n  }\n\n"
  },
  {
    "path": "src/less/select2-toptal-theme.less",
    "content": "@import \"variables.less\";\n\n/*\n * @reference https://github.com/ttskch/select2-bootstrap4-theme/tree/master/src\n */\n\n/******** layout.less ********/\n\n// basic\n.select2-container {\n    display: block;\n\n    *:focus {\n        outline: 0;\n    }\n}\n\n// input-group\n.input-group {\n    .select2-container--toptal {\n        -webkit-box-flex: 1;\n        -ms-flex-positive: 1;\n        flex-grow: 1;\n        max-width: calc(100% - ~\"@{button-width}\" - 1px);\n    }\n\n    .input-group-append {\n        width: @button-width;\n        height: @input-height;\n    }\n\n    @media (max-width: 767px) {\n        flex-direction: column;\n\n        .select2-container--toptal {\n            width: 100% !important;\n            max-width: 100%;\n        }\n\n        .input-group-append {\n            width: 100%;\n            margin-top: 12px;\n            margin-left: 0;\n        }\n    }\n}\n\n.select2-container--toptal {\n\n    // input box\n    .select2-selection {\n        background-color: @input-bg;\n        border-radius: 0;\n        border: 1px solid @input-border-color;\n        box-shadow: none;\n        width: 100%;\n        -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n                transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n                transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n                transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n\n        .select2-search__field {\n            font-size: 16px;\n            line-height: 24px;\n            height: 24px;\n            margin: 10px 0;\n            color: @input-text-color;\n            caret-color: @input-caret-color;\n            -webkit-appearance: none;\n            border-radius: 0;\n\n            @media (min-width: 768px) {\n                font-size: 13px;\n                line-height: 20px;\n                height: 20px;\n                margin: 12px 0;\n            }\n\n            &::-webkit-search-decoration {\n                -webkit-appearance: none;\n            }\n\n            &::placeholder {\n                color: @input-placeholder;\n            }\n            &::-webkit-input-placeholder {\n                color: @input-placeholder;\n            }\n            &:-ms-input-placeholder {\n                color: @input-placeholder;\n            }\n            &::-moz-placeholder {\n                color: @input-placeholder;\n            }\n        }\n    }\n\n    // focused input box\n    &.select2-container--focus {\n        .select2-selection {\n            box-shadow: none;\n            border-color: @input-focus-border-color;\n        }\n\n        // when open, hide bottom border\n        &.select2-container--open .select2-selection {\n            // border-bottom: none;\n            // border-bottom-left-radius: 0;\n            // border-bottom-right-radius: 0;\n        }\n    }\n\n    // dropdown\n    .select2-dropdown {\n        border: none;\n        background-color: @dropdown-bg;\n        box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.08);\n        color: @dropdown-text-color;\n        font-size: 13px;\n        line-height: 16px;\n        margin-top: 0;\n\n        // dropdown opened above\n        &.select2-dropdown--above {\n            // border-top: 1px solid $input-border-color;\n            // border-top-left-radius: $input-border-radius;\n            // border-top-right-radius: $input-border-radius;\n        }\n\n        // selected item\n        .select2-results__option[aria-selected=true] {\n            background-color: @option-selected-color;\n        }\n    }\n\n    .select2-results__option {\n        padding: 10px;\n    }\n\n    // mouse hovered item\n    .select2-results__message,\n    .select2-results__option--highlighted,\n    .select2-results__option--highlighted.select2-results__option[aria-selected=true] {\n        background-color: @option-highlighted-color;\n    }\n\n    // fixes vertical overflow\n    .select2-results > .select2-results__options {\n        max-height: @dropdown-max-height;\n        overflow-y: auto;\n    }\n}\n/******** end of layout.less ********/\n\n\n/******** multiple.less ********/\n.select2-container--toptal {\n    .select2-selection--multiple {\n\n        // height of input box\n        min-height: @input-height;\n\n        // input box\n        .select2-selection__rendered {\n            -webkit-box-sizing: border-box;\n               -moz-box-sizing: border-box;\n                    box-sizing: border-box;\n            list-style: none;\n            margin: 0;\n            padding: 0 10px;\n            width: 100%;\n            display: block;\n        }\n\n        // each selected item in input box\n        .select2-selection__choice {\n            font-size: 12px;\n            font-weight: @weight-semibold;\n            line-height: 22px;\n            color: @tag-color;\n            padding: 0 12px;\n            border-radius: @tag-border-radius;\n            border: 1px solid @tag-border-color;\n            margin: 10px 6px 0 0;\n            float: left;\n            cursor: pointer;\n        }\n\n        // x button of each selected item in input box\n        .select2-selection__choice__remove {\n            color: @tag-remove-color;\n            float: right;\n            margin-left: 8px;\n            font-size: 18px;\n            font-weight: @weight-regular;\n\n            &:hover {\n                color: @tag-remove-color-hover;\n            }\n        }\n    }\n}\n/******** end of multiple.less ********/\n\n\n\n/******** button.less ********/\n.input-group-append {\n    & > .btn-gitignore {\n        width: 100%;\n        color: @button-text;\n        background: @button-bg;\n        -webkit-transition: background .35s cubic-bezier(0,0,.2,1);\n        transition: background .35s cubic-bezier(0,0,.2,1);\n        font-size: 14px;\n        line-height: 16px;\n        text-align: center;\n        border-radius: 0;\n\n        &:focus {\n            box-shadow: none;\n            border-color: @input-focus-border-color;\n        }\n        &:hover {\n            background: @button-bg-hover;\n        }\n    }\n}\n/******** end of button.less ********/\n"
  },
  {
    "path": "src/less/variables.less",
    "content": "// colors\n@black: #000000;\n@white: #ffffff;\n@semi-white: #ebeced;\n@blue: #204ecf;\n@green: #00cc83;\n@darkgreen: #00a369;\n@darkgray: #455065;\n@gray: #a6abb5;\n@lightgray: #d8d9dc;\n@darkBlue: #0f256e;\n\n// fonts\n@weight-thin: 100;\n@weight-light: 300;\n@weight-regular: 400;\n@weight-semibold: 600;\n@weight-bold: 700;\n\n// objects\n@background: transparent;\n@text: @black;\n@text-secondary: @darkgray;\n@link: @blue;\n@link-hover: @blue;\n@logo-divider: @semi-white;\n@nav-divider: @gray;\n@border: @lightgray;\n\n// input\n@input-height: 46px;\n@input-bg: @white;\n@input-border-color: @lightgray;\n@input-focus-border-color: @blue;\n@input-caret-color: @blue;\n@input-text-color: @black;\n@input-placeholder: @lightgray;\n\n// button\n@button-bg: @green;\n@button-bg-hover: @darkgreen;\n@button-text: @white;\n@button-width: 120px;\n\n// select dropdown\n@dropdown-max-height: 15em;\n@dropdown-bg: @white;\n@dropdown-text-color: @black;\n@option-selected-color: @lightgray;\n@option-highlighted-color: rgba(32, 78, 207, 0.08); // rgba(@blue, 0.08)\n\n// select tags\n@tag-color: @blue;\n@tag-border-radius: 100px;\n@tag-border-color: @lightgray;\n@tag-remove-color: @darkgray;\n@tag-remove-color-hover: @gray;\n\n// internal-linking\n@internalLinkingHeightDesktop: 56px;\n@internalLinkingHeightMobile: 32px;"
  },
  {
    "path": "webpack.config.js",
    "content": "const MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst CssMinimizerPlugin = require('css-minimizer-webpack-plugin');\n\nmodule.exports = {\n  output: {\n    path: __dirname + '/Public/assets',\n  },\n\n  plugins: [\n    new MiniCssExtractPlugin({\n      // Options similar to the same options in webpackOptions.output\n      // both options are optional\n      filename: '[name].css',\n      chunkFilename: '[id].css',\n    }),\n  ],\n\n  module: {\n    rules: [\n      {\n        test: /\\.(le|sa|sc|c)ss$/,\n        use: [\n          {\n            loader: MiniCssExtractPlugin.loader,\n            options: {\n              publicPath: '../Public/assets/',\n            },\n          },\n          {\n            loader: 'css-loader',\n            options: {\n              url: false,\n            },\n          },\n          {\n            loader: \"less-loader\",\n            options: {\n              lessOptions: {\n                strictMath: true,\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n\n  optimization: {\n    minimizer: [\n      // For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line\n     `...`,\n      new CssMinimizerPlugin(),\n    ],\n  },\n\n};\n"
  }
]