diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 7f084e43..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Python CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-python/ for more details -# -version: 2 -jobs: - build: - docker: - - image: continuumio/miniconda3 - steps: - - checkout - - run: - name: Conda setup - command: | - conda config --set always_yes yes --set changeps1 no - conda install requests termcolor - - run: - name: Validate roles JSON file - command: | - python validate_roles.py - - store_artifacts: - path: /root/project - destination: html diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 6b0c2359..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,15 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "github-actions" # See documentation for possible values - directory: ".github/workflows" # Location of package manifests - schedule: - interval: "weekly" - groups: - actions: - patterns: - - "*" diff --git a/.github/workflows/circle_artifacts.yml b/.github/workflows/circle_artifacts.yml deleted file mode 100644 index 7a46104f..00000000 --- a/.github/workflows/circle_artifacts.yml +++ /dev/null @@ -1,15 +0,0 @@ -on: [status] -jobs: - circleci_artifacts_redirector_job: - if: "${{ startsWith(github.event.context, 'ci/circleci: build') }}" - runs-on: ubuntu-latest - name: Run CircleCI artifacts redirector - steps: - - name: GitHub Action step - uses: scientific-python/circleci-artifacts-redirector-action@7eafdb60666f57706a5525a2f5eb76224dc8779b # v1.1.0 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - api-token: ${{ secrets.CIRCLECI_TOKEN }} - artifact-path: 0/html/index.html - circleci-jobs: build - job-title: Check the rendered docs here! diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1eb23947..00000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.py[co] -*.DS_STORE diff --git a/CNAME b/CNAME index 2350a56c..e70ba9e6 100644 --- a/CNAME +++ b/CNAME @@ -1 +1,2 @@ -www.astropy.org \ No newline at end of file +www.astropy.org + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index cb1731e4..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,12 +0,0 @@ -For general information on the contribution process, see the [Astropy core package contributing guidelines](https://github.com/astropy/astropy/blob/main/CONTRIBUTING.md). This document only contains specific details for the astropy web page repository. - -# Affiliated Packages - -To propose inclusion of a package as an affiliated package, we work with pyOpenSci to support -the review process, which when complete will lead to your package being listed here. -The details of the review process are outlined at http://affiliated.astropy.org. - -# Modifying Roles in the Team section - -* Modify the `roles.json` file -* Preview locally by opening `team.html` in your browser. Note that most browsers restrict local file access (needed to access your local copy of `roles.json`), so you'll need to configure your browser to allow this - details depend on the browser, but usually you find it in some sort of "developer" menu. diff --git a/LICENSE.rst b/LICENSE.rst deleted file mode 100644 index a041b66f..00000000 --- a/LICENSE.rst +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2012-2018, Astropy Developers - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. -* Neither the name of the Astropy Team nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README b/README new file mode 100644 index 00000000..f5325ea9 --- /dev/null +++ b/README @@ -0,0 +1,6 @@ +This repository contains the Sphinx build for the Astropy website. The latest +source can be found at: + + https://github.com/astropy/astropy-website + +Pull requests should be opened in that repository instead of this one. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 7546ec85..00000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -This repository contains the Astropy web site (primary URL http://www.astropy.org). - -In a previous version of this web site (on the [old_site branch](https://github.com/astropy/astropy.github.com/tree/old_site)), this repository held the build for the site, but the content was generated from the [astropy-website repository](https://github.com/astropy/astropy-website). That repo is no longer active, and issues with the astropy web site should now be reported in *this* repository. - - diff --git a/_downloads/astropy_powered.png b/_downloads/astropy_powered.png new file mode 100644 index 00000000..b3b0db6f Binary files /dev/null and b/_downloads/astropy_powered.png differ diff --git a/images/astropy_powered_white.png b/_downloads/astropy_powered_white.png similarity index 100% rename from images/astropy_powered_white.png rename to _downloads/astropy_powered_white.png diff --git a/_images/aplpy.png b/_images/aplpy.png new file mode 100644 index 00000000..7d0ca754 Binary files /dev/null and b/_images/aplpy.png differ diff --git a/images/astropy_banner_96.png b/_images/astropy_banner_96.png old mode 100755 new mode 100644 similarity index 100% rename from images/astropy_banner_96.png rename to _images/astropy_banner_96.png diff --git a/_images/astropy_powered.png b/_images/astropy_powered.png new file mode 100644 index 00000000..b3b0db6f Binary files /dev/null and b/_images/astropy_powered.png differ diff --git a/_images/ginga.png b/_images/ginga.png new file mode 100644 index 00000000..809c61d2 Binary files /dev/null and b/_images/ginga.png differ diff --git a/_images/montage.png b/_images/montage.png new file mode 100644 index 00000000..df3f16f6 Binary files /dev/null and b/_images/montage.png differ diff --git a/_sources/affiliated/index.txt b/_sources/affiliated/index.txt new file mode 100644 index 00000000..4f70e2b4 --- /dev/null +++ b/_sources/affiliated/index.txt @@ -0,0 +1,293 @@ +:orphan: + +About affiliated packages +========================= + +A major part of the Astropy project is the concept of "Affiliated +Packages". An affiliated package is an astronomy-related Python package +that is not part of the astropy core package, but has requested to +be included as part of the Astropy project's community. These packages +are expressing an interest in Astropy's goals of improving reuse, +interoperability, and interface standards for python astronomy and +astrophysics packages. + +If you are developer interested in signing up as an affiliated package, +details are at the end of this page. + + +Featured packages +================= + +Montage-wrapper +--------------- + +.. |mont| image:: montage.png + +.. |monthome| replace:: Home +.. _monthome: http://www.astropy.org/montage-wrapper + +.. |montdocs| replace:: Documentation +.. _montdocs: http://montage-wrapper.readthedocs.org/ + +.. |montinst| replace:: Installation +.. _montinst: http://montage-wrapper.readthedocs.org/en/latest/#installation + ++--------+-------------------------------------------------------------------+ +| |mont| | **About:** Montage-wrapper is a pure Python module that provides a| +| | Python API to the Montage Astronomical Image Mosaic Engine, | +| | including both functions to access individual Montage commands, | +| | and high-level functions to facilitate mosaicking and | +| | re-projecting. Python-montage uses the Astropy core package for | +| | reading and writing FITS files. | +| | | +| | **Developer:** Thomas Robitaille | +| | | +| | |monthome|_ - |montdocs|_ - |montinst|_ | +| | | ++--------+-------------------------------------------------------------------+ + +Ginga +----- + +.. |ginga| image:: ginga.png + +.. |gingahome| replace:: Home and Installation +.. _gingahome: http://ejeschke.github.io/ginga/ + ++--------+-------------------------------------------------------------------+ +||ginga| | **About:** Ginga is a viewer for astronomical data FITS (Flexible | +| | Image Transport System) files. The Ginga viewer centers around a | +| | new FITS display widget which supports zooming and panning, color | +| | and intensity mapping, a choice of several automatic cut levels | +| | algorithms and canvases for plotting scalable geometric forms. | +| | | +| | **Developer:** Eric Jeschkee | +| | | +| | |gingahome|_ | +| | | ++--------+-------------------------------------------------------------------+ + + +APLpy +----- + +.. |aplpy| image:: aplpy.png + +.. |aplpyhome| replace:: Home +.. _aplpyhome: http://aplpy.github.io + +.. |aplpydocs| replace:: Documentation +.. _aplpydocs: http://aplpy.readthedocs.org + +.. |aplpyinst| replace:: Installation +.. _aplpyinst: http://aplpy.github.io/install.html + ++--------+-------------------------------------------------------------------+ +||aplpy| | **About:** APLpy (the Astronomical Plotting Library in Python) is | +| | a Python module aimed at producing publication-quality plots of | +| | astronomical imaging data in FITS format. The module uses | +| | Matplotlib, a powerful and interactive plotting package. It is | +| | capable of creating output files in several graphical formats, | +| | including EPS, PDF, PS, PNG, and SVG. | +| | | +| | **Developers:** Thomas Robitaille, Eli Bressert, Adam Ginsburg | +| | | +| | |aplpyhome|_ - |aplpydocs|_ - |aplpyinst|_ | +| | | ++--------+-------------------------------------------------------------------+ + +Other packages +============== + +Stable packages +--------------- + +* `astroML `_: tools for machine learning and data mining in Astronomy +* `Astropysics `_: library of IDL astronomy routines converted to Python. + +In development +-------------- + +A few additional affiliated packages are currently in development, including: + +* `photutils `_: photometry tools +* `astroquery `_: online database querying +* `specutils `_: spectroscopic analysis utilities +* `kcorrect `_: Python bindings to kcorrect code of Blanton et al. 2007 + +These packages are still very much in development, and the user interface (API) may not be stable. If you do try these packages, please do report any issues to the developers, so + +Affiliated Package Registry +=========================== + +The following table lists all currently registered affiliated packages. +This table is determined from the http://affiliated.astropy.org/registry.json +file, which is the actual authoritative registry. The *Stable* column indicates +whether the package maintainer consider the package to be ready for use. +Packages that are under heavy development and for which the user interface +is likely to change significantly in the near future are marked as *No*. + +.. The javascript at the bottom does the actual table populating + ++--------------+---------+-----------+----------+-----------------+------------+ +| Package Name | Stable | PyPI Name | Web Page | Code Repository | Maintainer | ++==============+=========+===========+==========+=================+============+ +| Loading... | + + + | | ++--------------+---------+-----------+----------+-----------------+------------+ + + + +Becoming an affiliated package +============================== + +If you are the developer of an astronomy package and would like to become +affiliated with the Astropy project, contact the Astropy coordination commitee +by leaving a message on the `astropy-dev `_ +group, or by contacting one of the coordination committee members directly. + +A candiate affilated package will be judged by the coordination committee on the following +standards: + +* It should use `classes and functions from the astropy package `_ + wherever possible and appropriate. This facilitates re-use of code and + sharing of resources. +* The package should have documentation that adequately explains the use of the + package, at standards comparable to `astropy`. Additionally, user-facing + classes and functions should all have docstrings. We suggest using `sphinx`, + with the `numpydoc`-like `docstring standards used by astropy `_, + but this is not a strict requirement as long as the documentation is of + comparable quality. +* The package should make a best-effort to include an easy-to-run test suite + that covers its intended functionality. We realize this is not possible + always possible, but when possible, a test suite is a crucial element of + stable software and reproducible science. +* The package developer(s) should make an effort to connect with the Astropy + developer community, including both relevant parts of the core `astropy` + package and any related affiliated packages. + + +If you are considering creating a new astronomy package and would like it to be +an Astropy affiliated package, we provides a package template to make it much +easier to meet these standards. It provides the necessary structure to +generate documentation like that used in the `astropy` package, a ready-to-use +testing framework, and a variety of tools that streamline tasks like user +configuration, caching downloaded files, or linking C-compiled extensions. More +details on this template are available in the `usage instructions for the +template `_ . +We also provide +`coding guidelines `_ +that will make your code easier to read by members of the community. + + + + +.. raw:: html + + + + diff --git a/_sources/contributing.txt b/_sources/contributing.txt new file mode 100644 index 00000000..057f8480 --- /dev/null +++ b/_sources/contributing.txt @@ -0,0 +1,42 @@ +:orphan: + +Contributing to Astropy +======================= + +.. _`issue tracker`: http://github.com/astropy/astropy/issues +.. _`astropy-dev`: http://groups.google.com/group/astropy-dev +.. _`contributing`: http://astropy.readthedocs.org/en/latest/development/workflow/index.html + +There are many different ways you can contribute to the Astropy project! + +Report issues +------------- + +Even if you don't have time to contribute code or documentation, please make +sure you report any issues with the package, the documentation, or this +website, to the Astropy `issue tracker`_! + +Contribute code +--------------- + +If you are interested in contributing fixes, code or documentation to Astropy +(whether the core package or affiliated packages), you can join the +`astropy-dev`_ mailing list, and head over to the documentation pages on +`contributing`_ to Astropy. You can either send us a patch, or (preferably) +work on a fork of Astropy and submit the changes via a pull request. + +Develop an affiliated package +----------------------------- + +Whether you have an idea for a new Astronomy package, or already have a +package that you want to integrate with the Astropy project, you can develop +an affiliated package! After joining the `astropy-dev`_ list and notifying +other developers of your intent to develop an affiliated package, you can head +over `here `_ for instructions on +getting started! We can even create a repository for your affiliated package +in the `astropy` organization on GitHub! + +Community +--------- +Astropy welcomes anyone who wants to contribute to the project. We follow the +`Python Software Foundation Code of Conduct `_. diff --git a/_sources/docs.txt b/_sources/docs.txt new file mode 100644 index 00000000..6e741029 --- /dev/null +++ b/_sources/docs.txt @@ -0,0 +1,16 @@ +:orphan: + +Astropy Documentation +===================== + +Below are links to the documentation for all versions of Astropy. + +* `Latest developer version `_ +* `v0.3 (Current Stable Version) `_ +* `v0.2.5 `_ +* `v0.2.4 `_ +* `v0.2.3 `_ +* `v0.2.2 `_ +* `v0.2.1 `_ +* `v0.2 `_ +* `v0.1 `_ diff --git a/_sources/feedback/index.txt b/_sources/feedback/index.txt new file mode 100644 index 00000000..315ee72d --- /dev/null +++ b/_sources/feedback/index.txt @@ -0,0 +1,33 @@ +:orphan: + +Astropy Feedback (and getting help) +=================================== + +Astropy is a package for the community, and the developers depend on the +feedback from users to understand how we can improve Astropy. + +There are several ways in which you can give us feedback: + +* If you would like to give us feedback and participate in discussions, we + encourage you to join the astropy_ mailing list and post + there. This should be the preferred way if you are interested in having a + discussion with the developers and other users. + +* If you have feedback you would prefer to keep private, you can e-mail + `astropy-feedback@googlegroups.com`_. This address points to a private mailing list that + includes the astropy core developers. If you would like a reply (e.g., an + acknowledgement of your comment), please request it. + +* For the extremely impatient, astropy developers often hang out in the + #astropy freenode.net IRC_ channel, which can be accessed for free without + registration from any IRC client (e.g., http://webchat.freenode.net?channels=astropy). + +* We also welcome code posts as `issues`_ (or `pull requests`_) on github and + as posts to the `astropy-dev`_ google group. + +.. _IRC: http://en.wikipedia.org/wiki/Irc +.. _astropy-feedback@googlegroups.com: mailto:astropy-feedback@googlegroups.com +.. _astropy: http://mail.scipy.org/mailman/listinfo/astropy +.. _issues: http://github.com/astropy/astropy/issues +.. _pull requests: https://github.com/astropy/astropy/pulls +.. _astropy-dev: https://groups.google.com/forum/#!forum/astropy-dev diff --git a/_sources/index.txt b/_sources/index.txt new file mode 100644 index 00000000..31bf85bd --- /dev/null +++ b/_sources/index.txt @@ -0,0 +1,142 @@ +.. _`PyFITS`: http://www.stsci.edu/institute/software_hardware/pyfits +.. _`PyWCS`: https://trac.assembla.com/astrolib +.. _`vo`: https://trac.assembla.com/astrolib +.. _`asciitable`: http://cxc.harvard.edu/contrib/asciitable/ +.. _`astropy`: http://mail.scipy.org/mailman/listinfo/astropy +.. _`astropy-dev`: http://groups.google.com/group/astropy-dev +.. _`issue tracker`: http://github.com/astropy/astropy/issues +.. _`latest documentation`: http://astropy.readthedocs.org/en/latest/install.html +.. _`Numpy`: http://numpy.scipy.org +.. _`Python`: http://www.python.org +.. _`pip`: http://pypi.python.org/pypi/pip +.. _`Cython`: http://cython.org/ +.. |currentstable| replace:: Astropy 0.3 +.. _currentstable: http://pypi.python.org/packages/source/a/astropy/astropy-0.3.tar.gz + +.. raw:: html + +
+ +.. image:: logos/astropy_banner_96.png + +.. raw:: html + +
+ +The Astropy Project is a community effort to develop a single core package for +Astronomy in `Python`_ and foster interoperability between `Python`_ astronomy packages. +Development is actively ongoing, with major packages such as `PyFITS`_, +`PyWCS`_, `vo`_, and `asciitable`_ already merged in, and many other components +are under development. For more details, on the plan for the Astropy +project, you can read the :doc:`original vision `, or the +`documentation overview `_. + +The current stable version is |currentstable|_. (`Changelog `_) + +Stay updated by following `@astropy `_ on Twitter, and sign up for the `astropy`_ mailing list, where you can ask python astronomy +questions of all sorts! If you want to get involved in Astropy development +efforts, or other more technical discussions of Astropy, join the +`astropy-dev`_ list. + +**Please note:** If you use Astropy for work/research presented in a +publication, please read `Acknowledging the use of Astropy`_. + +How to start working with Astropy +--------------------------------- + +Take a look at the `Getting Started `_ +guide in the documentation for an initial look at how to work with Astropy. + + +Documentation +------------- + +The documentation for the `astropy` core package is available at the +websites listed below. The first is for the most recent released +version. The second is for a version of the documentation that is +automatically updated any time a change is made to the +`astropy source code repository `_. + +* `Stable version (docs.astropy.org) `_ +* `Latest developer version (devdocs.astropy.org) `_ +* :doc:`All versions ` + + + +Installing +---------- + +Detailed up-to-date installation instructions are provided in the `latest documentation`_, but +we have included a simplified version here. + +Astropy requires `Python`_ 2.6, 2.7, 3.1, 3.2, or 3.3, and `Numpy`_ 1.5 or later. The +best way to install astropy is to use `pip`_:: + + pip install astropy + +Or alternatively, you can download the source from the current version (|currentstable|_), +and install the source code in that archive using:: + + python setup.py install + +You can check that astropy is correctly installed by starting up ``python`` or ``ipython``, and importing ``astropy``:: + + >>> import astropy + +If you do not get any errors, the installation was successful! + +.. note:: + + If you want to install the latest *developer* version of Astropy, use:: + + git clone https://github.com/astropy/astropy.git + cd astropy + python setup.py install + + Be aware that the developer build requires `Cython`_ (in addition to `Numpy`_). + + +Getting help +------------ + +If you want to discuss issues with other Astropy users, you can sign up +to the `astropy`_ mailing list. Alternatively, the `astropy-dev`_ list +is where you should go to discuss more technical aspects of Astropy. + +Reporting issues +---------------- + +If you have come across something that you believe is a bug, please open a +ticket in the Astropy `issue tracker`_, and we will look into it promptly! + +Acknowledging the use of Astropy +-------------------------------- + +Publications +============ + +If you use Astropy for work/research presented in a publication (whether +directly, or as a dependency to another package), we would be grateful if you +could include the following acknowledgment: + +*This research made use of Astropy, a community-developed core Python package +for Astronomy (Astropy Collaboration, 2013).* + +where *(Astropy Collaboration, 2013)* is a citation to `this paper +`_ (`ADS `_ - `BibTeX `_). + +If you wish, you can also include a link to ``_ (if +the journal allows this) in addition to the above text. + +Presentations +============= + +If you are giving a presentation or talk featuring work/research that makes use of +Astropy and would like to acknowledge Astropy, we suggest using :download:`this logo ` on your title slide: + +.. image :: logos/astropy_powered.png + :width: 180px + :height: 33px + +The logo is :download:`also available with white text `, +or the SVG originals can be obtained at the `astropy-logo github repository `_. diff --git a/_sources/team.txt b/_sources/team.txt new file mode 100644 index 00000000..035f3675 --- /dev/null +++ b/_sources/team.txt @@ -0,0 +1,16 @@ +:orphan: + +The Astropy Team +================ + +.. warning:: + If the web site builds correctly, this page should get replaced and the + text below should never appear. + +This is a placeholder for the Astropy author list. In the build process +for the site, this will be replaced by a copy taken from the Astropy +core package repository. If you're seeing this page, it means that +download process failed somehow. If you're not connected to the +internet but have a local copy of astropy, you can try setting the +``ASTROPY_REPO_PATH`` environment variable to point to the +repository. diff --git a/_sources/vision.txt b/_sources/vision.txt new file mode 100644 index 00000000..817f39c3 --- /dev/null +++ b/_sources/vision.txt @@ -0,0 +1,110 @@ +:orphan: + +Vision for a Common Astronomy Python Package +============================================ + +The following document summarizes the original 'manifesto' for the Astropy +project which was adopted in July 2011. + +Long-term Vision +---------------- + +The ultimate goal that we seek is a package that would contain much of the +core functionality and some common tools required across Astronomy, but not +*everything* Astronomers will ever need. The aim is primarily to avoid +duplication for common core tasks, and to provide a robust framework upon +which to build more complex tools. + +Such a common package should not preclude any other Astronomy package from +existing, because there will always be more complex and/or specialized tools +required. These tools will be able to rely on a single core library for many +tasks, and thus reduce the number of dependencies, reduce duplication of +functionality, and increase consistency of their interfaces. + +Procedure +--------- + +With the help of the community, the coordination committee will start by +identifying a few of key areas where initial development/consolidation will be +needed (such as FITS, WCS, coordinates, tables, photometry, spectra, etc.) and +will encourage teams to be formed to build standalone packages implementing +this functionality. These packages will be referred to as affiliated packages +(meaning that they are intended for future integration in the core package). + +A set of requirements will be set out concerning the interfaces and +classes/methods that affiliated packages will need to make available in order +to ensure consistency between the different components. As the core package +grows, new potential areas/components for the core package will be identified. +Competition cannot be avoided, and will not be actively discouraged, but +whenever possible, developers should strive to work as a team to provide a +single and robust affiliated package, for the benefit of the community. + +The affiliated packages will be developed outside the core package in +independent repositories, which will allow the teams the choice of tool and +organization. Once an affiliated package has implemented the desired +functionality, and satisfies quality criteria for coding style, documentation, +and testing, it will be considered for inclusion in the core package, and +further development will be done directly in the core package either via +direct access to the repository, or via patches/pull requests (exactly how +this will be done will be decided later). + +To ensure uniformity across affiliated packages, and to facilitate integration +with the core package, developers who wish to submit their affiliated packages +for inclusion in the core will need to follow the layout of a *template* +package that will be provided before development starts. + +Dependencies +------------ + +Affiliated packages should be able to be imported with only the following +dependencies: + +* The Python Standard Library +* NumPy, SciPy, and Matplotlib +* Components already in the core Astronomy package + +Other packages may be used, but must be imported as needed rather than during +the initial import of the package. + +If a dependency is needed, but is an affiliated package, the dependent package +will need to wait until the dependency is integrated into the core package +before being itself considered for inclusion. In the mean time, it can make +use of the other affiliated package in its current form, or other packages, so +as not to stall development. Thus, the first packages to be included in the +core will be those only requiring the standard library, NumPy, SciPy, and +Matplotlib. + +If the required dependency will never be part of a main package, then by +default the dependency can be included but should be imported as needed +(meaning that it only prevents the importing of that component, not the entire +core package), unless a strong case is made and a general consensus is reached +by the community that this dependency is important enough to be required at a +higher level. + +This system means that packages will be integrated into the core package in an +order depending on the dependency tree, and also ensures that the interfaces +of packages being integrated into the core package are consistent with those +already in the core package. + +Initially, no dependency on GUI toolkits will be allowed in the core package. +If the community reaches agrees on a single toolkit that could be used, then +this toolkit will be allowed (but will only be imported as needed). + +Keeping track of affiliated packages +------------------------------------ + +Affiliated packages will be listed in a central location (in addition to PyPI) +that will allow an easy installation of all the affiliated packages, for +example with a script that will seamlessly download and install all the +affiliated packages. The core package will also include mechanisms to +facilitate this installation process. + +Existing Packages +----------------- + +Developers who already have existing packages will be encouraged to continue +supporting them for the benefit of users until the core library is considered +stable, contains this functionality, and is released to the community. +Thereafter, developers should encourage users to transition to using the +functionality in the core package, and eventually phase out their own +packages, unless they provide added value over the core package. diff --git a/_static/ajax-loader.gif b/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/_static/ajax-loader.gif differ diff --git a/_static/astropy_logo.ico b/_static/astropy_logo.ico new file mode 100644 index 00000000..c2bca3af Binary files /dev/null and b/_static/astropy_logo.ico differ diff --git a/_static/astropy_word_32.png b/_static/astropy_word_32.png new file mode 100644 index 00000000..7fd42f9f Binary files /dev/null and b/_static/astropy_word_32.png differ diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..43e8bafa --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/bootstrap-dropdown.js b/_static/bootstrap-dropdown.js new file mode 100644 index 00000000..fda6da59 --- /dev/null +++ b/_static/bootstrap-dropdown.js @@ -0,0 +1,55 @@ +/* ============================================================ + * bootstrap-dropdown.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#dropdown + * ============================================================ + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( selector ) { + return this.each(function () { + $(this).delegate(selector || d, 'click', function (e) { + var li = $(this).parent('li') + , isActive = li.hasClass('open') + + clearMenus() + !isActive && li.toggleClass('open') + return false + }) + }) + } + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + var d = 'a.menu, .dropdown-toggle' + + function clearMenus() { + $(d).parent('li').removeClass('open') + } + + $(function () { + $('html').bind("click", clearMenus) + $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' ) + }) + +}( window.jQuery || window.ender ); diff --git a/_static/bootstrap-scrollspy.js b/_static/bootstrap-scrollspy.js new file mode 100644 index 00000000..efbc4329 --- /dev/null +++ b/_static/bootstrap-scrollspy.js @@ -0,0 +1,107 @@ +/* ============================================================= + * bootstrap-scrollspy.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================== */ + + +!function ( $ ) { + + "use strict" + + var $window = $(window) + + function ScrollSpy( topbar, selector ) { + var processScroll = $.proxy(this.processScroll, this) + this.$topbar = $(topbar) + this.selector = selector || 'li > a' + this.refresh() + this.$topbar.delegate(this.selector, 'click', processScroll) + $window.scroll(processScroll) + this.processScroll() + } + + ScrollSpy.prototype = { + + refresh: function () { + this.targets = this.$topbar.find(this.selector).map(function () { + var href = $(this).attr('href') + return /^#\w/.test(href) && $(href).length ? href : null + }) + + this.offsets = $.map(this.targets, function (id) { + return $(id).offset().top + }) + } + + , processScroll: function () { + var scrollTop = $window.scrollTop() + 10 + , offsets = this.offsets + , targets = this.targets + , activeTarget = this.activeTarget + , i + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activateButton( targets[i] ) + } + } + + , activateButton: function (target) { + this.activeTarget = target + + this.$topbar + .find(this.selector).parent('.active') + .removeClass('active') + + this.$topbar + .find(this.selector + '[href="' + target + '"]') + .parent('li') + .addClass('active') + } + + } + + /* SCROLLSPY PLUGIN DEFINITION + * =========================== */ + + $.fn.scrollSpy = function( options ) { + var scrollspy = this.data('scrollspy') + + if (!scrollspy) { + return this.each(function () { + $(this).data('scrollspy', new ScrollSpy( this, options )) + }) + } + + if ( options === true ) { + return scrollspy + } + + if ( typeof options == 'string' ) { + scrollspy[options]() + } + + return this + } + + $(document).ready(function () { + $('body').scrollSpy('[data-scrollspy] li > a') + }) + +}( window.jQuery || window.ender ); \ No newline at end of file diff --git a/_static/bootstrap-sphinx.css b/_static/bootstrap-sphinx.css new file mode 100644 index 00000000..f082e0fd --- /dev/null +++ b/_static/bootstrap-sphinx.css @@ -0,0 +1,19 @@ +/* +* bootstrap-sphinx.css +* ~~~~~~~~~~~~~~~~~~~~ +* +* Sphinx stylesheet -- Twitter Bootstrap theme. +*/ + +body { + padding-top: 42px; +} + +div.documentwrapper { + float: left; + width: 100%; +} +.topbar h3 a, .topbar .brand { + background: transparent url("astropy_word_32.png") no-repeat 22px 4px; + padding-left: 62px; +} \ No newline at end of file diff --git a/_static/bootstrap.css b/_static/bootstrap.css new file mode 100644 index 00000000..dd20b54e --- /dev/null +++ b/_static/bootstrap.css @@ -0,0 +1,2496 @@ +/* The following few lines were added by T. Robitaille for Astropy website */ + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: hidden; +} + +.logo_banner { + padding-top: 20px; + padding-bottom: 10px; +} + +.brand { + width: 72px; + height: 32px; +} + +/*! + * Bootstrap v1.4.0 + * + * Copyright 2011 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + * Date: Sun Nov 20 21:42:29 PST 2011 + */ +/* Reset.less + * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). + * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ +html, body { + margin: 0; + padding: 0; + text-align: justify; +} +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +cite, +code, +del, +dfn, +em, +img, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +dd, +dl, +dt, +li, +ol, +ul, +fieldset, +form, +label, +legend, +button, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td { + margin: 0; + padding: 0; + border: 0; + font-weight: normal; + font-style: normal; + font-size: 100%; + line-height: 1; + font-family: inherit; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +ol, ul { + list-style: none; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +html { + overflow-y: scroll; + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted; +} +a:hover, a:active { + outline: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; + -ms-interpolation-mode: bicubic; +} +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} +button, input { + line-height: normal; + *overflow: visible; +} +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; +} +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +/* Variables.less + * Variables to customize the look and feel of Bootstrap + * ----------------------------------------------------- */ +/* Mixins.less + * Snippets of reusable CSS to develop faster and keep code readable + * ----------------------------------------------------------------- */ +/* + * Scaffolding + * Basic and global styles for generating a grid system, structural layout, and page templates + * ------------------------------------------------------------------------------------------- */ +body { + background-color: #ffffff; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; + color: #404040; +} +.container { + width: 740px; + margin-left: auto; + margin-right: auto; + zoom: 1; +} +.container:before, .container:after { + display: table; + content: ""; + zoom: 1; +} +.container:after { + clear: both; +} +.container-fluid { + position: relative; + min-width: 740px; + padding-left: 20px; + padding-right: 20px; + zoom: 1; +} +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; + zoom: 1; +} +.container-fluid:after { + clear: both; +} +.container-fluid > .sidebar { + position: absolute; + top: 0; + left: 20px; + width: 220px; +} +.container-fluid > .content { + margin-left: 240px; +} +a { + color: #0069d6; + text-decoration: none; + line-height: inherit; + font-weight: inherit; +} +a:hover { + color: #00438a; + text-decoration: underline; +} +.pull-right { + float: right; + width: 250px; + text-align: right; +} +.pull-left { + float: left; + width: 250px; + text-align: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.row { + zoom: 1; + margin-left: -20px; +} +.row:before, .row:after { + display: table; + content: ""; + zoom: 1; +} +.row:after { + clear: both; +} +.row > [class*="span"] { + display: inline; + float: left; + margin-left: 20px; +} +.span1 { + width: 40px; +} +.span2 { + width: 100px; +} +.span3 { + width: 160px; +} +.span4 { + width: 220px; +} +.span5 { + width: 280px; +} +.span6 { + width: 340px; +} +.span7 { + width: 400px; +} +.span8 { + width: 460px; +} +.span9 { + width: 520px; +} +.span10 { + width: 580px; +} +.span11 { + width: 640px; +} +.span12 { + width: 700px; +} +.span13 { + width: 760px; +} +.span14 { + width: 820px; +} +.span15 { + width: 880px; +} +.span16 { + width: 740px; +} +.span17 { + width: 1000px; +} +.span18 { + width: 1060px; +} +.span19 { + width: 1120px; +} +.span20 { + width: 1180px; +} +.span21 { + width: 1240px; +} +.span22 { + width: 1300px; +} +.span23 { + width: 1360px; +} +.span24 { + width: 1420px; +} +.row > .offset1 { + margin-left: 80px; +} +.row > .offset2 { + margin-left: 140px; +} +.row > .offset3 { + margin-left: 200px; +} +.row > .offset4 { + margin-left: 260px; +} +.row > .offset5 { + margin-left: 320px; +} +.row > .offset6 { + margin-left: 380px; +} +.row > .offset7 { + margin-left: 440px; +} +.row > .offset8 { + margin-left: 500px; +} +.row > .offset9 { + margin-left: 560px; +} +.row > .offset10 { + margin-left: 620px; +} +.row > .offset11 { + margin-left: 680px; +} +.row > .offset12 { + margin-left: 740px; +} +.span-one-third { + width: 300px; +} +.span-two-thirds { + width: 620px; +} +.row > .offset-one-third { + margin-left: 340px; +} +.row > .offset-two-thirds { + margin-left: 660px; +} +/* Typography.less + * Headings, body text, lists, code, and more for a versatile and durable typography system + * ---------------------------------------------------------------------------------------- */ +p { + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin-bottom: 9px; +} +p small { + font-size: 11px; + color: #bfbfbf; +} +h1, +h2, +h3, +h4, +h5, +h6 { +/* font-weight: bold;*/ + color: #404040; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + color: #bfbfbf; +} +h1 { + margin-top: 14px; + margin-bottom: 10px; + font-size: 22px; + line-height: 33px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 18px; + line-height: 27px; + margin-bottom: 10px; +} +h2 small { + font-size: 14px; +} +h3, +h4, +h5, +h6 { + line-height: 36px; +} +h3 { + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4 { + font-size: 16px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 14px; +} +h6 { + font-size: 13px; + color: #bfbfbf; + text-transform: uppercase; +} +ul, ol { + margin: 0 0 18px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; + color: #808080; +} +ul.unstyled { + list-style: none; + margin-left: 0; +} +dl { + margin-bottom: 18px; +} +dl dt, dl dd { + line-height: 18px; +} +dl dt { + font-weight: bold; +} +dl dd { + margin-left: 9px; +} +hr { + margin: 20px 0 19px; + border: 0; + border-bottom: 1px solid #eee; +} +strong { + font-style: inherit; + font-weight: bold; +} +em { + font-style: italic; + font-weight: inherit; + line-height: inherit; +} +.muted { + color: #bfbfbf; +} +blockquote { + margin-bottom: 18px; + border-left: 5px solid #eee; + padding-left: 15px; +} +blockquote p { + font-size: 14px; + font-weight: 300; + line-height: 18px; + margin-bottom: 0; +} +blockquote small { + display: block; + font-size: 12px; + font-weight: 300; + line-height: 18px; + color: #bfbfbf; +} +blockquote small:before { + content: '\2014 \00A0'; +} +address { + display: block; + line-height: 18px; + margin-bottom: 18px; +} +code, pre { + padding: 0 3px 2px; + font-family: Monaco, Andale Mono, Courier New, monospace; + font-size: 12px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + background-color: #fee9cc; + color: rgba(0, 0, 0, 0.75); + padding: 1px 3px; +} +pre { + background-color: #f5f5f5; + display: block; + padding: 8.5px; + margin: 0 0 18px; + line-height: 18px; + font-size: 12px; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} +/* Forms.less + * Base styles for various input types, form layouts, and states + * ------------------------------------------------------------- */ +form { + margin-bottom: 18px; +} +fieldset { + margin-bottom: 18px; + padding-top: 18px; +} +fieldset legend { + display: block; + padding-left: 150px; + font-size: 19.5px; + line-height: 1; + color: #404040; + *padding: 0 0 5px 145px; + /* IE6-7 */ + + *line-height: 1.5; + /* IE6-7 */ + +} +form .clearfix { + margin-bottom: 18px; + zoom: 1; +} +form .clearfix:before, form .clearfix:after { + display: table; + content: ""; + zoom: 1; +} +form .clearfix:after { + clear: both; +} +label, +input, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: normal; +} +label { + padding-top: 6px; + font-size: 13px; + line-height: 18px; + float: left; + width: 130px; + text-align: right; + color: #404040; +} +form .input { + margin-left: 150px; +} +input[type=checkbox], input[type=radio] { + cursor: pointer; +} +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +select { + padding: initial; +} +input[type=checkbox], input[type=radio] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE6-7 */ + + line-height: normal; + border: none; +} +input[type=file] { + background-color: #ffffff; + padding: initial; + border: initial; + line-height: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[type=button], input[type=reset], input[type=submit] { + width: auto; + height: auto; +} +select, input[type=file] { + height: 27px; + *height: auto; + line-height: 27px; + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + +} +select[multiple] { + height: inherit; + background-color: #ffffff; +} +textarea { + height: auto; +} +.uneditable-input { + background-color: #ffffff; + display: block; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} +:-moz-placeholder { + color: #bfbfbf; +} +::-webkit-input-placeholder { + color: #bfbfbf; +} +input, textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +input:focus, textarea:focus { + outline: 0; + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); +} +input[type=file]:focus, input[type=checkbox]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 1px dotted #666; +} +form .clearfix.error > label, form .clearfix.error .help-block, form .clearfix.error .help-inline { + color: #b94a48; +} +form .clearfix.error input, form .clearfix.error textarea { + color: #b94a48; + border-color: #ee5f5b; +} +form .clearfix.error input:focus, form .clearfix.error textarea:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} +form .clearfix.error .input-prepend .add-on, form .clearfix.error .input-append .add-on { + color: #b94a48; + background-color: #fce6e6; + border-color: #b94a48; +} +form .clearfix.warning > label, form .clearfix.warning .help-block, form .clearfix.warning .help-inline { + color: #c09853; +} +form .clearfix.warning input, form .clearfix.warning textarea { + color: #c09853; + border-color: #ccae64; +} +form .clearfix.warning input:focus, form .clearfix.warning textarea:focus { + border-color: #be9a3f; + -webkit-box-shadow: 0 0 6px #e5d6b1; + -moz-box-shadow: 0 0 6px #e5d6b1; + box-shadow: 0 0 6px #e5d6b1; +} +form .clearfix.warning .input-prepend .add-on, form .clearfix.warning .input-append .add-on { + color: #c09853; + background-color: #d2b877; + border-color: #c09853; +} +form .clearfix.success > label, form .clearfix.success .help-block, form .clearfix.success .help-inline { + color: #468847; +} +form .clearfix.success input, form .clearfix.success textarea { + color: #468847; + border-color: #57a957; +} +form .clearfix.success input:focus, form .clearfix.success textarea:focus { + border-color: #458845; + -webkit-box-shadow: 0 0 6px #9acc9a; + -moz-box-shadow: 0 0 6px #9acc9a; + box-shadow: 0 0 6px #9acc9a; +} +form .clearfix.success .input-prepend .add-on, form .clearfix.success .input-append .add-on { + color: #468847; + background-color: #bcddbc; + border-color: #468847; +} +.input-mini, +input.mini, +textarea.mini, +select.mini { + width: 60px; +} +.input-small, +input.small, +textarea.small, +select.small { + width: 90px; +} +.input-medium, +input.medium, +textarea.medium, +select.medium { + width: 150px; +} +.input-large, +input.large, +textarea.large, +select.large { + width: 210px; +} +.input-xlarge, +input.xlarge, +textarea.xlarge, +select.xlarge { + width: 270px; +} +.input-xxlarge, +input.xxlarge, +textarea.xxlarge, +select.xxlarge { + width: 530px; +} +textarea.xxlarge { + overflow-y: auto; +} +input.span1, textarea.span1 { + display: inline-block; + float: none; + width: 30px; + margin-left: 0; +} +input.span2, textarea.span2 { + display: inline-block; + float: none; + width: 90px; + margin-left: 0; +} +input.span3, textarea.span3 { + display: inline-block; + float: none; + width: 150px; + margin-left: 0; +} +input.span4, textarea.span4 { + display: inline-block; + float: none; + width: 210px; + margin-left: 0; +} +input.span5, textarea.span5 { + display: inline-block; + float: none; + width: 270px; + margin-left: 0; +} +input.span6, textarea.span6 { + display: inline-block; + float: none; + width: 330px; + margin-left: 0; +} +input.span7, textarea.span7 { + display: inline-block; + float: none; + width: 390px; + margin-left: 0; +} +input.span8, textarea.span8 { + display: inline-block; + float: none; + width: 450px; + margin-left: 0; +} +input.span9, textarea.span9 { + display: inline-block; + float: none; + width: 510px; + margin-left: 0; +} +input.span10, textarea.span10 { + display: inline-block; + float: none; + width: 570px; + margin-left: 0; +} +input.span11, textarea.span11 { + display: inline-block; + float: none; + width: 630px; + margin-left: 0; +} +input.span12, textarea.span12 { + display: inline-block; + float: none; + width: 690px; + margin-left: 0; +} +input.span13, textarea.span13 { + display: inline-block; + float: none; + width: 750px; + margin-left: 0; +} +input.span14, textarea.span14 { + display: inline-block; + float: none; + width: 810px; + margin-left: 0; +} +input.span15, textarea.span15 { + display: inline-block; + float: none; + width: 870px; + margin-left: 0; +} +input.span16, textarea.span16 { + display: inline-block; + float: none; + width: 930px; + margin-left: 0; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} +.actions { + background: #f5f5f5; + margin-top: 18px; + margin-bottom: 18px; + padding: 17px 20px 18px 150px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; +} +.actions .secondary-action { + float: right; +} +.actions .secondary-action a { + line-height: 30px; +} +.actions .secondary-action a:hover { + text-decoration: underline; +} +.help-inline, .help-block { + font-size: 13px; + line-height: 18px; + color: #bfbfbf; +} +.help-inline { + padding-left: 5px; + *position: relative; + /* IE6-7 */ + + *top: -5px; + /* IE6-7 */ + +} +.help-block { + display: block; + max-width: 600px; +} +.inline-inputs { + color: #808080; +} +.inline-inputs span { + padding: 0 2px 0 1px; +} +.input-prepend input, .input-append input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-prepend .add-on, .input-append .add-on { + position: relative; + background: #f5f5f5; + border: 1px solid #ccc; + z-index: 2; + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 4px 4px 5px; + margin-right: -1px; + font-weight: normal; + line-height: 18px; + color: #bfbfbf; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-prepend .active, .input-append .active { + background: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on { + *margin-top: 1px; + /* IE6-7 */ + +} +.input-append input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-append .add-on { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; + margin-right: 0; + margin-left: -1px; +} +.inputs-list { + margin: 0 0 5px; + width: 100%; +} +.inputs-list li { + display: block; + padding: 0; + width: 100%; +} +.inputs-list label { + display: block; + float: none; + width: auto; + padding: 0; + margin-left: 20px; + line-height: 18px; + text-align: left; + white-space: normal; +} +.inputs-list label strong { + color: #808080; +} +.inputs-list label small { + font-size: 11px; + font-weight: normal; +} +.inputs-list .inputs-list { + margin-left: 25px; + margin-bottom: 10px; + padding-top: 0; +} +.inputs-list:first-child { + padding-top: 6px; +} +.inputs-list li + li { + padding-top: 2px; +} +.inputs-list input[type=radio], .inputs-list input[type=checkbox] { + margin-bottom: 0; + margin-left: -20px; + float: left; +} +.form-stacked { + padding-left: 20px; +} +.form-stacked fieldset { + padding-top: 9px; +} +.form-stacked legend { + padding-left: 0; +} +.form-stacked label { + display: block; + float: none; + width: auto; + font-weight: bold; + text-align: left; + line-height: 20px; + padding-top: 0; +} +.form-stacked .clearfix { + margin-bottom: 9px; +} +.form-stacked .clearfix div.input { + margin-left: 0; +} +.form-stacked .inputs-list { + margin-bottom: 0; +} +.form-stacked .inputs-list li { + padding-top: 0; +} +.form-stacked .inputs-list li label { + font-weight: normal; + padding-top: 0; +} +.form-stacked div.clearfix.error { + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + margin-top: 0; + margin-left: -10px; +} +.form-stacked .actions { + margin-left: -20px; + padding-left: 20px; +} +/* + * Tables.less + * Tables for, you guessed it, tabular data + * ---------------------------------------- */ +table { + width: 100%; + margin-bottom: 18px; + padding: 0; + font-size: 13px; + border-collapse: collapse; +} +table th, table td { + padding: 10px 10px 9px; + line-height: 18px; + text-align: left; +} +table th { + padding-top: 9px; + font-weight: bold; + vertical-align: middle; +} +table td { + vertical-align: top; + border-top: 1px solid #ddd; +} +table tbody th { + border-top: 1px solid #ddd; + vertical-align: top; +} +.condensed-table th, .condensed-table td { + padding: 5px 5px 4px; +} +.bordered-table { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapse; + /* IE7, collapse table to remove spacing */ + + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.bordered-table th + th, .bordered-table td + td, .bordered-table th + td { + border-left: 1px solid #ddd; +} +.bordered-table thead tr:first-child th:first-child, .bordered-table tbody tr:first-child td:first-child { + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} +.bordered-table thead tr:first-child th:last-child, .bordered-table tbody tr:first-child td:last-child { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} +.bordered-table tbody tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} +.bordered-table tbody tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} +table .span1 { + width: 20px; +} +table .span2 { + width: 60px; +} +table .span3 { + width: 100px; +} +table .span4 { + width: 140px; +} +table .span5 { + width: 180px; +} +table .span6 { + width: 220px; +} +table .span7 { + width: 260px; +} +table .span8 { + width: 300px; +} +table .span9 { + width: 340px; +} +table .span10 { + width: 380px; +} +table .span11 { + width: 420px; +} +table .span12 { + width: 460px; +} +table .span13 { + width: 500px; +} +table .span14 { + width: 540px; +} +table .span15 { + width: 580px; +} +table .span16 { + width: 620px; +} +.zebra-striped tbody tr:nth-child(odd) td, .zebra-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} +.zebra-striped tbody tr:hover td, .zebra-striped tbody tr:hover th { + background-color: #f5f5f5; +} +table .header { + cursor: pointer; +} +table .header:after { + content: ""; + float: right; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: #000 transparent; + visibility: hidden; +} +table .headerSortUp, table .headerSortDown { + background-color: rgba(141, 192, 219, 0.25); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); +} +table .header:hover:after { + visibility: visible; +} +table .headerSortDown:after, table .headerSortDown:hover:after { + visibility: visible; + filter: alpha(opacity=60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; +} +table .headerSortUp:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000; + visibility: visible; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + filter: alpha(opacity=60); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; +} +table .blue { + color: #049cdb; + border-bottom-color: #049cdb; +} +table .headerSortUp.blue, table .headerSortDown.blue { + background-color: #ade6fe; +} +table .green { + color: #46a546; + border-bottom-color: #46a546; +} +table .headerSortUp.green, table .headerSortDown.green { + background-color: #cdeacd; +} +table .red { + color: #9d261d; + border-bottom-color: #9d261d; +} +table .headerSortUp.red, table .headerSortDown.red { + background-color: #f4c8c5; +} +table .yellow { + color: #ffc40d; + border-bottom-color: #ffc40d; +} +table .headerSortUp.yellow, table .headerSortDown.yellow { + background-color: #fff6d9; +} +table .orange { + color: #f89406; + border-bottom-color: #f89406; +} +table .headerSortUp.orange, table .headerSortDown.orange { + background-color: #fee9cc; +} +table .purple { + color: #7a43b6; + border-bottom-color: #7a43b6; +} +table .headerSortUp.purple, table .headerSortDown.purple { + background-color: #e2d5f0; +} +/* Patterns.less + * Repeatable UI elements outside the base styles provided from the scaffolding + * ---------------------------------------------------------------------------- */ +.topbar { + height: 40px; + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 10000; + overflow: visible; +} +.topbar a { + color: #bfbfbf; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.topbar h3 a:hover, .topbar .brand:hover, .topbar ul .active > a { + background-color: #333; + background-color: rgba(255, 255, 255, 0.05); + color: #ffffff; + text-decoration: none; +} +.topbar h3 { + position: relative; +} +.topbar h3 a, .topbar .brand { + float: left; + display: block; + padding: 8px 0px 0px; + margin-left: -20px; + color: #ffffff; + font-size: 20px; + font-weight: 200; + line-height: 1; +} +.topbar p { + margin: 0; + line-height: 40px; +} +.topbar p a:hover { + background-color: transparent; + color: #ffffff; +} +.topbar form { + float: left; + margin: 5px 0 0 0; + position: relative; + filter: alpha(opacity=100); + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; +} +.topbar form.pull-right { + float: right; +} +.topbar input { + background-color: #444; + background-color: rgba(255, 255, 255, 0.3); + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: normal; + font-weight: 13px; + line-height: 1; + padding: 4px 9px; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + border: 1px solid #111; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +.topbar input:-moz-placeholder { + color: #e6e6e6; +} +.topbar input::-webkit-input-placeholder { + color: #e6e6e6; +} +.topbar input:hover { + background-color: #bfbfbf; + background-color: rgba(255, 255, 255, 0.5); + color: #ffffff; +} +.topbar input:focus, .topbar input.focused { + outline: 0; + background-color: #ffffff; + color: #404040; + text-shadow: 0 1px 0 #ffffff; + border: 0; + padding: 5px 10px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} +.topbar-inner, .topbar .fill { + background-color: #222; + background-color: #222222; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222)); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.topbar div > ul, .nav { + display: block; + float: left; + margin: 0 10px 0 0; + position: relative; + left: 0; +} +.topbar div > ul > li, .nav > li { + display: block; + float: left; +} +.topbar div > ul a, .nav a { + display: block; + float: none; + padding: 10px 10px 11px; + line-height: 19px; + text-decoration: none; +} +.topbar div > ul a:hover, .nav a:hover { + color: #ffffff; + text-decoration: none; +} +.topbar div > ul .active > a, .nav .active > a { + background-color: #222; + background-color: rgba(0, 0, 0, 0.5); +} +.topbar div > ul.secondary-nav, .nav.secondary-nav { + float: right; + margin-left: 10px; + margin-right: 0px; +} +.topbar div > ul.secondary-nav .menu-dropdown, +.nav.secondary-nav .menu-dropdown, +.topbar div > ul.secondary-nav .dropdown-menu, +.nav.secondary-nav .dropdown-menu { + right: 0; + border: 0; +} +.topbar div > ul a.menu:hover, +.nav a.menu:hover, +.topbar div > ul li.open .menu, +.nav li.open .menu, +.topbar div > ul .dropdown-toggle:hover, +.nav .dropdown-toggle:hover, +.topbar div > ul .dropdown.open .dropdown-toggle, +.nav .dropdown.open .dropdown-toggle { + background: #444; + background: rgba(255, 255, 255, 0.05); +} +.topbar div > ul .menu-dropdown, +.nav .menu-dropdown, +.topbar div > ul .dropdown-menu, +.nav .dropdown-menu { + background-color: #333; +} +.topbar div > ul .menu-dropdown a.menu, +.nav .menu-dropdown a.menu, +.topbar div > ul .dropdown-menu a.menu, +.nav .dropdown-menu a.menu, +.topbar div > ul .menu-dropdown .dropdown-toggle, +.nav .menu-dropdown .dropdown-toggle, +.topbar div > ul .dropdown-menu .dropdown-toggle, +.nav .dropdown-menu .dropdown-toggle { + color: #ffffff; +} +.topbar div > ul .menu-dropdown a.menu.open, +.nav .menu-dropdown a.menu.open, +.topbar div > ul .dropdown-menu a.menu.open, +.nav .dropdown-menu a.menu.open, +.topbar div > ul .menu-dropdown .dropdown-toggle.open, +.nav .menu-dropdown .dropdown-toggle.open, +.topbar div > ul .dropdown-menu .dropdown-toggle.open, +.nav .dropdown-menu .dropdown-toggle.open { + background: #444; + background: rgba(255, 255, 255, 0.05); +} +.topbar div > ul .menu-dropdown li a, +.nav .menu-dropdown li a, +.topbar div > ul .dropdown-menu li a, +.nav .dropdown-menu li a { + color: #999; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +.topbar div > ul .menu-dropdown li a:hover, +.nav .menu-dropdown li a:hover, +.topbar div > ul .dropdown-menu li a:hover, +.nav .dropdown-menu li a:hover { + background-color: #191919; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919)); + background-image: -moz-linear-gradient(top, #292929, #191919); + background-image: -ms-linear-gradient(top, #292929, #191919); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919)); + background-image: -webkit-linear-gradient(top, #292929, #191919); + background-image: -o-linear-gradient(top, #292929, #191919); + background-image: linear-gradient(top, #292929, #191919); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0); + color: #ffffff; +} +.topbar div > ul .menu-dropdown .active a, +.nav .menu-dropdown .active a, +.topbar div > ul .dropdown-menu .active a, +.nav .dropdown-menu .active a { + color: #ffffff; +} +.topbar div > ul .menu-dropdown .divider, +.nav .menu-dropdown .divider, +.topbar div > ul .dropdown-menu .divider, +.nav .dropdown-menu .divider { + background-color: #222; + border-color: #444; +} +.topbar ul .menu-dropdown li a, .topbar ul .dropdown-menu li a { + padding: 4px 15px; +} +li.menu, .dropdown { + position: relative; +} +a.menu:after, .dropdown-toggle:after { + width: 0; + height: 0; + display: inline-block; + content: "↓"; + text-indent: -99999px; + vertical-align: top; + margin-top: 8px; + margin-left: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #ffffff; + filter: alpha(opacity=50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; +} +.menu-dropdown, .dropdown-menu { + background-color: #ffffff; + float: left; + display: none; + position: absolute; + top: 40px; + z-index: 900; + min-width: 160px; + max-width: 220px; + _width: 160px; + margin-left: 0; + margin-right: 0; + padding: 6px 0; + zoom: 1; + border-color: #999; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 0 1px 1px; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.menu-dropdown li, .dropdown-menu li { + float: none; + display: block; + background-color: none; +} +.menu-dropdown .divider, .dropdown-menu .divider { + height: 1px; + margin: 5px 0; + overflow: hidden; + background-color: #eee; + border-bottom: 1px solid #ffffff; +} +.topbar .dropdown-menu a, .dropdown-menu a { + display: block; + padding: 4px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #808080; + text-shadow: 0 1px 0 #ffffff; +} +.topbar .dropdown-menu a:hover, +.dropdown-menu a:hover, +.topbar .dropdown-menu a.hover, +.dropdown-menu a.hover { + background-color: #dddddd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd)); + background-image: -moz-linear-gradient(top, #eeeeee, #dddddd); + background-image: -ms-linear-gradient(top, #eeeeee, #dddddd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd); + background-image: -o-linear-gradient(top, #eeeeee, #dddddd); + background-image: linear-gradient(top, #eeeeee, #dddddd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0); + color: #404040; + text-decoration: none; + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); +} +.open .menu, +.dropdown.open .menu, +.open .dropdown-toggle, +.dropdown.open .dropdown-toggle { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} +.open .menu-dropdown, +.dropdown.open .menu-dropdown, +.open .dropdown-menu, +.dropdown.open .dropdown-menu { + display: block; +} +.tabs, .pills { + margin: 0 0 18px; + padding: 0; + list-style: none; + zoom: 1; +} +.tabs:before, +.pills:before, +.tabs:after, +.pills:after { + display: table; + content: ""; + zoom: 1; +} +.tabs:after, .pills:after { + clear: both; +} +.tabs > li, .pills > li { + float: left; +} +.tabs > li > a, .pills > li > a { + display: block; +} +.tabs { + border-color: #ddd; + border-style: solid; + border-width: 0 0 1px; +} +.tabs > li { + position: relative; + margin-bottom: -1px; +} +.tabs > li > a { + padding: 0 15px; + margin-right: 2px; + line-height: 34px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.tabs > li > a:hover { + text-decoration: none; + background-color: #eee; + border-color: #eee #eee #ddd; +} +.tabs .active > a, .tabs .active > a:hover { + color: #808080; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.tabs .menu-dropdown, .tabs .dropdown-menu { + top: 35px; + border-width: 1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} +.tabs a.menu:after, .tabs .dropdown-toggle:after { + border-top-color: #999; + margin-top: 15px; + margin-left: 5px; +} +.tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle { + border-color: #999; +} +.tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after { + border-top-color: #555; +} +.pills a { + margin: 5px 3px 5px 0; + padding: 0 15px; + line-height: 30px; + text-shadow: 0 1px 1px #ffffff; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.pills a:hover { + color: #ffffff; + text-decoration: none; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + background-color: #00438a; +} +.pills .active a { + color: #ffffff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + background-color: #0069d6; +} +.pills-vertical > li { + float: none; +} +.tab-content > .tab-pane, +.pill-content > .pill-pane, +.tab-content > div, +.pill-content > div { + display: none; +} +.tab-content > .active, .pill-content > .active { + display: block; +} +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #f5f5f5; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #bfbfbf; +} +.breadcrumb .active a { + color: #404040; +} +.hero-unit { + background-color: #f5f5f5; + margin-bottom: 30px; + padding: 60px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; +} +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} +footer { + margin-top: 17px; + padding-top: 17px; + border-top: 1px solid #eee; +} +.page-header { + margin-bottom: 17px; + border-bottom: 1px solid #ddd; + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.page-header h1 { + margin-bottom: 8px; +} +.btn.danger, +.alert-message.danger, +.btn.danger:hover, +.alert-message.danger:hover, +.btn.error, +.alert-message.error, +.btn.error:hover, +.alert-message.error:hover, +.btn.success, +.alert-message.success, +.btn.success:hover, +.alert-message.success:hover, +.btn.info, +.alert-message.info, +.btn.info:hover, +.alert-message.info:hover { + color: #ffffff; +} +.btn .close, .alert-message .close { + font-family: Arial, sans-serif; + line-height: 18px; +} +.btn.danger, +.alert-message.danger, +.btn.error, +.alert-message.error { + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.btn.success, .alert-message.success { + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.btn.info, .alert-message.info { + background-color: #339bb9; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9)); + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #339bb9 #339bb9 #22697d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.btn { + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + -ms-transition: 0.1s linear all; + -o-transition: 0.1s linear all; + transition: 0.1s linear all; +} +.btn:hover { + background-position: 0 -15px; + color: #333; + text-decoration: none; +} +.btn:focus { + outline: 1px dotted #666; +} +.btn.primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.btn.active, .btn:active { + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.btn.disabled { + cursor: default; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=65); + -khtml-opacity: 0.65; + -moz-opacity: 0.65; + opacity: 0.65; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn[disabled] { + cursor: default; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=65); + -khtml-opacity: 0.65; + -moz-opacity: 0.65; + opacity: 0.65; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn.large { + font-size: 15px; + line-height: normal; + padding: 9px 14px 9px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.btn.small { + padding: 7px 9px 7px; + font-size: 11px; +} +:root .alert-message, :root .btn { + border-radius: 0 \0; +} +button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +.close { + float: right; + color: #000000; + font-size: 20px; + font-weight: bold; + line-height: 13.5px; + text-shadow: 0 1px 0 #ffffff; + filter: alpha(opacity=25); + -khtml-opacity: 0.25; + -moz-opacity: 0.25; + opacity: 0.25; +} +.close:hover { + color: #000000; + text-decoration: none; + filter: alpha(opacity=40); + -khtml-opacity: 0.4; + -moz-opacity: 0.4; + opacity: 0.4; +} +.alert-message { + position: relative; + padding: 7px 15px; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); +} +.alert-message .close { + margin-top: 1px; + *margin-top: 0; +} +.alert-message a { + font-weight: bold; + color: #404040; +} +.alert-message.danger p a, +.alert-message.error p a, +.alert-message.success p a, +.alert-message.info p a { + color: #ffffff; +} +.alert-message h5 { + line-height: 18px; +} +.alert-message p { + margin-bottom: 0; +} +.alert-message div { + margin-top: 5px; + margin-bottom: 2px; + line-height: 28px; +} +.alert-message .btn { + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} +.alert-message.block-message { + background-image: none; + background-color: #fdf5d9; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + padding: 14px; + border-color: #fceec1; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.alert-message.block-message ul, .alert-message.block-message p { + margin-right: 30px; +} +.alert-message.block-message ul { + margin-bottom: 0; +} +.alert-message.block-message li { + color: #404040; +} +.alert-message.block-message .alert-actions { + margin-top: 5px; +} +.alert-message.block-message.error, .alert-message.block-message.success, .alert-message.block-message.info { + color: #404040; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.alert-message.block-message.error { + background-color: #fddfde; + border-color: #fbc7c6; +} +.alert-message.block-message.success { + background-color: #d1eed1; + border-color: #bfe7bf; +} +.alert-message.block-message.info { + background-color: #ddf4fb; + border-color: #c6edf9; +} +.alert-message.block-message.danger p a, +.alert-message.block-message.error p a, +.alert-message.block-message.success p a, +.alert-message.block-message.info p a { + color: #404040; +} +.pagination { + height: 36px; + margin: 18px 0; +} +.pagination ul { + float: left; + margin: 0; + border: 1px solid #ddd; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.pagination li { + display: inline; +} +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + border-right: 1px solid; + border-right-color: #ddd; + border-right-color: rgba(0, 0, 0, 0.15); + *border-right-color: #ddd; + /* IE6-7 */ + + text-decoration: none; +} +.pagination a:hover, .pagination .active a { + background-color: #c7eefe; +} +.pagination .disabled a, .pagination .disabled a:hover { + background-color: transparent; + color: #bfbfbf; +} +.pagination .next a { + border: 0; +} +.well { + background-color: #f5f5f5; + margin-bottom: 20px; + padding: 19px; + min-height: 20px; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.modal-backdrop { + background-color: #000000; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, .modal-backdrop.fade.in { + filter: alpha(opacity=80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 11000; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.modal .close { + margin-top: 7px; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 50%; +} +.modal-header { + border-bottom: 1px solid #eee; + padding: 5px 15px; +} +.modal-body { + padding: 15px; +} +.modal-body form { + margin-bottom: 0; +} +.modal-footer { + background-color: #f5f5f5; + padding: 14px 15px 15px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + zoom: 1; + margin-bottom: 0; +} +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; + zoom: 1; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn { + float: right; + margin-left: 5px; +} +.modal .popover, .modal .twipsy { + z-index: 12000; +} +.twipsy { + display: block; + position: absolute; + visibility: visible; + padding: 5px; + font-size: 11px; + z-index: 1000; + filter: alpha(opacity=80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} +.twipsy.fade.in { + filter: alpha(opacity=80); + -khtml-opacity: 0.8; + -moz-opacity: 0.8; + opacity: 0.8; +} +.twipsy.above .twipsy-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.twipsy.left .twipsy-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.twipsy.below .twipsy-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.twipsy.right .twipsy-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.twipsy-inner { + padding: 3px 8px; + background-color: #000000; + color: white; + text-align: center; + max-width: 200px; + text-decoration: none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.twipsy-arrow { + position: absolute; + width: 0; + height: 0; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1000; + padding: 5px; + display: none; +} +.popover.above .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.popover.below .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} +.popover .inner { + background: #000000; + background: rgba(0, 0, 0, 0.8); + padding: 3px; + overflow: hidden; + width: 280px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} +.popover .title { + background-color: #f5f5f5; + padding: 9px 15px; + line-height: 1; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + border-bottom: 1px solid #eee; +} +.popover .content { + background-color: #ffffff; + padding: 14px; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.popover .content p, .popover .content ul, .popover .content ol { + margin-bottom: 0; +} +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} +.fade.in { + opacity: 1; +} +.label { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + white-space: nowrap; + background-color: #bfbfbf; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.label.important { + background-color: #c43c35; +} +.label.warning { + background-color: #f89406; +} +.label.success { + background-color: #46a546; +} +.label.notice { + background-color: #62cffc; +} +.media-grid { + margin-left: -20px; + margin-bottom: 0; + zoom: 1; +} +.media-grid:before, .media-grid:after { + display: table; + content: ""; + zoom: 1; +} +.media-grid:after { + clear: both; +} +.media-grid li { + display: inline; +} +.media-grid a { + float: left; + padding: 4px; + margin: 0 0 18px 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} +.media-grid a img { + display: block; +} +.media-grid a:hover { + border-color: #0069d6; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} diff --git a/_static/comment-bright.png b/_static/comment-bright.png new file mode 100644 index 00000000..551517b8 Binary files /dev/null and b/_static/comment-bright.png differ diff --git a/_static/comment-close.png b/_static/comment-close.png new file mode 100644 index 00000000..09b54be4 Binary files /dev/null and b/_static/comment-close.png differ diff --git a/_static/comment.png b/_static/comment.png new file mode 100644 index 00000000..92feb52b Binary files /dev/null and b/_static/comment.png differ diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..d4619fdf --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,247 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +} + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * small function to check if an array contains + * a given item. + */ +jQuery.contains = function(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == item) + return true; + } + return false; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/_static/down-pressed.png b/_static/down-pressed.png new file mode 100644 index 00000000..6f7ad782 Binary files /dev/null and b/_static/down-pressed.png differ diff --git a/_static/down.png b/_static/down.png new file mode 100644 index 00000000..3003a887 Binary files /dev/null and b/_static/down.png differ diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..d18082e3 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/fork_me_on_github.png b/_static/fork_me_on_github.png new file mode 100644 index 00000000..7dc1afca Binary files /dev/null and b/_static/fork_me_on_github.png differ diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 00000000..7c243080 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 00000000..da1c5620 Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 00000000..b3cb3742 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..d79caa15 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..663be4c9 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,560 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + +jQuery.makeSearchSummary = function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('
').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; +} + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, success: null, + dataType: "script", cache: true}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

').appendTo(this.out); + this.output = $('' in l: - lines.extend([(indent + '
  • ' + c + '
  • ') for c in newcontributors]) - lines.append(l) - incontrib = False - else: - if '
      ' in l: - lines.append(l) - #skip otherwise - else: - # if '
        ' in l: - # incoord = True - if '

        ' in l: - incontrib = True - lines.append(l) - - return '\n'.join(lines) - - -if __name__ == '__main__': - from docutils.core import publish_doctree - - dt = publish_doctree(get_astropy_credits()) - - contributors = extract_names_list(dt, 'Core Package Contributors') - - newhtml = process_html('team.html', contributors) - print('Replacing "team.html" with updated version. Be sure to "git diff ' - 'team.html" before committing to ensure no funny business happened.') - with open('team.html', 'wb') as f: - f.write(newhtml.encode('UTF-8')) diff --git a/help.html b/help.html deleted file mode 100755 index fd5ea77e..00000000 --- a/help.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - -Astropy | Get Help - - - - - - - -
        - - -
        -

        Getting Help with Astropy

        - -

        The best way to get help is usually by asking questions to the Astropy user - and development community. There are a number of active forums and you are - welcome to use whichever one you are the most comfortable with.

        - -
          -
        • Open Astronomy Discourse - This forum allows - questions to be tagged by topic, is searchable on Google, and displays - code snippets well. Please head over and ask (and answer) questions.
        • - -
        • Astropy Slack workspace (get an account) - This forum is primarily - focused on developing and maintaining the Astropy project, but the - #community-help channel is a good place for users to seek help from the - Astropy community.
        • - -
        • Astropy Users Email - List [astropy@python.org] - Post questions or start discussions about anything related to - Python programming applied to astronomy.
        • - -
        • Astropy Developers Email - List [astropy-dev@googlegroups.com] - Start discussions and ask questions about changing or adding - functionality to the astropy package. This is also the place where significant - announcements for contributors/developers are usually made. If you would like to - participate in discussion about how the Project is run, - please join this list. -
        • - -
        - -
        - - - -
        - - - diff --git a/history.html b/history.html deleted file mode 100644 index 7e02d5d0..00000000 --- a/history.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - -Astropy - - - - - - - - -
        - - -
        -

        A brief history of the Astropy Project

        - -

        Some of the earliest use of Python in astronomy was at the Space Telescope - Science Institute (STScI) with their release of PyRAF around 2000. That - release helped raise awareness of Python as a scripting language, leading to - its use at more institutions. STScI was also active in the development of - Python tools for science, including a pre-cursor to numpy and early versions - of matplotlib. By the early 2010s there were multiple independent efforts - by institutions and individuals to use Python for data analysis.

        - -

        The initial trigger for Astropy was a conversation - in 2011 on the astropy mailing list (which pre-dated The Astropy Project by - over a decade) on the topic of how many “general astronomy” packages were - being written in Python. This discussion thread led to the creation of a short-lived - wiki where over 100 participants voted in favor of a shared package to - combine the efforts of these different developers into a single space. This - demonstrated broad interest in such an effort. With that motivation and - charge in place, this same wiki was used to organize a planning meeting for - this effort.

        - -

        That planning meeting, in Fall 2011, was the formal beginning of the - Astropy Project and was held at the Harvard - Center for Astrophysics. The list - of attendees at that meeting underscores what has been essential to the - launch, growth, and continued development of Astropy: it was a mix of - graduate students, postdocs, scientists, and professional software developers. - The attendees with permanent positions were willing to contribute both code - and their time to the project; Space Telescope Science Institute - (STScI) additionally contributed substantial staff time to the project. The - early-career attendees had either already devoted substantial time to code - development, would do so over the ensuing years, or both.

        - -

        The foundation of Astropy’s subsequent success was the combination of - institutional resources, a deliberate effort to include and foster the growth - of a broad community of contributors, the rapid growth of GitHub and the - surrounding ecosystem of open source development tools, and a willingness of - early-career professionals to contribute code to an open community project. - The initial release for users of the core astropy package, version 0.2 on - February 19, 2013, was less than 18 months after the CfA meeting and already - contained many of the core subpackages that are part of the package today. - That was possible only because some of the code already existed in a form - that could be adapted to Astropy. Major pieces had been written by staff at - STScI that were contributed by the Institute to the project. There were also - large contributions from early participants who were graduate students and - postdocs.

        - -

        By the time of the first stable release in 2013, the number of contributors - to the code base was over 20, including several people who were not involved - in the initial meeting. Though most of the lines of code at that point had - been written by a handful of people, the effort they put into welcoming and - supporting new contributors was just as important and is not easily captured - in a single number. The project made an effort early on to provide prompt, - constructive, and welcoming feedback to new contributors. The promptness was - a key factor in encouraging early contributors and was possible in part - because STScI devoted substantial staff time to the project with the explicit - intent of growing the community of contributors.

        - -

        One of the Project’s first efforts to formally recruit early career - scientists was participation in - Google’s Summer of Code (GSoC) program. - That program provides participants with a stipend in exchange for doing - extensive work on open source projects during the northern hemisphere summer. - It was the first of several efforts to grow the community of contributors. - These efforts yielded a handful of very active long-term contributors to the - project whose cumulative work goes well beyond the initial code contributions - made by participants.

        - -

        Another critical element in the growth of the Astropy Project was the - Python in Astronomy conference series. The first Python in Astronomy - conference was held in 2015. The hope was that the conference would encourage - the development of Python packages in astronomy outside of the astropy core, - foster the adoption of Astropy in the broader community, and serve as an - introduction to contributing to open source software. Though it was not an - Astropy conference, many of the astropy core developers were attending. For - example, the initial Code of Conduct for the Astropy Project was written at - the conference and the “Python in Astronomy” Facebook group was started, - among other - activities.

        - -

        The intent from the first coordination meeting in 2011 was to put some - functionality into more specialized packages, called affiliated packages, - that were developed independent of the core project but followed the same - coding, testing and documentation conventions and often used the same - continuous integration (CI) infrastructure. The first affiliated packages - were created in 2011. That model has been quite successful: as of early 2022 - there are almost 50 affiliated packages (pre-APE 22). The use of common conventions across - the packages has eased the burden of maintaining those packages as the - project ecosystem grows.

        - -

        Deliberate community development has been essential to the success of the - Project and has included several aspects. Astropy was an early and - enthusiastic adopter of an explicit Code of Conduct. This served to formalize - the welcoming atmosphere established early in the project. Community presence - has included setting up social media spaces for Python in Astronomy, - workshops at AAS meetings, work on learning materials for Astropy and - development of the project’s web presence. The Facebook group “Python in - Astronomy’’ has been wildly successful with over 6400 members and nearly - daily postings. This success is in part because of careful moderation by - members of the project early in the list's history to keep conversations on topic, though community moderators have taken on more of those responsibilities as time has gone on. Workshops at AAS - meetings have helped several hundred astronomers adopt Python and astropy as - part of their workflow.

        - -

        The day-to-day effort of managing the Astropy codebase is unglamorous but - critical. Tasks include promptly labeling and triaging new issues, responding - to new pull requests, and watching for and fixing changes that break part of - the infrastructure. There have been times when that infrastructure has - shifted very rapidly, such as when Travis-CI - stopped hosting open source packages. Transitioning the entire ecosystem - to a new infrastructure required substantial effort by a number of people, - though it was facilitated primarily by a single individual. Indeed, much of - this day-to-day work has been done by a handful of people, many of whom are - in permanent positions at STScI and a few other institutions.

        - -

        The patterns at the beginning of the project have persisted throughout: it - is the combined effort of individuals and institutions that includes - scientists and software developers. It includes early-career individuals and - those in permanent positions.

        - -

        There are a few important changes to the project since its inception. One - is external funding from the Moore Foundation in 2019 and from NASA in 2022, - which provides monetary support for contributors at all career stages in - addition to funding for Project needs. Another is the establishment of a - formal governance structure - (APE 0 - adopted in 2021) that is open and responsive to community needs.

        - -

        Another development that was perhaps not envisioned at the start of the - project is some contributors choosing to make Astropy an essential part of - their career. Their involvement since the beginning of the project has - provided continuity to the project and represents taking a risk that - potential future employers may not scientifically value this software work, - regardless of its impact on astronomy as a whole.

        - -

        As of summer 2022, the success of the Project hinged on a number of factors, - including the willingness of institutions and individuals to contribute - extensive prior work to a community project, a deliberate effort to foster - new contributors, and an effort to create a welcoming community. It is - difficult to see how the project could have come so far absent any of these - factors or absent any one of the groups of contributors. Institutional - support and individual contributions has been inextricably linked.

        - -
        - - -
        - - - - diff --git a/images/Numfocus_stamp.png b/images/Numfocus_stamp.png deleted file mode 100644 index 31065310..00000000 Binary files a/images/Numfocus_stamp.png and /dev/null differ diff --git a/images/astropy_banner.svg b/images/astropy_banner.svg deleted file mode 100644 index a52c65ed..00000000 --- a/images/astropy_banner.svg +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/astropy_brandmark.png b/images/astropy_brandmark.png deleted file mode 100644 index bcff0ed6..00000000 Binary files a/images/astropy_brandmark.png and /dev/null differ diff --git a/images/astropy_doge.png b/images/astropy_doge.png deleted file mode 100644 index 26f4877e..00000000 Binary files a/images/astropy_doge.png and /dev/null differ diff --git a/images/astropy_meow.png b/images/astropy_meow.png deleted file mode 100644 index 5e386187..00000000 Binary files a/images/astropy_meow.png and /dev/null differ diff --git a/images/astropy_powered.png b/images/astropy_powered.png deleted file mode 100644 index 391d19f2..00000000 Binary files a/images/astropy_powered.png and /dev/null differ diff --git a/images/astropy_project_logo.png b/images/astropy_project_logo.png deleted file mode 100644 index 4f80191a..00000000 Binary files a/images/astropy_project_logo.png and /dev/null differ diff --git a/images/astropy_project_logo.svg b/images/astropy_project_logo.svg deleted file mode 100644 index 4ec8d6e5..00000000 --- a/images/astropy_project_logo.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/astropy_word.svg b/images/astropy_word.svg deleted file mode 100644 index 599fd90b..00000000 --- a/images/astropy_word.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/images/astropy_word_32.png b/images/astropy_word_32.png deleted file mode 100755 index 7125b632..00000000 Binary files a/images/astropy_word_32.png and /dev/null differ diff --git a/images/background.jpg b/images/background.jpg deleted file mode 100644 index 8e1e5753..00000000 Binary files a/images/background.jpg and /dev/null differ diff --git a/images/menu.png b/images/menu.png deleted file mode 100644 index 9a173ddb..00000000 Binary files a/images/menu.png and /dev/null differ diff --git a/images/menu.svg b/images/menu.svg deleted file mode 100755 index 11d8167f..00000000 --- a/images/menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/python-mark.png b/images/python-mark.png deleted file mode 100644 index a70f69b4..00000000 Binary files a/images/python-mark.png and /dev/null differ diff --git a/index.html b/index.html old mode 100755 new mode 100644 index 42fb9299..f95ac81e --- a/index.html +++ b/index.html @@ -1,199 +1,257 @@ + + + + + - - - - - + + + - - - + Astropy + + + + + + + + + + + + + + + + // Iterate everything in order. + $items.each(function (index, item) { + var $item = $(item), + tag = item.tagName.toLowerCase(), + pad = 10 + ((level - minLevel) * 10); - - + + + + + + + - var dogeContainer = document.getElementById("prenew"); - var dogeImg = document.createElement("img"); - dogeImg.onload=function() { - dogeContainer.appendChild(dogeImg); - } - dogeImg.src = 'images/astropy_doge.png'; - dogeImg.alt = 'wow so open very python'; - } + + + -}; + - - - - -
        - - -
        - Astropy: a community Python library for Astronomy -

        The Astropy Project is a community effort to develop a common core - package for Astronomy in Python and foster an ecosystem of interoperable - astronomy packages.

        -

        The Astropy community is committed to - supporting the community code of conduct.

        -

        Please remember to acknowledge and cite the use of Astropy!

        -
        - -
        - What's new in Astropy 7.1 -

        - -
        - -
        -

        Install Astropy

        - There are a number of ways of installing the latest release of the astropy core package. If you normally use pip to install Python packages, you can do: -

        pip install astropy[recommended] --upgrade
        - The astropy core package is also available in a number of other package managers, so be sure to check your preferred one! -

        Please see the astropy installation guide for important details. This guide covers creating a Python environment, installing with pip or conda, building from source, requirements, and testing.

        -
        - -
        -

        Learn Astropy

        -

        You can explore the functionality available in Astropy by checking out the Tutorials and Documentation.

        - Tutorials - Documentation -
        - -
        -

        Get Help

        -

        If you have any questions regarding using Astropy there are numerous channels for communication. Post to any one of several forums to get help from our active, helpful, and friendly community of users and developers. -

        - Get Help -
        - -
        -

        Report bugs and Contribute

        -

        If you encounter something you believe to be a mistake, error, or bug, the best way to get it addressed is to report it on the github issue tracker. If you aren't sure if something is a bug or not, or if you don't have a Github account, feel free to ask on one of the forums. If you believe you know how to fix the problem, please consider contributing!

        - Report issues - Contribute -
        - -
        -

        Support Astropy

        -

        If you use Astropy in your work, we would be grateful if you could include an acknowledgment in papers and/or - presentations. See Acknowledging & Citing Astropy for details.

        -

        You can also purchase apparel and trinkets from fashion.astropy.org, and - a portion of the profits go to support the project!

        -

        If you are interested in directly financially supporting Astropy (either one-time or recurring), you can do so - via our fiscal sponsor NumFOCUS:

        - Donate to Astropy -
        - -
        -

        Awards

        -

        -

        -

        -
        - -
        -

        Zenodo community

        -

        Documents, notes from previous meetings, and talks about Astropy are collected in a Zenodo community for long-term archiving. - Everyone is encouraged to submit talks, etc. and other relevant materials. -

        - Zenodo community -
        - -
        - - - -
        + + + + +
        +
        +
        + + + +
        +
        +
        + + Fork me on GitHub + +
        + +
        _images/astropy_banner_96.png +

        The Astropy Project is a community effort to develop a single core package for +Astronomy in Python and foster interoperability between Python astronomy packages. +Development is actively ongoing, with major packages such as PyFITS, +PyWCS, vo, and asciitable already merged in, and many other components +are under development. For more details, on the plan for the Astropy +project, you can read the original vision, or the +documentation overview.

        +

        The current stable version is Astropy 0.3. (Changelog)

        +

        Stay updated by following @astropy on Twitter, and sign up for the astropy mailing list, where you can ask python astronomy +questions of all sorts! If you want to get involved in Astropy development +efforts, or other more technical discussions of Astropy, join the +astropy-dev list.

        +

        Please note: If you use Astropy for work/research presented in a +publication, please read Acknowledging the use of Astropy.

        +
        +

        How to start working with Astropy

        +

        Take a look at the Getting Started +guide in the documentation for an initial look at how to work with Astropy.

        +
        +
        +

        Documentation

        +

        The documentation for the astropy core package is available at the +websites listed below. The first is for the most recent released +version. The second is for a version of the documentation that is +automatically updated any time a change is made to the +astropy source code repository.

        +
        +
        +

        Installing

        +

        Detailed up-to-date installation instructions are provided in the latest documentation, but +we have included a simplified version here.

        +

        Astropy requires Python 2.6, 2.7, 3.1, 3.2, or 3.3, and Numpy 1.5 or later. The +best way to install astropy is to use pip:

        +
        pip install astropy
        +
        +

        Or alternatively, you can download the source from the current version (Astropy 0.3), +and install the source code in that archive using:

        +
        python setup.py install
        +
        +

        You can check that astropy is correctly installed by starting up python or ipython, and importing astropy:

        +
        >>> import astropy
        +
        +
        +

        If you do not get any errors, the installation was successful!

        +
        +

        Note

        +

        If you want to install the latest developer version of Astropy, use:

        +
        git clone https://github.com/astropy/astropy.git
        +cd astropy
        +python setup.py install
        +
        +

        Be aware that the developer build requires Cython (in addition to Numpy).

        +
        +
        +
        +

        Getting help

        +

        If you want to discuss issues with other Astropy users, you can sign up +to the astropy mailing list. Alternatively, the astropy-dev list +is where you should go to discuss more technical aspects of Astropy.

        +
        +
        +

        Reporting issues

        +

        If you have come across something that you believe is a bug, please open a +ticket in the Astropy issue tracker, and we will look into it promptly!

        +
        +
        +

        Acknowledging the use of Astropy

        +
        +

        Publications

        +

        If you use Astropy for work/research presented in a publication (whether +directly, or as a dependency to another package), we would be grateful if you +could include the following acknowledgment:

        +

        This research made use of Astropy, a community-developed core Python package +for Astronomy (Astropy Collaboration, 2013).

        +

        where (Astropy Collaboration, 2013) is a citation to this paper (ADS - BibTeX).

        +

        If you wish, you can also include a link to http://www.astropy.org (if +the journal allows this) in addition to the above text.

        +
        +
        +

        Presentations

        +

        If you are giving a presentation or talk featuring work/research that makes use of +Astropy and would like to acknowledge Astropy, we suggest using this logo on your title slide:

        +_images/astropy_powered.png +

        The logo is also available with white text, +or the SVG originals can be obtained at the astropy-logo github repository.

        +
        +
        + - - - +
        +
        +

        Back to top

        +

        + © Copyright 2012, The Astropy Collaboration.
        + Created using Sphinx 1.1.3.
        +

        + +
        +
        + + \ No newline at end of file diff --git a/js/analytics.js b/js/analytics.js deleted file mode 100644 index eff5389a..00000000 --- a/js/analytics.js +++ /dev/null @@ -1,9 +0,0 @@ -(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ -(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), -m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) -})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - -ga('create', 'G-R0510VK4B6', 'auto'); -ga('require', 'displayfeatures'); -ga('require', 'linkid', 'linkid.js'); -ga('send', 'pageview'); diff --git a/js/functions.js b/js/functions.js deleted file mode 100755 index 78a1f0f5..00000000 --- a/js/functions.js +++ /dev/null @@ -1,433 +0,0 @@ -$( document ).ready(function(){ - - $('#responsive-menu-button').sidr({ - name: 'sidr-main', - source: '#navigation' - }); - - $("div#documentation span").click(function() { //When trigger is clicked... - - $("div#documentation ul").slideDown('fast').show(); //Drop down the subnav on click - - $(this).parent().hover(function() { - }, function(){ - $(this).parent().find("ul").slideUp('fast'); //When the mouse hovers out of the subnav, move it back up - }); - - - //Following events are applied to the trigger (Hover events for the trigger) - }).hover(function() { - $(this).addClass("subhover"); //On hover over, add class "subhover" - }, function(){ //On Hover Out - $(this).removeClass("subhover"); //On hover out, remove class "subhover" - }); - - $('#os-selector ul').each(function(){ - // For each set of tabs, we want to keep track of - // which tab is active and it's associated content - var hash, $active, $content, $links = $(this).find('a'); - - // If the location.hash matches one of the links, use that as the active tab. - // If no location.hash is given, use a tab determined by guess_os() - // If no match is found, use the first link as the initial active tab. - hash = (location.hash === "") ? '#' + guess_os() : location.hash; - $active = $($links.filter('[href="'+hash+'"]')[0] || $links[0]); - $active.addClass('active'); - $content = $($active.attr('href')); - - // Hide the remaining content - $links.not($active).each(function () { - $($(this).attr('href')).hide(); - }); - - // Bind the click event handler - $(this).on('click', 'a', function(e){ - // Make the old tab inactive. - $active.removeClass('active'); - $content.hide(); - - // Update the variables with the new link and content - $active = $(this); - $content = $($(this).attr('href')); - - // Make the tab active. - $active.addClass('active'); - $content.show(); - - // Prevent the anchor's default click action - e.preventDefault(); - }); - - // Now go through and find any links that are *not* in the above list - // but should point to a tab. - $('a').each(function(){ - //For every link check if it matches one of the tabs. - //If so, replace with "clicking" on the tab. - var $curra = $(this); - var currhref = $curra.attr('href'); - $links.each(function() { - var $currlia = $(this); - - if ((currhref == $currlia.attr('href'))) { - //Don't press the tab itself, that's above - if (! $curra.is($currlia)) { - $curra.on('click', function(e){ - //act like we clicked on the tab itself instead of this link - $currlia.click(); - // We let the default through here, because - // you probably want to jump to the revealed tab - e.preventDefault(); - }); - } - } - }); - }); - }); - - // makes permalink visible only when user moves cursor on headline, otherwise hidden - $("h1").hover(function() { - $(this).children("a").css("visibility", "visible"); - }, function() { - $(this).children("a").css("visibility", "hidden"); - }); - $("h2").hover(function() { - $(this).children("a").css("visibility", "visible"); - }, function() { - $(this).children("a").css("visibility", "hidden"); - }); - $("h3").hover(function() { - $(this).children("a").css("visibility", "visible"); - }, function() { - $(this).children("a").css("visibility", "hidden"); - }); - -}); // Document Ready - - -//Using jQuery is ok because it is needed by and bundled with sphinx - -//Quirk to note: the jQuery.getJSON function fails if you open this locally -//with Chrome, because Chrome thinks local JSON files are unsafe for some -//reason. Use basically any other modern browser, or it works fine if its -//actually on the web server even with chrome. - -function url_translator(urltext) { - if (urltext === undefined) { - return 'None'; - } else { - return '' + 'Website' + ''; - } -} - - -function repo_translator(urltext) { - if (urltext === undefined) { - return 'None'; - } else { - return '' + 'Repository' + ''; - } -} - - -function pypi_translator(pypiname) { - if (pypiname === undefined) { - return 'None'; - } else { - var urltext = 'https://pypi.python.org/pypi/' + pypiname; - return '' + 'PyPI' + ''; - } -} - - -function bool_translator(stable) { - if (stable) { - return 'Yes'; - } else { - return 'No'; - } -} - - -function ghuser_translator(fullname, ghname) { - if (fullname === undefined || ghname === undefined) { - return 'None'; - } else { - var urltext = 'https://github.com/' + ghname; - if (fullname === null) { - fullname = ghname; - } - return '' + fullname + ''; - } -} - - -var _email_regex_str = '[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'; -var _email_regex = new RegExp(_email_regex_str, 'i'); -var _email_with_name_regex = new RegExp('(.+)<(' + _email_regex_str + ')>', 'i'); - - -function maintainer_translator(maint, pkgnm) { - var url, match; - if (_email_with_name_regex.test(maint)) { - match = _email_with_name_regex.exec(maint); - url = 'mailto:' + match[2] + '?subject=Astropy%20affiliated%20package%20' + pkgnm; - return '' + match[1] + ''; - } else if (_email_regex.test(maint)) { - url = 'mailto:' + maint + '?subject=Astropy%20affiliated%20package%20' + pkgnm; - return '' + maint + ''; - } else { - return maint; - } -} - - -function createRolesTable(roles) { - //roles is an array of objects called "role" - var rows = ''; - roles.forEach(function (role) { - //role is an object containing information about each team role - //index marks current people - var index = 0; - - // for roles where there are no sub-roles, the people are defined - // at the top-level of the JSON role dict - for convenience below we create - // a virtual sub-role with no heading - if (!('sub-roles' in role)) { - role['sub-roles'] = [{'role': '', - 'people': role['people']}]; - } - - //creating each row by iterating over each person in a role - role["sub-roles"].forEach(function (subrole) { - //rowRole is displayed once for each role - rowRole = index == 0 ? '' + role["role"] + '' : ""; - - var rowSubRole = subrole['role']; - - if (subrole['people'][0] == "Unfilled") { - rowPeople = 'Unfilled'; - } else { - rowPeople = subrole['people'].join(', '); - } - - //generating rows - if (index == 0) { - rows += ''; - } else { - rows += ''; - } - - rows += '' + rowRole + '' + - '' + rowSubRole + '' + - '' + rowPeople + '' + - ''; - index++; - }); - }); - - $("#roles-table").append(rows); -} - - -function createRolesDescription(roles) { - //roles is an array of objects called "role" - var blocks = ""; - roles.forEach(function (role) { - //role is an object containing information about each team role - var list = ""; - //checking if role["description"] array isn't empty - if (role["responsibilities"] != null) { - - // If responsibilities is a dict, wrap inside a list so that all entries have a list - // dicts - if (role['responsibilities'].constructor == Object) { - role['responsibilities'] = [role['responsibilities']]; - } - - //console.log(role['responsibilities']); - - blocks += '
        ' + - '

        ' + role["role-head"] + '

        '; - - index = 0; - - role['responsibilities'].forEach(function (resp) { - - //console.log(resp); - - detail_list = ''; - resp["details"].forEach(function (detail) { - detail_list += '
      • ' + detail + '
      • '; - }); - - if ('subrole-head' in resp) { - if (index > 0) { - blocks += '
        '; - } - blocks += '' + resp["subrole-head"] + ''; - } - blocks += '

        ' + resp["description"] + '

        ' + - '
          ' + detail_list + '
        '; - - index += 1; - - }) - - } - }); - $("#roles-description").append(blocks); -} - - -function populateRoles(data, tstat, xhr) { - //creating roles table from json data - createRolesTable(data); - //creating roles lists from json data - createRolesDescription(data); -} - - -function populateTables(data, tstat, xhr) { - populatePackageTable('coordinated', filter_pkg_data(data, "coordinated", true)); - populatePackageTable('affiliated', filter_pkg_data(data, "coordinated", false)); -} - - -function filter_pkg_data(data, field, value) { - if (data === null) { - return null; - } - var pkgs = data.packages; - var filtered_data = []; - - for (i=0; i nmarr[b] ? 1 : 0; }); - - var pkgi; - var namerow, descrow, shieldrow, maintrow; - var nmcell, pypicell, urlcell, repocell; - var desccell, maintcell, shieldcell; - - for (i=0; i" + " " - } - } - } - return shield_string -} - - -function guess_os() { - var OSName="source"; - if (navigator.appVersion.indexOf("Win")!=-1) OSName="windows"; - if (navigator.appVersion.indexOf("Mac")!=-1) OSName="osx"; - if (navigator.appVersion.indexOf("Linux")!=-1) OSName="linux"; - return OSName; -} diff --git a/js/jquery.sidr.min.js b/js/jquery.sidr.min.js deleted file mode 100755 index c0e3deb4..00000000 --- a/js/jquery.sidr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! Sidr - v1.2.1 - 2013-11-06 - * https://github.com/artberri/sidr - * Copyright (c) 2013 Alberto Varela; Licensed MIT */ -(function(e){var t=!1,i=!1,n={isUrl:function(e){var t=RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");return t.test(e)?!0:!1},loadContent:function(e,t){e.html(t)},addPrefix:function(e){var t=e.attr("id"),i=e.attr("class");"string"==typeof t&&""!==t&&e.attr("id",t.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-id-$1")),"string"==typeof i&&""!==i&&"sidr-inner"!==i&&e.attr("class",i.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-class-$1")),e.removeAttr("style")},execute:function(n,s,a){"function"==typeof s?(a=s,s="sidr"):s||(s="sidr");var r,d,l,c=e("#"+s),u=e(c.data("body")),f=e("html"),p=c.outerWidth(!0),g=c.data("speed"),h=c.data("side"),m=c.data("displace"),v=c.data("onOpen"),y=c.data("onClose"),x="sidr"===s?"sidr-open":"sidr-open "+s+"-open";if("open"===n||"toggle"===n&&!c.is(":visible")){if(c.is(":visible")||t)return;if(i!==!1)return o.close(i,function(){o.open(s)}),void 0;t=!0,"left"===h?(r={left:p+"px"},d={left:"0px"}):(r={right:p+"px"},d={right:"0px"}),u.is("body")&&(l=f.scrollTop(),f.css("overflow-x","hidden").scrollTop(l)),m?u.addClass("sidr-animating").css({width:u.width(),position:"absolute"}).animate(r,g,function(){e(this).addClass(x)}):setTimeout(function(){e(this).addClass(x)},g),c.css("display","block").animate(d,g,function(){t=!1,i=s,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),v()}else{if(!c.is(":visible")||t)return;t=!0,"left"===h?(r={left:0},d={left:"-"+p+"px"}):(r={right:0},d={right:"-"+p+"px"}),u.is("body")&&(l=f.scrollTop(),f.removeAttr("style").scrollTop(l)),u.addClass("sidr-animating").animate(r,g).removeClass(x),c.animate(d,g,function(){c.removeAttr("style").hide(),u.removeAttr("style"),e("html").removeAttr("style"),t=!1,i=!1,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),y()}}},o={open:function(e,t){n.execute("open",e,t)},close:function(e,t){n.execute("close",e,t)},toggle:function(e,t){n.execute("toggle",e,t)},toogle:function(e,t){n.execute("toggle",e,t)}};e.sidr=function(t){return o[t]?o[t].apply(this,Array.prototype.slice.call(arguments,1)):"function"!=typeof t&&"string"!=typeof t&&t?(e.error("Method "+t+" does not exist on jQuery.sidr"),void 0):o.toggle.apply(this,arguments)},e.fn.sidr=function(t){var i=e.extend({name:"sidr",speed:200,side:"left",source:null,renaming:!0,body:"body",displace:!0,onOpen:function(){},onClose:function(){}},t),s=i.name,a=e("#"+s);if(0===a.length&&(a=e("
        ").attr("id",s).appendTo(e("body"))),a.addClass("sidr").addClass(i.side).data({speed:i.speed,side:i.side,body:i.body,displace:i.displace,onOpen:i.onOpen,onClose:i.onClose}),"function"==typeof i.source){var r=i.source(s);n.loadContent(a,r)}else if("string"==typeof i.source&&n.isUrl(i.source))e.get(i.source,function(e){n.loadContent(a,e)});else if("string"==typeof i.source){var d="",l=i.source.split(",");if(e.each(l,function(t,i){d+='
        '+e(i).html()+"
        "}),i.renaming){var c=e("
        ").html(d);c.find("*").each(function(t,i){var o=e(i);n.addPrefix(o)}),d=c.html()}n.loadContent(a,d)}else null!==i.source&&e.error("Invalid Sidr Source");return this.each(function(){var t=e(this),i=t.data("sidr");i||(t.data("sidr",s),"ontouchstart"in document.documentElement?(t.bind("touchstart",function(e){e.originalEvent.touches[0],this.touched=e.timeStamp}),t.bind("touchend",function(e){var t=Math.abs(e.timeStamp-this.touched);200>t&&(e.preventDefault(),o.toggle(s))})):t.click(function(e){e.preventDefault(),o.toggle(s)}))})}})(jQuery); \ No newline at end of file diff --git a/js/yaml_parse_bundle.js b/js/yaml_parse_bundle.js deleted file mode 100644 index bce10c7a..00000000 --- a/js/yaml_parse_bundle.js +++ /dev/null @@ -1,138 +0,0 @@ -(()=>{var an=Object.defineProperty;var as=(s,e)=>{for(var t in e)an(s,t,{get:e[t],enumerable:!0})};var ls={};as(ls,{Alias:()=>ee,CST:()=>ns,Composer:()=>be,Document:()=>se,Lexer:()=>Me,LineCounter:()=>Be,Pair:()=>C,Parser:()=>we,Scalar:()=>y,Schema:()=>Ce,YAMLError:()=>$e,YAMLMap:()=>$,YAMLParseError:()=>q,YAMLSeq:()=>M,YAMLWarning:()=>_e,isAlias:()=>F,isCollection:()=>T,isDocument:()=>X,isMap:()=>R,isNode:()=>L,isPair:()=>A,isScalar:()=>O,isSeq:()=>U,parse:()=>rn,parseAllDocuments:()=>nn,parseDocument:()=>os,stringify:()=>on,visit:()=>V,visitAsync:()=>je});var et=Symbol.for("yaml.alias"),tt=Symbol.for("yaml.document"),Q=Symbol.for("yaml.map"),Mt=Symbol.for("yaml.pair"),x=Symbol.for("yaml.scalar"),re=Symbol.for("yaml.seq"),j=Symbol.for("yaml.node.type"),F=s=>!!s&&typeof s=="object"&&s[j]===et,X=s=>!!s&&typeof s=="object"&&s[j]===tt,R=s=>!!s&&typeof s=="object"&&s[j]===Q,A=s=>!!s&&typeof s=="object"&&s[j]===Mt,O=s=>!!s&&typeof s=="object"&&s[j]===x,U=s=>!!s&&typeof s=="object"&&s[j]===re;function T(s){if(s&&typeof s=="object")switch(s[j]){case Q:case re:return!0}return!1}function L(s){if(s&&typeof s=="object")switch(s[j]){case et:case Q:case x:case re:return!0}return!1}var cs=s=>(O(s)||T(s))&&!!s.anchor;var K=Symbol("break visit"),fs=Symbol("skip children"),z=Symbol("remove node");function V(s,e){let t=us(e);X(s)?ke(null,s.contents,t,Object.freeze([s]))===z&&(s.contents=null):ke(null,s,t,Object.freeze([]))}V.BREAK=K;V.SKIP=fs;V.REMOVE=z;function ke(s,e,t,n){let i=hs(s,e,t,n);if(L(i)||A(i))return ps(s,n,i),ke(s,i,t,n);if(typeof i!="symbol"){if(T(e)){n=Object.freeze(n.concat(e));for(let r=0;rs.replace(/[!,[\]{}]/g,e=>cn[e]),Z=class s{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},s.defaultYaml,e),this.tags=Object.assign({},s.defaultTags,t)}clone(){let e=new s(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new s(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:s.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},s.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:s.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},s.defaultTags),this.atNextDocument=!1);let n=e.trim().split(/[ \t]+/),i=n.shift();switch(i){case"%TAG":{if(n.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;let[r,o]=n;return this.tags[r]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[r]=n;if(r==="1.1"||r==="1.2")return this.yaml.version=r,!0;{let o=/^\d+\.\d+$/.test(r);return t(6,`Unsupported YAML version ${r}`,o),!1}}default:return t(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,n,i]=e.match(/^(.*!)([^!]*)$/s);i||t(`The ${e} tag has no suffix`);let r=this.tags[n];if(r)try{return r+decodeURIComponent(i)}catch(o){return t(String(o)),null}return n==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+fn(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags),i;if(e&&n.length>0&&L(e.contents)){let r={};V(e.contents,(o,l)=>{L(l)&&l.tag&&(r[l.tag]=!0)}),i=Object.keys(r)}else i=[];for(let[r,o]of n)r==="!!"&&o==="tag:yaml.org,2002:"||(!e||i.some(l=>l.startsWith(o)))&&t.push(`%TAG ${r} ${o}`);return t.join(` -`)}};Z.defaultYaml={explicit:!1,version:"1.2"};Z.defaultTags={"!!":"tag:yaml.org,2002:"};function st(s){if(/[\x00-\x19\s,[\]{}]/.test(s)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(s)}`;throw new Error(t)}return!0}function Bt(s){let e=new Set;return V(s,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function Dt(s,e){for(let t=1;;++t){let n=`${s}${t}`;if(!e.has(n))return n}}function ms(s,e){let t=[],n=new Map,i=null;return{onAnchor:r=>{t.push(r),i||(i=Bt(s));let o=Dt(e,i);return i.add(o),o},setAnchors:()=>{for(let r of t){let o=n.get(r);if(typeof o=="object"&&o.anchor&&(O(o.node)||T(o.node)))o.node.anchor=o.anchor;else{let l=new Error("Failed to resolve repeated object (this should not happen)");throw l.source=r,l}}},sourceObjects:n}}function ce(s,e,t,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let i=0,r=n.length;i_(n,String(i),t));if(s&&typeof s.toJSON=="function"){if(!t||!cs(s))return s.toJSON(e,t);let n={aliasCount:0,count:1,res:void 0};t.anchors.set(s,n),t.onCreate=r=>{n.res=r,delete t.onCreate};let i=s.toJSON(e,t);return t.onCreate&&t.onCreate(i),i}return typeof s=="bigint"&&!t?.keep?Number(s):s}var fe=class{constructor(e){Object.defineProperty(this,j,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:i,reviver:r}={}){if(!X(e))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},l=_(this,"",o);if(typeof i=="function")for(let{count:a,res:c}of o.anchors.values())i(c,a);return typeof r=="function"?ce(r,{"":l},"",l):l}};var ee=class extends fe{constructor(e){super(et),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return V(e,{Node:(n,i)=>{if(i===this)return V.BREAK;i.anchor===this.source&&(t=i)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:i,maxAliasCount:r}=t,o=this.resolve(i);if(!o){let a=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(a)}let l=n.get(o);if(l||(_(o,null,t),l=n.get(o)),!l||l.res===void 0){let a="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(a)}if(r>=0&&(l.count+=1,l.aliasCount===0&&(l.aliasCount=nt(i,o,n)),l.count*l.aliasCount>r)){let a="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(a)}return l.res}toString(e,t,n){let i=`*${this.source}`;if(e){if(st(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let r=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(r)}if(e.implicitKey)return`${i} `}return i}};function nt(s,e,t){if(F(e)){let n=e.resolve(s),i=t&&n&&t.get(n);return i?i.count*i.aliasCount:0}else if(T(e)){let n=0;for(let i of e.items){let r=nt(s,i,t);r>n&&(n=r)}return n}else if(A(e)){let n=nt(s,e.key,t),i=nt(s,e.value,t);return Math.max(n,i)}return 1}var it=s=>!s||typeof s!="function"&&typeof s!="object",y=class extends fe{constructor(e){super(x),this.value=e}toJSON(e,t){return t?.keep?this.value:_(this.value,e,t)}toString(){return String(this.value)}};y.BLOCK_FOLDED="BLOCK_FOLDED";y.BLOCK_LITERAL="BLOCK_LITERAL";y.PLAIN="PLAIN";y.QUOTE_DOUBLE="QUOTE_DOUBLE";y.QUOTE_SINGLE="QUOTE_SINGLE";var un="tag:yaml.org,2002:";function hn(s,e,t){if(e){let n=t.filter(r=>r.tag===e),i=n.find(r=>!r.format)??n[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return t.find(n=>n.identify?.(s)&&!n.format)}function oe(s,e,t){if(X(s)&&(s=s.contents),L(s))return s;if(A(s)){let f=t.schema[Q].createNode?.(t.schema,null,t);return f.items.push(s),f}(s instanceof String||s instanceof Number||s instanceof Boolean||typeof BigInt<"u"&&s instanceof BigInt)&&(s=s.valueOf());let{aliasDuplicateObjects:n,onAnchor:i,onTagObj:r,schema:o,sourceObjects:l}=t,a;if(n&&s&&typeof s=="object"){if(a=l.get(s),a)return a.anchor||(a.anchor=i(s)),new ee(a.anchor);a={anchor:null,node:null},l.set(s,a)}e?.startsWith("!!")&&(e=un+e.slice(2));let c=hn(s,e,o.tags);if(!c){if(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),!s||typeof s!="object"){let f=new y(s);return a&&(a.node=f),f}c=s instanceof Map?o[Q]:Symbol.iterator in Object(s)?o[re]:o[Q]}r&&(r(c),delete t.onTagObj);let p=c?.createNode?c.createNode(t.schema,s,t):typeof c?.nodeClass?.from=="function"?c.nodeClass.from(t.schema,s,t):new y(s);return e?p.tag=e:c.default||(p.tag=c.tag),a&&(a.node=p),p}function Ke(s,e,t){let n=t;for(let i=e.length-1;i>=0;--i){let r=e[i];if(typeof r=="number"&&Number.isInteger(r)&&r>=0){let o=[];o[r]=n,n=o}else n=new Map([[r,n]])}return oe(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:s,sourceObjects:new Map})}var Oe=s=>s==null||typeof s=="object"&&!!s[Symbol.iterator]().next().done,ge=class extends fe{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(n=>L(n)||A(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Oe(e))this.add(t);else{let[n,...i]=e,r=this.get(n,!0);if(T(r))r.addIn(i,t);else if(r===void 0&&this.schema)this.set(n,Ke(this.schema,i,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let i=this.get(t,!0);if(T(i))return i.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...i]=e,r=this.get(n,!0);return i.length===0?!t&&O(r)?r.value:r:T(r)?r.getIn(i,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!A(t))return!1;let n=t.value;return n==null||e&&O(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let i=this.get(t,!0);return T(i)?i.hasIn(n):!1}setIn(e,t){let[n,...i]=e;if(i.length===0)this.set(n,t);else{let r=this.get(n,!0);if(T(r))r.setIn(i,t);else if(r===void 0&&this.schema)this.set(n,Ke(this.schema,i,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}};ge.maxFlowStringSingleLineLength=60;var ds=s=>s.replace(/^(?!$)(?: $)?/gm,"#");function Y(s,e){return/^\n+$/.test(s)?s.substring(1):e?s.replace(/^(?! *$)/gm,e):s}var te=(s,e,t)=>s.endsWith(` -`)?Y(t,e):t.includes(` -`)?` -`+Y(t,e):(s.endsWith(" ")?"":" ")+t;var jt="flow",rt="block",qe="quoted";function xe(s,e,t="flow",{indentAtStart:n,lineWidth:i=80,minContentWidth:r=20,onFold:o,onOverflow:l}={}){if(!i||i<0)return s;let a=Math.max(1+r,1+i-e.length);if(s.length<=a)return s;let c=[],p={},f=i-e.length;typeof n=="number"&&(n>i-Math.max(2,r)?c.push(0):f=i-n);let h,d,b=!1,u=-1,m=-1,S=-1;t===rt&&(u=gs(s,u,e.length),u!==-1&&(f=u+a));for(let k;k=s[u+=1];){if(t===qe&&k==="\\"){switch(m=u,s[u+1]){case"x":u+=3;break;case"u":u+=5;break;case"U":u+=9;break;default:u+=1}S=u}if(k===` -`)t===rt&&(u=gs(s,u,e.length)),f=u+e.length+a,h=void 0;else{if(k===" "&&d&&d!==" "&&d!==` -`&&d!==" "){let N=s[u+1];N&&N!==" "&&N!==` -`&&N!==" "&&(h=u)}if(u>=f)if(h)c.push(h),f=h+a,h=void 0;else if(t===qe){for(;d===" "||d===" ";)d=k,k=s[u+=1],b=!0;let N=u>S+1?u-2:m-1;if(p[N])return s;c.push(N),p[N]=!0,f=N+a,h=void 0}else b=!0}d=k}if(b&&l&&l(),c.length===0)return s;o&&o();let w=s.slice(0,c[0]);for(let k=0;k({indentAtStart:e?s.indent.length:s.indentAtStart,lineWidth:s.options.lineWidth,minContentWidth:s.options.minContentWidth}),at=s=>/^(%|---|\.\.\.)/m.test(s);function pn(s,e,t){if(!e||e<0)return!1;let n=e-t,i=s.length;if(i<=n)return!1;for(let r=0,o=0;rn)return!0;if(o=r+1,i-o<=n)return!1}return!0}function Fe(s,e){let t=JSON.stringify(s);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:n}=e,i=e.options.doubleQuotedMinMultiLineLength,r=e.indent||(at(s)?" ":""),o="",l=0;for(let a=0,c=t[a];c;c=t[++a])if(c===" "&&t[a+1]==="\\"&&t[a+2]==="n"&&(o+=t.slice(l,a)+"\\ ",a+=1,l=a,c="\\"),c==="\\")switch(t[a+1]){case"u":{o+=t.slice(l,a);let p=t.substr(a+2,4);switch(p){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:p.substr(0,2)==="00"?o+="\\x"+p.substr(2):o+=t.substr(a,6)}a+=5,l=a+1}break;case"n":if(n||t[a+2]==='"'||t.length -`;let f,h;for(h=t.length;h>0;--h){let g=t[h-1];if(g!==` -`&&g!==" "&&g!==" ")break}let d=t.substring(h),b=d.indexOf(` -`);b===-1?f="-":t===d||b!==d.length-1?(f="+",r&&r()):f="",d&&(t=t.slice(0,-d.length),d[d.length-1]===` -`&&(d=d.slice(0,-1)),d=d.replace(qt,`$&${c}`));let u=!1,m,S=-1;for(m=0;m")+(u?c?"2":"1":"")+f;if(s&&(N+=" "+l(s.replace(/ ?[\r\n]+/g," ")),i&&i()),p)return t=t.replace(/\n+/g,`$&${c}`),`${N} -${c}${w}${t}${d}`;t=t.replace(/\n+/g,` -$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`);let E=xe(`${w}${t}${d}`,c,rt,lt(n,!0));return`${N} -${c}${E}`}function mn(s,e,t,n){let{type:i,value:r}=s,{actualString:o,implicitKey:l,indent:a,indentStep:c,inFlow:p}=e;if(l&&r.includes(` -`)||p&&/[[\]{},]/.test(r))return Ae(r,e);if(!r||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(r))return l||p||!r.includes(` -`)?Ae(r,e):ot(s,e,t,n);if(!l&&!p&&i!==y.PLAIN&&r.includes(` -`))return ot(s,e,t,n);if(at(r)){if(a==="")return e.forceBlockIndent=!0,ot(s,e,t,n);if(l&&a===c)return Ae(r,e)}let f=r.replace(/\n+/g,`$& -${a}`);if(o){let h=u=>u.default&&u.tag!=="tag:yaml.org,2002:str"&&u.test?.test(f),{compat:d,tags:b}=e.doc.schema;if(b.some(h)||d?.some(h))return Ae(r,e)}return l?f:xe(f,a,jt,lt(e,!1))}function le(s,e,t,n){let{implicitKey:i,inFlow:r}=e,o=typeof s.value=="string"?s:Object.assign({},s,{value:String(s.value)}),{type:l}=s;l!==y.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(l=y.QUOTE_DOUBLE);let a=p=>{switch(p){case y.BLOCK_FOLDED:case y.BLOCK_LITERAL:return i||r?Ae(o.value,e):ot(o,e,t,n);case y.QUOTE_DOUBLE:return Fe(o.value,e);case y.QUOTE_SINGLE:return Kt(o.value,e);case y.PLAIN:return mn(o,e,t,n);default:return null}},c=a(l);if(c===null){let{defaultKeyType:p,defaultStringType:f}=e.options,h=i&&p||f;if(c=a(h),c===null)throw new Error(`Unsupported default string type ${h}`)}return c}function ct(s,e){let t=Object.assign({blockQuote:!0,commentString:ds,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},s.schema.toStringOptions,e),n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:s,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function dn(s,e){if(e.tag){let i=s.filter(r=>r.tag===e.tag);if(i.length>0)return i.find(r=>r.format===e.format)??i[0]}let t,n;if(O(e)){n=e.value;let i=s.filter(r=>r.identify?.(n));t=i.find(r=>r.format===e.format)??i.find(r=>!r.format)}else n=e,t=s.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!t){let i=n?.constructor?.name??typeof n;throw new Error(`Tag not resolved for ${i} value`)}return t}function gn(s,e,{anchors:t,doc:n}){if(!n.directives)return"";let i=[],r=(O(s)||T(s))&&s.anchor;r&&st(r)&&(t.add(r),i.push(`&${r}`));let o=s.tag?s.tag:e.default?null:e.tag;return o&&i.push(n.directives.tagString(o)),i.join(" ")}function ae(s,e,t,n){if(A(s))return s.toString(e,t,n);if(F(s)){if(e.doc.directives)return s.toString(e);if(e.resolvedAliases?.has(s))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(s):e.resolvedAliases=new Set([s]),s=s.resolve(e.doc)}let i,r=L(s)?s:e.doc.createNode(s,{onTagObj:a=>i=a});i||(i=dn(e.doc.schema.tags,r));let o=gn(r,i,e);o.length>0&&(e.indentAtStart=(e.indentAtStart??0)+o.length+1);let l=typeof i.stringify=="function"?i.stringify(r,e,t,n):O(r)?le(r,e,t,n):r.toString(e,t,n);return o?O(r)||l[0]==="{"||l[0]==="["?`${o} ${l}`:`${o} -${e.indent}${l}`:l}function ys({key:s,value:e},t,n,i){let{allNullValues:r,doc:o,indent:l,indentStep:a,options:{commentString:c,indentSeq:p,simpleKeys:f}}=t,h=L(s)&&s.comment||null;if(f){if(h)throw new Error("With simple keys, key nodes cannot have comments");if(T(s)){let I="With simple keys, collection cannot be used as a key value";throw new Error(I)}}let d=!f&&(!s||h&&e==null&&!t.inFlow||T(s)||(O(s)?s.type===y.BLOCK_FOLDED||s.type===y.BLOCK_LITERAL:typeof s=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!d&&(f||!r),indent:l+a});let b=!1,u=!1,m=ae(s,t,()=>b=!0,()=>u=!0);if(!d&&!t.inFlow&&m.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");d=!0}if(t.inFlow){if(r||e==null)return b&&n&&n(),m===""?"?":d?`? ${m}`:m}else if(r&&!f||e==null&&d)return m=`? ${m}`,h&&!b?m+=te(m,t.indent,c(h)):u&&i&&i(),m;b&&(h=null),d?(h&&(m+=te(m,t.indent,c(h))),m=`? ${m} -${l}:`):(m=`${m}:`,h&&(m+=te(m,t.indent,c(h))));let S,w,k;L(e)?(S=!!e.spaceBefore,w=e.commentBefore,k=e.comment):(S=!1,w=null,k=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!d&&!h&&O(e)&&(t.indentAtStart=m.length+1),u=!1,!p&&a.length>=2&&!t.inFlow&&!d&&U(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let N=!1,E=ae(e,t,()=>N=!0,()=>u=!0),g=" ";if(h||S||w){if(g=S?` -`:"",w){let I=c(w);g+=` -${Y(I,t.indent)}`}E===""&&!t.inFlow?g===` -`&&(g=` - -`):g+=` -${t.indent}`}else if(!d&&T(e)){let I=E[0],v=E.indexOf(` -`),B=v!==-1,de=t.inFlow??e.flow??e.items.length===0;if(B||!de){let Se=!1;if(B&&(I==="&"||I==="!")){let P=E.indexOf(" ");I==="&"&&P!==-1&&Ps===bs||O(s)&&s.value===bs&&(!s.type||s.type===y.PLAIN);function xt(s,e,t){let n=s&&F(t)?t.resolve(s.doc):t;if(!R(n))throw new Error("Merge sources must be maps or map aliases");let i=n.toJSON(null,s,Map);for(let[r,o]of i)e instanceof Map?e.has(r)||e.set(r,o):e instanceof Set?e.add(r):Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function bn(s,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(L(s)&&t?.doc){let n=ct(t.doc,{});n.anchors=new Set;for(let r of t.anchors.keys())n.anchors.add(r.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=s.toString(n);if(!t.mapKeyWarned){let r=JSON.stringify(i);r.length>40&&(r=r.substring(0,36)+'..."'),ft(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${r}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return i}return JSON.stringify(e)}function Ee(s,e,t){let n=oe(s,void 0,t),i=oe(e,void 0,t);return new C(n,i)}var C=class s{constructor(e,t=null){Object.defineProperty(this,j,{value:Mt}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return L(t)&&(t=t.clone(e)),L(n)&&(n=n.clone(e)),new s(t,n)}toJSON(e,t){let n=t?.mapAsMap?new Map:{};return ut(t,n,this)}toString(e,t,n){return e?.doc?ys(this,e,t,n):JSON.stringify(this)}};function pt(s,e,t){return(e.inFlow??s.flow?Sn:wn)(s,e,t)}function wn({comment:s,items:e},t,{blockItemPrefix:n,flowChars:i,itemIndent:r,onChompKeep:o,onComment:l}){let{indent:a,options:{commentString:c}}=t,p=Object.assign({},t,{indent:r,type:null}),f=!1,h=[];for(let b=0;bm=null,()=>f=!0);m&&(S+=te(S,r,c(m))),f&&m&&(f=!1),h.push(n+S)}let d;if(h.length===0)d=i.start+i.end;else{d=h[0];for(let b=1;bm=null);bp||S.includes(` -`))&&(c=!0),f.push(S),p=f.length}let{start:h,end:d}=t;if(f.length===0)return h+d;if(!c){let b=f.reduce((u,m)=>u+m.length+2,2);c=e.options.lineWidth>0&&b>e.options.lineWidth}if(c){let b=h;for(let u of f)b+=u?` -${r}${i}${u}`:` -`;return`${b} -${i}${d}`}else return`${h}${o}${f.join(" ")}${o}${d}`}function ht({indent:s,options:{commentString:e}},t,n,i){if(n&&i&&(n=n.replace(/^\n+/,"")),n){let r=Y(e(n),s);t.push(r.trimStart())}}function ue(s,e){let t=O(e)?e.value:e;for(let n of s)if(A(n)&&(n.key===e||n.key===t||O(n.key)&&n.key.value===t))return n}var $=class extends ge{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Q,e),this.items=[]}static from(e,t,n){let{keepUndefined:i,replacer:r}=n,o=new this(e),l=(a,c)=>{if(typeof r=="function")c=r.call(t,a,c);else if(Array.isArray(r)&&!r.includes(a))return;(c!==void 0||i)&&o.items.push(Ee(a,c,n))};if(t instanceof Map)for(let[a,c]of t)l(a,c);else if(t&&typeof t=="object")for(let a of Object.keys(t))l(a,t[a]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){let n;A(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new C(e,e?.value):n=new C(e.key,e.value);let i=ue(this.items,n.key),r=this.schema?.sortMapEntries;if(i){if(!t)throw new Error(`Key ${n.key} already set`);O(i.value)&&it(n.value)?i.value.value=n.value:i.value=n.value}else if(r){let o=this.items.findIndex(l=>r(n,l)<0);o===-1?this.items.push(n):this.items.splice(o,0,n)}else this.items.push(n)}delete(e){let t=ue(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let i=ue(this.items,e)?.value;return(!t&&O(i)?i.value:i)??void 0}has(e){return!!ue(this.items,e)}set(e,t){this.add(new C(e,t),!0)}toJSON(e,t,n){let i=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(i);for(let r of this.items)ut(t,i,r);return i}toString(e,t,n){if(!e)return JSON.stringify(this);for(let i of this.items)if(!A(i))throw new Error(`Map items must all be pairs; found ${JSON.stringify(i)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),pt(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}};var G={collection:"map",default:!0,nodeClass:$,tag:"tag:yaml.org,2002:map",resolve(s,e){return R(s)||e("Expected a mapping for this tag"),s},createNode:(s,e,t)=>$.from(s,e,t)};var M=class extends ge{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(re,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=mt(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let n=mt(e);if(typeof n!="number")return;let i=this.items[n];return!t&&O(i)?i.value:i}has(e){let t=mt(e);return typeof t=="number"&&t=0?e:null}var W={collection:"seq",default:!0,nodeClass:M,tag:"tag:yaml.org,2002:seq",resolve(s,e){return U(s)||e("Expected a sequence for this tag"),s},createNode:(s,e,t)=>M.from(s,e,t)};var he={identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify(s,e,t,n){return e=Object.assign({actualString:!0},e),le(s,e,t,n)}};var ye={identify:s=>s==null,createNode:()=>new y(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new y(null),stringify:({source:s},e)=>typeof s=="string"&&ye.test.test(s)?s:e.options.nullStr};var Re={identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:s=>new y(s[0]==="t"||s[0]==="T"),stringify({source:s,value:e},t){if(s&&Re.test.test(s)){let n=s[0]==="t"||s[0]==="T";if(e===n)return s}return e?t.options.trueStr:t.options.falseStr}};function D({format:s,minFractionDigits:e,tag:t,value:n}){if(typeof n=="bigint")return String(n);let i=typeof n=="number"?n:Number(n);if(!isFinite(i))return isNaN(i)?".nan":i<0?"-.inf":".inf";let r=JSON.stringify(n);if(!s&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(r)){let o=r.indexOf(".");o<0&&(o=r.length,r+=".");let l=e-(r.length-o-1);for(;l-- >0;)r+="0"}return r}var dt={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:D},gt={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():D(s)}},yt={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(s){let e=new y(parseFloat(s)),t=s.indexOf(".");return t!==-1&&s[s.length-1]==="0"&&(e.minFractionDigits=s.length-t-1),e},stringify:D};var bt=s=>typeof s=="bigint"||Number.isInteger(s),Ft=(s,e,t,{intAsBigInt:n})=>n?BigInt(s):parseInt(s.substring(e),t);function ws(s,e,t){let{value:n}=s;return bt(n)&&n>=0?t+n.toString(e):D(s)}var wt={identify:s=>bt(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(s,e,t)=>Ft(s,2,8,t),stringify:s=>ws(s,8,"0o")},St={identify:bt,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(s,e,t)=>Ft(s,0,10,t),stringify:D},kt={identify:s=>bt(s)&&s>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(s,e,t)=>Ft(s,2,16,t),stringify:s=>ws(s,16,"0x")};var Ss=[G,W,he,ye,Re,wt,St,kt,dt,gt,yt];function ks(s){return typeof s=="bigint"||Number.isInteger(s)}var Nt=({value:s})=>JSON.stringify(s),kn=[{identify:s=>typeof s=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:s=>s,stringify:Nt},{identify:s=>s==null,createNode:()=>new y(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Nt},{identify:s=>typeof s=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:s=>s==="true",stringify:Nt},{identify:ks,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(s,e,{intAsBigInt:t})=>t?BigInt(s):parseInt(s,10),stringify:({value:s})=>ks(s)?s.toString():JSON.stringify(s)},{identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:s=>parseFloat(s),stringify:Nt}],Nn={default:!0,tag:"",test:/^/,resolve(s,e){return e(`Unresolved plain scalar ${JSON.stringify(s)}`),s}},Ns=[G,W].concat(kn,Nn);var Ue={identify:s=>s instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(s,e){if(typeof Buffer=="function")return Buffer.from(s,"base64");if(typeof atob=="function"){let t=atob(s.replace(/[\n\r]/g,"")),n=new Uint8Array(t.length);for(let i=0;i1&&e("Each pair must have its own sequence indicator");let i=n.items[0]||new C(new y(null));if(n.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${n.commentBefore} -${i.key.commentBefore}`:n.commentBefore),n.comment){let r=i.value??i.key;r.comment=r.comment?`${n.comment} -${r.comment}`:n.comment}n=i}s.items[t]=A(n)?n:new C(n)}}else e("Expected a sequence for this tag");return s}function Ut(s,e,t){let{replacer:n}=t,i=new M(s);i.tag="tag:yaml.org,2002:pairs";let r=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof n=="function"&&(o=n.call(e,String(r++),o));let l,a;if(Array.isArray(o))if(o.length===2)l=o[0],a=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let c=Object.keys(o);if(c.length===1)l=c[0],a=o[l];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else l=o;i.items.push(Ee(l,a,t))}return i}var Ve={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Rt,createNode:Ut};var Le=class s extends M{constructor(){super(),this.add=$.prototype.add.bind(this),this.delete=$.prototype.delete.bind(this),this.get=$.prototype.get.bind(this),this.has=$.prototype.has.bind(this),this.set=$.prototype.set.bind(this),this.tag=s.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let i of this.items){let r,o;if(A(i)?(r=_(i.key,"",t),o=_(i.value,r,t)):r=_(i,"",t),n.has(r))throw new Error("Ordered maps must not include duplicate keys");n.set(r,o)}return n}static from(e,t,n){let i=Ut(e,t,n),r=new this;return r.items=i.items,r}};Le.tag="tag:yaml.org,2002:omap";var Ye={collection:"seq",identify:s=>s instanceof Map,nodeClass:Le,default:!1,tag:"tag:yaml.org,2002:omap",resolve(s,e){let t=Rt(s,e),n=[];for(let{key:i}of t.items)O(i)&&(n.includes(i.value)?e(`Ordered maps must not include duplicate keys: ${i.value}`):n.push(i.value));return Object.assign(new Le,t)},createNode:(s,e,t)=>Le.from(s,e,t)};function Os({value:s,source:e},t){return e&&(s?Vt:Yt).test.test(e)?e:s?t.options.trueStr:t.options.falseStr}var Vt={identify:s=>s===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new y(!0),stringify:Os},Yt={identify:s=>s===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new y(!1),stringify:Os};var As={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/,resolve:s=>s.slice(-3).toLowerCase()==="nan"?NaN:s[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:D},Es={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:s=>parseFloat(s.replace(/_/g,"")),stringify(s){let e=Number(s.value);return isFinite(e)?e.toExponential():D(s)}},Ls={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(s){let e=new y(parseFloat(s.replace(/_/g,""))),t=s.indexOf(".");if(t!==-1){let n=s.substring(t+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:D};var Je=s=>typeof s=="bigint"||Number.isInteger(s);function Ot(s,e,t,{intAsBigInt:n}){let i=s[0];if((i==="-"||i==="+")&&(e+=1),s=s.substring(e).replace(/_/g,""),n){switch(t){case 2:s=`0b${s}`;break;case 8:s=`0o${s}`;break;case 16:s=`0x${s}`;break}let o=BigInt(s);return i==="-"?BigInt(-1)*o:o}let r=parseInt(s,t);return i==="-"?-1*r:r}function Jt(s,e,t){let{value:n}=s;if(Je(n)){let i=n.toString(e);return n<0?"-"+t+i.substr(1):t+i}return D(s)}var Ts={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(s,e,t)=>Ot(s,2,2,t),stringify:s=>Jt(s,2,"0b")},Is={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(s,e,t)=>Ot(s,1,8,t),stringify:s=>Jt(s,8,"0")},Cs={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(s,e,t)=>Ot(s,0,10,t),stringify:D},vs={identify:Je,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(s,e,t)=>Ot(s,2,16,t),stringify:s=>Jt(s,16,"0x")};var Te=class s extends ${constructor(e){super(e),this.tag=s.tag}add(e){let t;A(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new C(e.key,null):t=new C(e,null),ue(this.items,t.key)||this.items.push(t)}get(e,t){let n=ue(this.items,e);return!t&&A(n)?O(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=ue(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new C(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw new Error("Set items must all have null values")}static from(e,t,n){let{replacer:i}=n,r=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof i=="function"&&(o=i.call(t,o,o)),r.items.push(Ee(o,null,n));return r}};Te.tag="tag:yaml.org,2002:set";var Qe={collection:"map",identify:s=>s instanceof Set,nodeClass:Te,default:!1,tag:"tag:yaml.org,2002:set",createNode:(s,e,t)=>Te.from(s,e,t),resolve(s,e){if(R(s)){if(s.hasAllNullValues(!0))return Object.assign(new Te,s);e("Set items must all have null values")}else e("Expected a mapping for this tag");return s}};function Qt(s,e){let t=s[0],n=t==="-"||t==="+"?s.substring(1):s,i=o=>e?BigInt(o):Number(o),r=n.replace(/_/g,"").split(":").reduce((o,l)=>o*i(60)+i(l),i(0));return t==="-"?i(-1)*r:r}function $s(s){let{value:e}=s,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return D(s);let n="";e<0&&(n="-",e*=t(-1));let i=t(60),r=[e%i];return e<60?r.unshift(0):(e=(e-r[0])/i,r.unshift(e%i),e>=60&&(e=(e-r[0])/i,r.unshift(e))),n+r.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var At={identify:s=>typeof s=="bigint"||Number.isInteger(s),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(s,e,{intAsBigInt:t})=>Qt(s,t),stringify:$s},Et={identify:s=>typeof s=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:s=>Qt(s,!1),stringify:$s},Ie={identify:s=>s instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(s){let e=s.match(Ie.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,n,i,r,o,l]=e.map(Number),a=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(t,n-1,i,r||0,o||0,l||0,a),p=e[8];if(p&&p!=="Z"){let f=Qt(p,!1);Math.abs(f)<30&&(f*=60),c-=6e4*f}return new Date(c)},stringify:({value:s})=>s.toISOString().replace(/((T00:00)?:00)?\.000Z$/,"")};var Gt=[G,W,he,ye,Vt,Yt,Ts,Is,Cs,vs,As,Es,Ls,Ue,Ye,Ve,Qe,At,Et,Ie];var _s=new Map([["core",Ss],["failsafe",[G,W,he]],["json",Ns],["yaml11",Gt],["yaml-1.1",Gt]]),Ps={binary:Ue,bool:Re,float:yt,floatExp:gt,floatNaN:dt,floatTime:Et,int:St,intHex:kt,intOct:wt,intTime:At,map:G,null:ye,omap:Ye,pairs:Ve,seq:W,set:Qe,timestamp:Ie},Ms={"tag:yaml.org,2002:binary":Ue,"tag:yaml.org,2002:omap":Ye,"tag:yaml.org,2002:pairs":Ve,"tag:yaml.org,2002:set":Qe,"tag:yaml.org,2002:timestamp":Ie};function Lt(s,e){let t=_s.get(e);if(!t)if(Array.isArray(s))t=[];else{let n=Array.from(_s.keys()).filter(i=>i!=="yaml11").map(i=>JSON.stringify(i)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${n} or define customTags array`)}if(Array.isArray(s))for(let n of s)t=t.concat(n);else typeof s=="function"&&(t=s(t.slice()));return t.map(n=>{if(typeof n!="string")return n;let i=Ps[n];if(i)return i;let r=Object.keys(Ps).map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown custom tag "${n}"; use one of ${r}`)})}var On=(s,e)=>s.keye.key?1:0,Ce=class s{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:i,schema:r,sortMapEntries:o,toStringDefaults:l}){this.compat=Array.isArray(e)?Lt(e,"compat"):e?Lt(null,e):null,this.merge=!!n,this.name=typeof r=="string"&&r||"core",this.knownTags=i?Ms:{},this.tags=Lt(t,this.name),this.toStringOptions=l??null,Object.defineProperty(this,Q,{value:G}),Object.defineProperty(this,x,{value:he}),Object.defineProperty(this,re,{value:W}),this.sortMapEntries=typeof o=="function"?o:o===!0?On:null}clone(){let e=Object.create(s.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};function Bs(s,e){let t=[],n=e.directives===!0;if(e.directives!==!1&&s.directives){let a=s.directives.toString(s);a?(t.push(a),n=!0):s.directives.docStart&&(n=!0)}n&&t.push("---");let i=ct(s,e),{commentString:r}=i.options;if(s.commentBefore){t.length!==1&&t.unshift("");let a=r(s.commentBefore);t.unshift(Y(a,""))}let o=!1,l=null;if(s.contents){if(L(s.contents)){if(s.contents.spaceBefore&&n&&t.push(""),s.contents.commentBefore){let p=r(s.contents.commentBefore);t.push(Y(p,""))}i.forceBlockIndent=!!s.comment,l=s.contents.comment}let a=l?void 0:()=>o=!0,c=ae(s.contents,i,()=>l=null,a);l&&(c+=te(c,"",r(l))),(c[0]==="|"||c[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${c}`:t.push(c)}else t.push(ae(s.contents,i));if(s.directives?.docEnd)if(s.comment){let a=r(s.comment);a.includes(` -`)?(t.push("..."),t.push(Y(a,""))):t.push(`... ${a}`)}else t.push("...");else{let a=s.comment;a&&o&&(a=a.replace(/^\n+/,"")),a&&((!o||l)&&t[t.length-1]!==""&&t.push(""),t.push(Y(r(a),"")))}return t.join(` -`)+` -`}var se=class s{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,j,{value:tt});let i=null;typeof t=="function"||Array.isArray(t)?i=t:n===void 0&&t&&(n=t,t=void 0);let r=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,uniqueKeys:!0,version:"1.2"},n);this.options=r;let{version:o}=r;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Z({version:o}),this.setSchema(o,n),this.contents=e===void 0?null:this.createNode(e,i,n)}clone(){let e=Object.create(s.prototype,{[j]:{value:tt}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=L(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){ve(this.contents)&&this.contents.add(e)}addIn(e,t){ve(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let n=Bt(this);e.anchor=!t||n.has(t)?Dt(t||"a",n):t}return new ee(e.anchor)}createNode(e,t,n){let i;if(typeof t=="function")e=t.call({"":e},"",e),i=t;else if(Array.isArray(t)){let m=w=>typeof w=="number"||w instanceof String||w instanceof Number,S=t.filter(m).map(String);S.length>0&&(t=t.concat(S)),i=t}else n===void 0&&t&&(n=t,t=void 0);let{aliasDuplicateObjects:r,anchorPrefix:o,flow:l,keepUndefined:a,onTagObj:c,tag:p}=n??{},{onAnchor:f,setAnchors:h,sourceObjects:d}=ms(this,o||"a"),b={aliasDuplicateObjects:r??!0,keepUndefined:a??!1,onAnchor:f,onTagObj:c,replacer:i,schema:this.schema,sourceObjects:d},u=oe(e,p,b);return l&&T(u)&&(u.flow=!0),h(),u}createPair(e,t,n={}){let i=this.createNode(e,null,n),r=this.createNode(t,null,n);return new C(i,r)}delete(e){return ve(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Oe(e)?this.contents==null?!1:(this.contents=null,!0):ve(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return T(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Oe(e)?!t&&O(this.contents)?this.contents.value:this.contents:T(this.contents)?this.contents.getIn(e,t):void 0}has(e){return T(this.contents)?this.contents.has(e):!1}hasIn(e){return Oe(e)?this.contents!==void 0:T(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Ke(this.schema,[e],t):ve(this.contents)&&this.contents.set(e,t)}setIn(e,t){Oe(e)?this.contents=t:this.contents==null?this.contents=Ke(this.schema,Array.from(e),t):ve(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Z({version:"1.1"}),n={merge:!0,resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new Z({version:e}),n={merge:!1,resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{let i=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${i}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(n)this.schema=new Ce(Object.assign(n,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:i,onAnchor:r,reviver:o}={}){let l={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=_(this.contents,t??"",l);if(typeof r=="function")for(let{count:c,res:p}of l.anchors.values())r(p,c);return typeof o=="function"?ce(o,{"":a},"",a):a}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Bs(this,e)}};function ve(s){if(T(s))return!0;throw new Error("Expected a YAML collection as document contents")}var $e=class extends Error{constructor(e,t,n,i){super(),this.name=e,this.code=n,this.message=i,this.pos=t}},q=class extends $e{constructor(e,t,n){super("YAMLParseError",e,t,n)}},_e=class extends $e{constructor(e,t,n){super("YAMLWarning",e,t,n)}},Ge=(s,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(l=>e.linePos(l));let{line:n,col:i}=t.linePos[0];t.message+=` at line ${n}, column ${i}`;let r=i-1,o=s.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(r>=60&&o.length>80){let l=Math.min(r-39,o.length-79);o="\u2026"+o.substring(l),r-=l-1}if(o.length>80&&(o=o.substring(0,79)+"\u2026"),n>1&&/^ *$/.test(o.substring(0,r))){let l=s.substring(e.lineStarts[n-2],e.lineStarts[n-1]);l.length>80&&(l=l.substring(0,79)+`\u2026 -`),o=l+o}if(/[^ ]/.test(o)){let l=1,a=t.linePos[1];a&&a.line===n&&a.col>i&&(l=Math.max(1,Math.min(a.col-i,80-r)));let c=" ".repeat(r)+"^".repeat(l);t.message+=`: - -${o} -${c} -`}};function ne(s,{flow:e,indicator:t,next:n,offset:i,onError:r,startOnNewline:o}){let l=!1,a=o,c=o,p="",f="",h=!1,d=!1,b=!1,u=null,m=null,S=null,w=null,k=null;for(let g of s)switch(b&&(g.type!=="space"&&g.type!=="newline"&&g.type!=="comma"&&r(g.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),b=!1),g.type){case"space":!e&&a&&t!=="doc-start"&&g.source[0]===" "&&r(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),c=!0;break;case"comment":{c||r(g,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let I=g.source.substring(1)||" ";p?p+=f+I:p=I,f="",a=!1;break}case"newline":a?p?p+=g.source:l=!0:f+=g.source,a=!0,h=!0,(u||m)&&(d=!0),c=!0;break;case"anchor":u&&r(g,"MULTIPLE_ANCHORS","A node can have at most one anchor"),g.source.endsWith(":")&&r(g.offset+g.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),u=g,k===null&&(k=g.offset),a=!1,c=!1,b=!0;break;case"tag":{m&&r(g,"MULTIPLE_TAGS","A node can have at most one tag"),m=g,k===null&&(k=g.offset),a=!1,c=!1,b=!0;break}case t:(u||m)&&r(g,"BAD_PROP_ORDER",`Anchors and tags must be after the ${g.source} indicator`),w&&r(g,"UNEXPECTED_TOKEN",`Unexpected ${g.source} in ${e??"collection"}`),w=g,a=!1,c=!1;break;case"comma":if(e){S&&r(g,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),S=g,a=!1,c=!1;break}default:r(g,"UNEXPECTED_TOKEN",`Unexpected ${g.type} token`),a=!1,c=!1}let N=s[s.length-1],E=N?N.offset+N.source.length:i;return b&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&r(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),{comma:S,found:w,spaceBefore:l,comment:p,hasNewline:h,hasNewlineAfterProp:d,anchor:u,tag:m,end:E,start:k??E}}function pe(s){if(!s)return null;switch(s.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(s.source.includes(` -`))return!0;if(s.end){for(let e of s.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of s.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(pe(e.key)||pe(e.value))return!0}return!1;default:return!0}}function We(s,e,t){if(e?.type==="flow-collection"){let n=e.end[0];n.indent===s&&(n.source==="]"||n.source==="}")&&pe(e)&&t(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function Tt(s,e,t){let{uniqueKeys:n}=s.options;if(n===!1)return!1;let i=typeof n=="function"?n:(r,o)=>r===o||O(r)&&O(o)&&r.value===o.value&&!(r.value==="<<"&&s.schema.merge);return e.some(r=>i(r.key,t))}var Ds="All mapping items must start at the same column";function js({composeNode:s,composeEmptyNode:e},t,n,i,r){let o=r?.nodeClass??$,l=new o(t.schema);t.atRoot&&(t.atRoot=!1);let a=n.offset,c=null;for(let p of n.items){let{start:f,key:h,sep:d,value:b}=p,u=ne(f,{indicator:"explicit-key-ind",next:h??d?.[0],offset:a,onError:i,startOnNewline:!0}),m=!u.found;if(m){if(h&&(h.type==="block-seq"?i(a,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in h&&h.indent!==n.indent&&i(a,"BAD_INDENT",Ds)),!u.anchor&&!u.tag&&!d){c=u.end,u.comment&&(l.comment?l.comment+=` -`+u.comment:l.comment=u.comment);continue}(u.hasNewlineAfterProp||pe(h))&&i(h??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else u.found?.indent!==n.indent&&i(a,"BAD_INDENT",Ds);let S=u.end,w=h?s(t,h,u,i):e(t,S,f,null,u,i);t.schema.compat&&We(n.indent,h,i),Tt(t,l.items,w)&&i(S,"DUPLICATE_KEY","Map keys must be unique");let k=ne(d??[],{indicator:"map-value-ind",next:b,offset:w.range[2],onError:i,startOnNewline:!h||h.type==="block-scalar"});if(a=k.end,k.found){m&&(b?.type==="block-map"&&!k.hasNewline&&i(a,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&u.starts&&(s.type==="block-map"||s.type==="block-seq");function qs({composeNode:s,composeEmptyNode:e},t,n,i,r){let o=n.start.source==="{",l=o?"flow map":"flow sequence",a=r?.nodeClass??(o?$:M),c=new a(t.schema);c.flow=!0;let p=t.atRoot;p&&(t.atRoot=!1);let f=n.offset+n.start.source.length;for(let m=0;m0){let m=ie(b,u,t.options.strict,i);m.comment&&(c.comment?c.comment+=` -`+m.comment:c.comment=m.comment),c.range=[n.offset,u,m.offset]}else c.range=[n.offset,u,u];return c}function Xt(s,e,t,n,i,r){let o=t.type==="block-map"?js(s,e,t,n,r):t.type==="block-seq"?Ks(s,e,t,n,r):qs(s,e,t,n,r),l=o.constructor;return i==="!"||i===l.tagName?(o.tag=l.tagName,o):(i&&(o.tag=i),o)}function xs(s,e,t,n,i){let r=n?e.directives.tagName(n.source,f=>i(n,"TAG_RESOLVE_FAILED",f)):null,o=t.type==="block-map"?"map":t.type==="block-seq"?"seq":t.start.source==="{"?"map":"seq";if(!n||!r||r==="!"||r===$.tagName&&o==="map"||r===M.tagName&&o==="seq"||!o)return Xt(s,e,t,i,r);let l=e.schema.tags.find(f=>f.tag===r&&f.collection===o);if(!l){let f=e.schema.knownTags[r];if(f&&f.collection===o)e.schema.tags.push(Object.assign({},f,{default:!1})),l=f;else return f?.collection?i(n,"BAD_COLLECTION_TYPE",`${f.tag} used for ${o} collection, but expects ${f.collection}`,!0):i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${r}`,!0),Xt(s,e,t,i,r)}let a=Xt(s,e,t,i,r,l),c=l.resolve?.(a,f=>i(n,"TAG_RESOLVE_FAILED",f),e.options)??a,p=L(c)?c:new y(c);return p.range=a.range,p.tag=r,l?.format&&(p.format=l.format),p}function It(s,e,t){let n=s.offset,i=An(s,e,t);if(!i)return{value:"",type:null,comment:"",range:[n,n,n]};let r=i.mode===">"?y.BLOCK_FOLDED:y.BLOCK_LITERAL,o=s.source?En(s.source):[],l=o.length;for(let u=o.length-1;u>=0;--u){let m=o[u][1];if(m===""||m==="\r")l=u;else break}if(l===0){let u=i.chomp==="+"&&o.length>0?` -`.repeat(Math.max(1,o.length-1)):"",m=n+i.length;return s.source&&(m+=s.source.length),{value:u,type:r,comment:i.comment,range:[n,m,m]}}let a=s.indent+i.indent,c=s.offset+i.length,p=0;for(let u=0;ua&&(a=m.length);else{m.length=l;--u)o[u][0].length>a&&(l=u+1);let f="",h="",d=!1;for(let u=0;ua||S[0]===" "?(h===" "?h=` -`:!d&&h===` -`&&(h=` - -`),f+=h+m.slice(a)+S,h=` -`,d=!0):S===""?h===` -`?f+=` -`:h=` -`:(f+=h+S,h=" ",d=!1)}switch(i.chomp){case"-":break;case"+":for(let u=l;ut(n+h,d,b);switch(i){case"scalar":l=y.PLAIN,a=Ln(r,c);break;case"single-quoted-scalar":l=y.QUOTE_SINGLE,a=Tn(r,c);break;case"double-quoted-scalar":l=y.QUOTE_DOUBLE,a=In(r,c);break;default:return t(s,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${i}`),{value:"",type:null,comment:"",range:[n,n+r.length,n+r.length]}}let p=n+r.length,f=ie(o,p,e,t);return{value:a,type:l,comment:f.comment,range:[n,p,f.offset]}}function Ln(s,e){let t="";switch(s[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${s[0]}`;break}case"@":case"`":{t=`reserved character ${s[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),Fs(s)}function Tn(s,e){return(s[s.length-1]!=="'"||s.length===1)&&e(s.length,"MISSING_CHAR","Missing closing 'quote"),Fs(s.slice(1,-1)).replace(/''/g,"'")}function Fs(s){let e,t;try{e=new RegExp(`(.*?)(?r?s.slice(r,n+1):i)}else t+=i}return(s[s.length-1]!=='"'||s.length===1)&&e(s.length,"MISSING_CHAR",'Missing closing "quote'),t}function Cn(s,e){let t="",n=s[e+1];for(;(n===" "||n===" "||n===` -`||n==="\r")&&!(n==="\r"&&s[e+2]!==` -`);)n===` -`&&(t+=` -`),e+=1,n=s[e+1];return t||(t=" "),{fold:t,offset:e}}var vn={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` -`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function $n(s,e,t,n){let i=s.substr(e,t),o=i.length===t&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;if(isNaN(o)){let l=s.substr(e-2,t+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${l}`),l}return String.fromCodePoint(o)}function zt(s,e,t,n){let{value:i,type:r,comment:o,range:l}=e.type==="block-scalar"?It(e,s.options.strict,n):Ct(e,s.options.strict,n),a=t?s.directives.tagName(t.source,f=>n(t,"TAG_RESOLVE_FAILED",f)):null,c=t&&a?_n(s.schema,i,a,t,n):e.type==="scalar"?Pn(s,i,e,n):s.schema[x],p;try{let f=c.resolve(i,h=>n(t??e,"TAG_RESOLVE_FAILED",h),s.options);p=O(f)?f:new y(f)}catch(f){let h=f instanceof Error?f.message:String(f);n(t??e,"TAG_RESOLVE_FAILED",h),p=new y(i)}return p.range=l,p.source=i,r&&(p.type=r),a&&(p.tag=a),c.format&&(p.format=c.format),o&&(p.comment=o),p}function _n(s,e,t,n,i){if(t==="!")return s[x];let r=[];for(let l of s.tags)if(!l.collection&&l.tag===t)if(l.default&&l.test)r.push(l);else return l;for(let l of r)if(l.test?.test(e))return l;let o=s.knownTags[t];return o&&!o.collection?(s.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),s[x])}function Pn({directives:s,schema:e},t,n,i){let r=e.tags.find(o=>o.default&&o.test?.test(t))||e[x];if(e.compat){let o=e.compat.find(l=>l.default&&l.test?.test(t))??e[x];if(r.tag!==o.tag){let l=s.tagString(r.tag),a=s.tagString(o.tag),c=`Value may be parsed as either ${l} or ${a}`;i(n,"TAG_RESOLVE_FAILED",c,!0)}}return r}function Rs(s,e,t){if(e){t===null&&(t=e.length);for(let n=t-1;n>=0;--n){let i=e[n];switch(i.type){case"space":case"comment":case"newline":s-=i.source.length;continue}for(i=e[++n];i?.type==="space";)s+=i.source.length,i=e[++n];break}}return s}var Mn={composeNode:Zt,composeEmptyNode:vt};function Zt(s,e,t,n){let{spaceBefore:i,comment:r,anchor:o,tag:l}=t,a,c=!0;switch(e.type){case"alias":a=Bn(s,e,n),(o||l)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":a=zt(s,e,l,n),o&&(a.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":a=xs(Mn,s,e,l,n),o&&(a.anchor=o.source.substring(1));break;default:{let p=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",p),a=vt(s,e.offset,void 0,null,t,n),c=!1}}return o&&a.anchor===""&&n(o,"BAD_ALIAS","Anchor cannot be an empty string"),i&&(a.spaceBefore=!0),r&&(e.type==="scalar"&&e.source===""?a.comment=r:a.commentBefore=r),s.options.keepSourceTokens&&c&&(a.srcToken=e),a}function vt(s,e,t,n,{spaceBefore:i,comment:r,anchor:o,tag:l,end:a},c){let p={type:"scalar",offset:Rs(e,t,n),indent:-1,source:""},f=zt(s,p,l,c);return o&&(f.anchor=o.source.substring(1),f.anchor===""&&c(o,"BAD_ALIAS","Anchor cannot be an empty string")),i&&(f.spaceBefore=!0),r&&(f.comment=r,f.range[2]=a),f}function Bn({options:s},{offset:e,source:t,end:n},i){let r=new ee(t.substring(1));r.source===""&&i(e,"BAD_ALIAS","Alias cannot be an empty string"),r.source.endsWith(":")&&i(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,l=ie(n,o,s.strict,i);return r.range=[e,o,l.offset],l.comment&&(r.comment=l.comment),r}function Us(s,e,{offset:t,start:n,value:i,end:r},o){let l=Object.assign({_directives:e},s),a=new se(void 0,l),c={atRoot:!0,directives:a.directives,options:a.options,schema:a.schema},p=ne(n,{indicator:"doc-start",next:i??r?.[0],offset:t,onError:o,startOnNewline:!0});p.found&&(a.directives.docStart=!0,i&&(i.type==="block-map"||i.type==="block-seq")&&!p.hasNewline&&o(p.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),a.contents=i?Zt(c,i,p,o):vt(c,p.end,n,null,p,o);let f=a.contents.range[2],h=ie(r,f,!1,o);return h.comment&&(a.comment=h.comment),a.range=[t,f,h.offset],a}function He(s){if(typeof s=="number")return[s,s+1];if(Array.isArray(s))return s.length===2?s:[s[0],s[1]];let{offset:e,source:t}=s;return[e,e+(typeof t=="string"?t.length:1)]}function Vs(s){let e="",t=!1,n=!1;for(let i=0;i{let o=He(t);r?this.warnings.push(new _e(o,n,i)):this.errors.push(new q(o,n,i))},this.directives=new Z({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:n,afterEmptyLine:i}=Vs(this.prelude);if(n){let r=e.contents;if(t)e.comment=e.comment?`${e.comment} -${n}`:n;else if(i||e.directives.docStart||!r)e.commentBefore=n;else if(T(r)&&!r.flow&&r.items.length>0){let o=r.items[0];A(o)&&(o=o.key);let l=o.commentBefore;o.commentBefore=l?`${n} -${l}`:n}else{let o=r.commentBefore;r.commentBefore=o?`${n} -${o}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Vs(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(let i of e)yield*this.next(i);yield*this.end(t,n)}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,n,i)=>{let r=He(e);r[0]+=t,this.onError(r,"BAD_DIRECTIVE",n,i)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Us(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new q(He(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){let n="Unexpected doc-end without preceding document";this.errors.push(new q(He(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;let t=ie(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let n=this.doc.comment;this.doc.comment=n?`${n} -${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new q(He(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({_directives:this.directives},this.options),i=new se(void 0,n);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),i.range=[0,t,t],this.decorate(i,!1),yield i}}};var ns={};as(ns,{BOM:()=>Xe,DOCUMENT:()=>ze,FLOW_END:()=>Ze,SCALAR:()=>Pe,createScalarToken:()=>Js,isCollection:()=>Kn,isScalar:()=>qn,prettyToken:()=>xn,resolveAsScalar:()=>Ys,setScalarValue:()=>Qs,stringify:()=>Ws,tokenType:()=>ss,visit:()=>me});function Ys(s,e=!0,t){if(s){let n=(i,r,o)=>{let l=typeof i=="number"?i:Array.isArray(i)?i[0]:i.offset;if(t)t(l,r,o);else throw new q([l,l+1],r,o)};switch(s.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Ct(s,e,n);case"block-scalar":return It(s,e,n)}}return null}function Js(s,e){let{implicitKey:t=!1,indent:n,inFlow:i=!1,offset:r=-1,type:o="PLAIN"}=e,l=le({type:o,value:s},{implicitKey:t,indent:n>0?" ".repeat(n):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}}),a=e.end??[{type:"newline",offset:-1,indent:n,source:` -`}];switch(l[0]){case"|":case">":{let c=l.indexOf(` -`),p=l.substring(0,c),f=l.substring(c+1)+` -`,h=[{type:"block-scalar-header",offset:r,indent:n,source:p}];return Gs(h,a)||h.push({type:"newline",offset:-1,indent:n,source:` -`}),{type:"block-scalar",offset:r,indent:n,props:h,source:f}}case'"':return{type:"double-quoted-scalar",offset:r,indent:n,source:l,end:a};case"'":return{type:"single-quoted-scalar",offset:r,indent:n,source:l,end:a};default:return{type:"scalar",offset:r,indent:n,source:l,end:a}}}function Qs(s,e,t={}){let{afterKey:n=!1,implicitKey:i=!1,inFlow:r=!1,type:o}=t,l="indent"in s?s.indent:null;if(n&&typeof l=="number"&&(l+=2),!o)switch(s.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let c=s.props[0];if(c.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=c.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let a=le({type:o,value:e},{implicitKey:i||l===null,indent:l!==null&&l>0?" ".repeat(l):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}});switch(a[0]){case"|":case">":Dn(s,a);break;case'"':es(s,a,"double-quoted-scalar");break;case"'":es(s,a,"single-quoted-scalar");break;default:es(s,a,"scalar")}}function Dn(s,e){let t=e.indexOf(` -`),n=e.substring(0,t),i=e.substring(t+1)+` -`;if(s.type==="block-scalar"){let r=s.props[0];if(r.type!=="block-scalar-header")throw new Error("Invalid block scalar header");r.source=n,s.source=i}else{let{offset:r}=s,o="indent"in s?s.indent:-1,l=[{type:"block-scalar-header",offset:r,indent:o,source:n}];Gs(l,"end"in s?s.end:void 0)||l.push({type:"newline",offset:-1,indent:o,source:` -`});for(let a of Object.keys(s))a!=="type"&&a!=="offset"&&delete s[a];Object.assign(s,{type:"block-scalar",indent:o,props:l,source:i})}}function Gs(s,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":s.push(t);break;case"newline":return s.push(t),!0}return!1}function es(s,e,t){switch(s.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":s.type=t,s.source=e;break;case"block-scalar":{let n=s.props.slice(1),i=e.length;s.props[0].type==="block-scalar-header"&&(i-=s.props[0].source.length);for(let r of n)r.offset+=i;delete s.props,Object.assign(s,{type:t,source:e,end:n});break}case"block-map":case"block-seq":{let i={type:"newline",offset:s.offset+e.length,indent:s.indent,source:` -`};delete s.items,Object.assign(s,{type:t,source:e,end:[i]});break}default:{let n="indent"in s?s.indent:-1,i="end"in s&&Array.isArray(s.end)?s.end.filter(r=>r.type==="space"||r.type==="comment"||r.type==="newline"):[];for(let r of Object.keys(s))r!=="type"&&r!=="offset"&&delete s[r];Object.assign(s,{type:t,indent:n,source:e,end:i})}}}var Ws=s=>"type"in s?_t(s):$t(s);function _t(s){switch(s.type){case"block-scalar":{let e="";for(let t of s.props)e+=_t(t);return e+s.source}case"block-map":case"block-seq":{let e="";for(let t of s.items)e+=$t(t);return e}case"flow-collection":{let e=s.start.source;for(let t of s.items)e+=$t(t);for(let t of s.end)e+=t.source;return e}case"document":{let e=$t(s);if(s.end)for(let t of s.end)e+=t.source;return e}default:{let e=s.source;if("end"in s&&s.end)for(let t of s.end)e+=t.source;return e}}}function $t({start:s,key:e,sep:t,value:n}){let i="";for(let r of s)i+=r.source;if(e&&(i+=_t(e)),t)for(let r of t)i+=r.source;return n&&(i+=_t(n)),i}var ts=Symbol("break visit"),jn=Symbol("skip children"),Hs=Symbol("remove item");function me(s,e){"type"in s&&s.type==="document"&&(s={start:s.start,value:s.value}),Xs(Object.freeze([]),s,e)}me.BREAK=ts;me.SKIP=jn;me.REMOVE=Hs;me.itemAtPath=(s,e)=>{let t=s;for(let[n,i]of e){let r=t?.[n];if(r&&"items"in r)t=r.items[i];else return}return t};me.parentCollection=(s,e)=>{let t=me.itemAtPath(s,e.slice(0,-1)),n=e[e.length-1][0],i=t?.[n];if(i&&"items"in i)return i;throw new Error("Parent collection not found")};function Xs(s,e,t){let n=t(e,s);if(typeof n=="symbol")return n;for(let i of["key","value"]){let r=e[i];if(r&&"items"in r){for(let o=0;o!!s&&"items"in s,qn=s=>!!s&&(s.type==="scalar"||s.type==="single-quoted-scalar"||s.type==="double-quoted-scalar"||s.type==="block-scalar");function xn(s){switch(s){case Xe:return"";case ze:return"";case Ze:return"";case Pe:return"";default:return JSON.stringify(s)}}function ss(s){switch(s){case Xe:return"byte-order-mark";case ze:return"doc-mode";case Ze:return"flow-error-end";case Pe:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` -`:case`\r -`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(s[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function J(s){switch(s){case void 0:case" ":case` -`:case"\r":case" ":return!0;default:return!1}}var zs="0123456789ABCDEFabcdef".split(""),Fn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()".split(""),is=",[]{}".split(""),Rn=` ,[]{} -\r `.split(""),rs=s=>!s||Rn.includes(s),Me=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){e&&(this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null),this.atEnd=!t;let n=this.next??"stream";for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===` -`?!0:t==="\r"?this.buffer[e+1]===` -`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===" ";)t=this.buffer[++n+e];if(t==="\r"){let i=this.buffer[n+e+1];if(i===` -`||!i&&!this.atEnd)return e+n+1}return t===` -`||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t==="-"||t==="."){let n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&J(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!J(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&J(t)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(rs),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,n=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=n=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);let i=this.getLine();if(i===null)return this.setNext("flow");if((n!==-1&&n"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>J(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,n;e:for(let i=this.pos;n=this.buffer[i];++i)switch(n){case" ":t+=1;break;case` -`:e=i,t=0;break;case"\r":{let r=this.buffer[i+1];if(!r&&!this.atEnd)return this.setNext("block-scalar");if(r===` -`)break}default:break e}if(!n&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext+=this.blockScalarIndent;do{let i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(` -`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}if(!this.blockScalarKeep)do{let i=e-1,r=this.buffer[i];r==="\r"&&(r=this.buffer[--i]);let o=i;for(;r===" "||r===" ";)r=this.buffer[--i];if(r===` -`&&i>=this.pos&&i+1+t>o)e=i;else break}while(!0);return yield Pe,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,n=this.pos-1,i;for(;i=this.buffer[++n];)if(i===":"){let r=this.buffer[n+1];if(J(r)||e&&r===",")break;t=n}else if(J(i)){let r=this.buffer[n+1];if(i==="\r"&&(r===` -`?(n+=1,i=` -`,r=this.buffer[n+1]):t=n),r==="#"||e&&is.includes(r))break;if(i===` -`){let o=this.continueScalar(n+1);if(o===-1)break;n=Math.max(n,o-2)}}else{if(e&&is.includes(i))break;t=n}return!i&&!this.atEnd?this.setNext("plain-scalar"):(yield Pe,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(rs))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(J(t)||e&&is.includes(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!J(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Fn.includes(t))t=this.buffer[++e];else if(t==="%"&&zs.includes(this.buffer[e+1])&&zs.includes(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` -`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===` -`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===" "||e&&n===" ");let i=t-this.pos;return i>0&&(yield this.buffer.substr(this.pos,i),this.pos=t),i}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};var Be=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t>1;this.lineStarts[r]=0;)switch(s[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;s[++e]?.type==="space";);return s.splice(e,s.length)}function en(s){if(s.start.type==="flow-seq-start")for(let e of s.items)e.sep&&!e.value&&!H(e.start,"explicit-key-ind")&&!H(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,tn(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var we=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new Me,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=ss(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let n=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in n?n.indent:0:t.type==="flow-collection"&&n.type==="document"&&(t.indent=0),t.type==="flow-collection"&&en(t),n.type){case"document":n.value=t;break;case"block-scalar":n.props.push(t);break;case"block-map":{let i=n.items[n.items.length-1];if(i.value){n.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(i.sep)i.value=t;else{Object.assign(i,{key:t,sep:[]}),this.onKeyLine=!H(i.start,"explicit-key-ind");return}break}case"block-seq":{let i=n.items[n.items.length-1];i.value?n.items.push({start:[],value:t}):i.value=t;break}case"flow-collection":{let i=n.items[n.items.length-1];!i||i.value?n.items.push({start:[],key:t,sep:[]}):i.sep?i.value=t:Object.assign(i,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let i=t.items[t.items.length-1];i&&!i.sep&&!i.value&&i.start.length>0&&Zs(i.start)===-1&&(t.indent===0||i.start.every(r=>r.type!=="comment"||r.indent=e.indent){let n=!this.onKeyLine&&this.indent===e.indent&&t.sep&&this.type!=="seq-item-ind",i=[];if(n&&t.sep&&!t.value){let r=[];for(let o=0;oe.indent&&(r.length=0);break;default:r.length=0}}r.length>=2&&(i=t.sep.splice(r[1]))}switch(this.type){case"anchor":case"tag":n||t.value?(i.push(this.sourceToken),e.items.push({start:i}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!H(t.start,"explicit-key-ind")?t.start.push(this.sourceToken):n||t.value?(i.push(this.sourceToken),e.items.push({start:i})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]}),this.onKeyLine=!0;return;case"map-value-ind":if(H(t.start,"explicit-key-ind"))if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(H(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]});else if(tn(t.key)&&!H(t.sep,"newline")){let r=De(t.start),o=t.key,l=t.sep;l.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:o,sep:l}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else if(H(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let r=De(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||n?e.items.push({start:i,key:null,sep:[this.sourceToken]}):H(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);n||t.value?(e.items.push({start:i,key:r,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(r):(Object.assign(t,{key:r,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){n&&r.type!=="block-seq"&&H(t.start,"explicit-key-ind")&&e.items.push({start:i}),this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let n="end"in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let i=e.items[e.items.length-2]?.value?.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||H(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let n=this.startBlockValue(e);if(n){this.stack.push(n);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while(n&&n.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:i,sep:[]}):t.sep?this.stack.push(i):Object.assign(t,{key:i,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){let i=Pt(n),r=De(i);en(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let l={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:r,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=l}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(` -`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(` -`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Pt(e),n=De(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Pt(e),n=De(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};function sn(s){let e=s.prettyErrors!==!1;return{lineCounter:s.lineCounter||e&&new Be||null,prettyErrors:e}}function nn(s,e={}){let{lineCounter:t,prettyErrors:n}=sn(e),i=new we(t?.addNewLine),r=new be(e),o=Array.from(r.compose(i.parse(s)));if(n&&t)for(let l of o)l.errors.forEach(Ge(s,t)),l.warnings.forEach(Ge(s,t));return o.length>0?o:Object.assign([],{empty:!0},r.streamInfo())}function os(s,e={}){let{lineCounter:t,prettyErrors:n}=sn(e),i=new we(t?.addNewLine),r=new be(e),o=null;for(let l of r.compose(i.parse(s),!0,s.length))if(!o)o=l;else if(o.options.logLevel!=="silent"){o.errors.push(new q(l.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(o.errors.forEach(Ge(s,t)),o.warnings.forEach(Ge(s,t))),o}function rn(s,e,t){let n;typeof e=="function"?n=e:t===void 0&&e&&typeof e=="object"&&(t=e);let i=os(s,t);if(!i)return null;if(i.warnings.forEach(r=>ft(i.options.logLevel,r)),i.errors.length>0){if(i.options.logLevel!=="silent")throw i.errors[0];i.errors=[]}return i.toJS(Object.assign({reviver:n},t))}function on(s,e,t){let n=null;if(typeof e=="function"||Array.isArray(e)?n=e:t===void 0&&e&&(t=e),typeof t=="string"&&(t=t.length),typeof t=="number"){let i=Math.round(t);t=i<1?void 0:i>8?{indent:8}:{indent:i}}if(s===void 0){let{keepUndefined:i}=t??e??{};if(!i)return}return new se(s,n,t).toString(t)}var ln=ls;window.yaml=ln;})(); diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..f773ca52 Binary files /dev/null and b/objects.inv differ diff --git a/paper1_10k_citation.html b/paper1_10k_citation.html deleted file mode 100755 index bed586e0..00000000 --- a/paper1_10k_citation.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - -Astropy | Paper 1 Reaches 10k Citations - - - - - - - - -
        - - -
        -

        Astropy Paper Reaches 10,000 Citations

        - -

        Published by NumFOCUS on 2025-10-04 (link to original article)

        - -

        The Astropy Project is excited to announce that the first Astropy paper has reached 10,000 citations, as tracked by the Astrophysics Data System.

        - -

        Astropy is a community-driven project that develops the astropy Python package along with other libraries and tools that enable astronomical research software. The Astropy Project has published three journal articles that mark significant milestones for the project, coinciding with the initial announcement of the project, version 2.0 of the core package, and version 5.0 of the core package, respectively.

        - -

        Since its inception just over 10 years ago, Astropy has become a core pillar of astronomical research, laying the foundation for thousands of software packages and enabling over 10,000 published research projects. This milestone demonstrates the impact Astropy has had on astronomy research and reflects the potential impact of scientific software. Other recent milestones include the ADASS Software Prize in 2022 and the 2025 Berkeley Prize.

        - -

        The Astropy Project is not a centralized institution or endeavor: The astropy Python package contains contributions from over 500 unique contributors and the governing bodies of the project are located at a range of universities and institutes with members spanning junior to senior positions in both academic and non-academic careers. While many have contributed to Astropy, the majority of the effort in the project was done by a much smaller group of 20–25 core contributors and maintainers.

        - -

        Astropy has benefitted from and is grateful for grant funding from the Moore Foundation and NASA over the years. However, most of the project was developed through volunteer effort or in-kind contributions from institutions such as Space Telescope Science Institute and the Chandra X-ray Center, and more recently the Center for Computational Astrophysics at the Flatiron Institute. Astropy also receives support as a Sponsored Project with NumFOCUS, which provides services in funding and infrastructure for open source scientific computing projects. Infrastructure software like Astropy is critical to the success of modern astronomy, and we hope that the community will continue to support the project in the future through funding and contributions.

        -
        - - - -
        - - diff --git a/roles.json b/roles.json deleted file mode 100644 index ef8a5439..00000000 --- a/roles.json +++ /dev/null @@ -1,688 +0,0 @@ -[ - { - "role": "Coordination committee member", - "url": "Coordination_committee_member", - "people": [ - "Clara Brasseur", - "Derek Homeier", - "Pey Lian Lim", - "Aarya Patil", - "Erik Tollerud" - ], - "role-head": "Coordination committee member", - "responsibilities": [ - { - "description": "Overall coordination and management of the Astropy project, including:", - "details": [ - "Formally detailed in the The Astropy Project Governance Charter (APE 0)", - "Keeping a large-scale view of the Astropy ecosystem", - "Approving or rejecting Astropy APEs", - "Evaluating and merging core package pull requests as needed (e.g., for sub-packages without a maintainer)", - "Arbitrating disagreements in the core package, including final decisions when otherwise deadlocked", - "Maintaining the list of roles and related github permissions", - "Managing finances for the project", - "Coordinating with NumFOCUS and other funding organizations", - "Securing funding for the project via discussions and proposals to funding agencies" - ] - }, - { - "description": "Organization and communication:", - "details": [ - "Policies: CoCo Operating Policies.", - "Meeting records: CoCo Running Notes.", - "Communication within the coordination committee happens through regular Zoom meetings and a private Slack channel.", - "Contact the Coordination Committee via email to coordinators@astropy.org or by tagging the github team @astropy/coordinators.", - "Coordination committee members send project updates to appropriate email lists (e.g. astropy-dev)." - ] - } - ] - }, - { - "role": "Ombudsperson", - "url": "Ombudsperson", - "people": [ - "Perry Greenfield" - ], - "role-head": "Ombudsperson", - "responsibilities": { - "description": "Provide a point of contact for sensitive issues separate from the coordinating committee, including:", - "details": [ - "Formally detailed in the The Astropy Project Governance Charter (APE 0)", - "Monitoring the confidential@astropy.org email account", - "Solicit and provide anonymized feedback to the astropy coordination committee regarding coordination of the project", - "Assist the coordination committee and community engagement coordinator with violations of the code of conduct or other ethical concerns" - ] - } - }, - { - "role": "Strategic planning committee member", - "url": "strategic_planner", - "people": [ - "Kelle Cruz", - "Adrian Price-Whelan", - "Thomas Robitaille", - "Nathaniel Starkman", - "Erik Tollerud" - ], - "role-head": "Strategic planner", - "responsibilities": [{ - "description": "Do long-term planning for the Astropy Project as a whole, including:", - "details": [ - "Shape and provide a vision for next major steps in the Project, in consultation with the whole Astropy community.", - "Maintain an overview of all the project activities (both from developer and user perspectives).", - "Provide points of contact for external stakeholders on the above (with the Coordination Committee).", - "Monitor project activities to see how well aligned they are with the roadmap and strategic goals of the project, and report back to the community and Coordination Committee.", - "Coordinate writing grant proposals (in collaboration with the Finance Committee, Coordination Committee, and community).", - "Maintain the Astropy Project Roadmap.", - "Engage with, and collect input from, the whole Astropy Community on project vision and priorities." - ] - }, - { - "description": "Organization and communication:", - "details": [ - "Policies: Beta-Year Draft.", - "Meeting records: Strategic Planning Running Notes.", - "Communication within the coordination committee happens through regular Zoom meetings and a private Slack channel.", - "Contact the Strategic Planning Committee via email to strategic.planning@astropy.org or by tagging the github team @astropy/strategic-planning." - ] - }] - }, - { - "role": "Finance committee member", - "url": "finance_committee_member", - "people": [ - "Kelle Cruz (chair)", - "Aarya Patil", - "John Swinbank", - "Erik Tollerud" - ], - "role-head": "Finance committee member", - "responsibilities": [{ - "description": "Plan, oversee, and disburse the Astropy project finances, including:", - "details": [ - "Determine and manage the process for paying people from Astropy's project-level funding.", - "Paying and overseeing people in supporting roles (e.g., documentation copy-editors, contract lawyers).", - "Oversee payment for services, licenses, and travel (e.g., Python in Astronomy, SciPy), and other miscellaneous expenses the project already pays for.", - "Maintain and continuously develop a transparent process for reporting all of the above to the Coordination Committee and wider community, related record keeping, and planning the same for future possible financial committee efforts." - ] - }, - { - "description": "Organization and communication:", - "details": [ - "Policies: Finance Committee Operating Policies.", - "Meeting records: Finance Running Notes.", - "Communication within the finance committee happens through regular Zoom meetings and a private Slack channel.", - "Contact the Finance Committee via email to finance@astropy.org, tagging the github team @astropy/finance-committee, or via #finance-committee public channel in Astropy Slack workspace.", - "Finance committee members send project updates to appropriate email lists (e.g. astropy-dev)." - ] - }] - }, - { - "role": "Maintainer Mentorship coordinator", - "url": "mentorship", - "people": [ - "Tom Aldcroft" - ], - "role-head": "Maintainer Mentorship coordinator", - "responsibilities": { - "description": "Lead the maintainer mentorship program, including:", - "details": [ - "identifying active and experienced contributors that would like to become maintainers", - "finding mentors for new maintainers", - "develop opportunities for new maintainers" - ] - } - }, - { - "role": "Community engagement coordinator", - "url": "Community_engagement_coordinator", - "role-head": "Community engagement coordinator", - "sub-roles": [ - { - "role": "Overall", - "people": [ - "Unfilled" - ] - }, - { - "role": "Facebook", - "people": [ - "Kelle Cruz" - ] - }, - { - "role": "Slack/Matrix", - "people": [ - "Stuart Mumford" - ] - }, - { - "role": "Discourse", - "people": [ - "Stuart Mumford" - ] - }, - { - "role": "Conferences", - "people": [ - "Kelle Cruz", - "Erik Tollerud" - ] - }, - { - "role": "BlueSky", - "people": [ - "Brett Morris" - ] - }, - { - "role": "Mastodon", - "people": [ - "Stuart Mumford" - ] - } - ], - "responsibilities": { - "description": "Facilitate engagement with the Astropy community, including:", - "details": [ - "Maintain Astropy's social media accounts", - "Monitor/moderate the Python Users in Astronomy Facebook group", - "Keep track of/help organize presence in conferences and workshops", - "Maintain infrastructure for communication channels (e.g., Discourse)" - ] - } - }, - { - "role": "Learn Team", - "url": "Learn_team", - "role-head": "Learn Team", - "sub-roles": [ - { - "role": "Coordinators", - "people": [ - "Clara Brasseur" - ] - }, - { - "role": "Learn content and infrastructure", - "people": [ - "Lia Corrales", - "Kelle Cruz", - "Matt Craig", - "Adrian Price-Whelan", - "Erik Tollerud", - "Jonathan Sick", - "Jeff Jennings" - ] - }, - { - "role": "Workshop Coordinators", - "people": [ - "David Shupe", - "Brett Morris", - "Kelle Cruz" - ] - } - ], - "responsibilities": [ - { - "subrole-head": "Coordinators", - "description": "Oversee the Astropy \"Learn\" ecosystem, including:", - "details": [ - "Ensuring that the documentation, tutorials, and guide materials are internally consistent and cover key areas of the ecosystem", - "Overseeing the maintainers for the aforementioned areas", - "Organizing sprints or other events focused on Astropy learning materials" - ] - }, - { - "subrole-head": "Learn content and infrastructure", - "description": "Maintain the infrastructure and edit content of the Tutorials website, including:", - "details": [ - "Facilitating the display and discoverability of the tutorials", - "Rendering of the Jupyter notebooks", - "Integrated testing of notebooks", - "Reviewing issues and pull requests", - "Soliciting new content as needed" - ] - }, - { - "subrole-head": "Workshop Coordinators", - "description": "Organize and coordinate Astropy workshops for training and outreach to users", - "details": [ - "Maintain the astropy-workshops repository", - "Oversee staffing/volunteers for workshops", - "Identify opportunities for workshops in diverse geographic locations" - ] - } - ] - }, - { - "role": "Affiliated package review editor", - "url": "Affiliated_package_review_editor", - "people": ["Hans Moritz G\u00fcnther", "Derek Homeier"], - "deputy": ["Unfilled"], - "role-head": "Affiliated package review editor", - "responsibilities": { - "description": "Oversee affiliated packages in partnership with pyOpenSci, including:", - "details": [ - "Representing Astropy as pyOpenSci Software Review Editor", - "Keeping track of submissions to the affiliated package ecosystem", - "Guiding submissions through the pre-submission and submission steps to the Peer Review system" - ] - } - }, - { - "role": "Release team", - "url": "release_team", - "people": [ - "Simon Conseil", - "Thomas Robitaille" - ], - "role-head": "Release team", - "responsibilities": { - "description": "Oversee the release process for packages in the project, including:", - "details": [ - "Carrying out releases of the core astropy package", - "Notifying the Distribution Coordinators of any core astropy package release", - "Working with the Community Engagement Coordinator to make release announcements via channels such as mailing lists and social media", - "Keeping documentation for the release process of the core package up to date", - "Designing policies to improve the uniformity of release procedures for the coordinated and infrastructure packages of the Astropy Project", - "Testing the interoperability of the core, coordinated, and infrastructure packages and provide safeguards against breaking the ecosystem." - ] - } - }, - { - "role": "Security team", - "url": "security_team", - "people": [ - "Hans Moritz G\u00fcnther", - "Pey Lian Lim", - "Thomas Robitaille", - "Erik Tollerud" - ], - "role-head": "Security team", - "responsibilities": { - "description": "Organize security reporting and auditing for packages in the project, including:", - "details": [ - "Monitor and reply to security reports (this role needs admin privileges on GitHub to access reports submitted through GitHub's secure reporting form)", - "Coordinate the response to any security report with the relevant package maintainers and outside security experts", - "Coordinate security audits with external experts as needed and available", - "Release CVEs as necessary" - ] - } - }, - { - "role": "Infrastructure and Operations", - "url": "devops_team", - "role-head": "Infrastructure and Operations", - "sub-roles": [ - { - "role": "Technical Lead", - "people": [ - "Pey Lian Lim", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "Testing infrastructure", - "people": [ - "Simon Conseil", - "Pey Lian Lim", - "Thomas Robitaille", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "Documentation infrastructure", - "people": [ - "Simon Conseil", - "Pey Lian Lim", - "Thomas Robitaille", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "Astropy.org web page maintainer", - "people": [ - "Hans Moritz G\u00fcnther", - "Derek Homeier", - "Erik Tollerud" - ] - } - - ], - "responsibilities": [ - { - "subrole-head": "Technical Lead", - "description": "Ensure the smooth running of the project", - "details": [ - "Set up and maintain continuous integration services", - "Move issues between repositories within the organization" - ] - }, - { - "subrole-head": "Testing infrastructure", - "description": "Lead development and maintenance of the testing infrastructure for Astropy and the helpers, including:", - "details": [ - "Managing issues/pull request for the Astropy core package regarding testing infrastructure", - "Managing issues/pull requests in the repositories containing the testing plugins, and determining when new plugins are required", - "Maintaining the 'metapackage' with the testing machinery (pytest-astropy at the time of this writing)", - "Supporting and enabling affiliated package usage of the testing infrastructure" - ] - }, - { - "subrole-head": "Documentation infrastructure", - "description": "Maintain the Astropy documentation website, including:", - "details": [ - "Managing the Sphinx infrastructure", - "Implementing changes and improvements to the documentation website", - "Overseeing content (although primary responsibility for content lies with subpackage maintainers)" - ] - }, - { - "subrole-head": "Astropy.org web page maintainer", - "description": "Manage the astropy.org web site, including:", - "details": [ - "Managing pull requests to the website repository in general", - "Managing data.astropy.org, which is done by managing the astropy-data repository (which is automatically synced with data.astropy.org)", - "Managing the astropy.org DNS entries and related domain name upkeep" - ] - } - ] - }, - { - "role": "Core astropy package maintainer", - "url": "Subpackage_maintainer", - "role-head": "Sub-package maintainer (at least one per core package sub-package)", - "sub-roles": [ - { - "role": "General", - "people": [ - "Derek Homeier", - "Pey Lian Lim", - "Cl\u00e9ment Robert", - "Ole Streicher" - ] - }, - { - "role": "astropy.constants", - "people": [ - "David Shupe", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.convolution", - "people": [ - "Larry Bradley", - "Axel Donath", - "Adam Ginsburg" - ] - }, - { - "role": "astropy.coordinates", - "people": [ - "Stuart Littlefair", - "Adrian Price-Whelan", - "Eero Vaher", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.cosmology", - "people": [ - "Nathaniel Starkman" - ] - }, - { - "role": "astropy.io.ascii", - "people": [ - "Tom Aldcroft", - "Hans Moritz G\u00fcnther", - "Derek Homeier" - ] - }, - { - "role": "astropy.io.fits", - "people": [ - "Simon Conseil", - "Thomas Robitaille" - ] - }, - { - "role": "astropy.io.misc", - "people": [ - "Matteo Bachetti" - ] - }, - { - "role": "astropy.io.votable", - "people": [ - "Thomas Boch", - "Tom Donaldson", - "Pey Lian Lim" - ] - }, - { - "role": "astropy.modeling", - "people": [ - "Nadia Dencheva", - "Perry Greenfield", - "William Jamieson" - ] - }, - { - "role": "astropy.nddata", - "people": [ - "Matt Craig", - "Brett Morris" - ] - }, - { - "role": "astropy.samp", - "people": [ - "Unfilled" - ] - }, - { - "role": "astropy.stats", - "people": [ - "Larry Bradley" - ] - }, - { - "role": "astropy.table", - "people": [ - "Tom Aldcroft", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.time", - "people": [ - "Tom Aldcroft", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.timeseries", - "people": [ - "Thomas Robitaille", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "astropy.uncertainties", - "people": [ - "Erik Tollerud", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.units", - "people": [ - "Nathaniel Starkman", - "Marten van Kerkwijk" - ] - }, - { - "role": "astropy.utils", - "people": [ - "Pey Lian Lim", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "astropy.visualization", - "people": [ - "Larry Bradley", - "Stuart Mumford", - "Thomas Robitaille" - ] - }, - { - "role": "astropy.wcs", - "people": [ - "Mihai Cara, Nadia Dencheva" - ] - } - ], - "responsibilities": [ - { - "subrole-head": "General maintainer", - "description": "Maintain the astropy core package in aspects that are not specific to a single sub-package, including:", - "details": [ - "Evaluating new pull requests for quality, API consistency, Astropy coding standards, and appropriateness within the overall astropy ecosystem, in particular for pull requests spanning multiple sub-packages", - "Merging Pull Requests that are non-controversial or after reaching out to relevant subpackage maintainers", - "Maintain, review, and advocate for useful interaction between multiple sub-packages", - "Perform initial triaging of issues and pull requests", - "Keeping track of frequent contributors and their relevant areas of expertise" - ] - }, - { - - "subrole-head": "Sub-package maintainer", - "description": "Maintain a sub-package of the astropy core package, including:", - "details": [ - "Evaluating new pull requests for quality, API consistency, Astropy coding standards, and appropriateness within the overall astropy ecosystem", - "Merging Pull Requests in the sub-package", - "Keeping track of the \u201cbig picture\u201d progress of the sub-package - includes new feature development and significant bugs", - "Perform initial triaging of issues and pull requests", - "Keeping track of frequent contributors to the sub-package and their relevant areas of expertise" - ] - } - ] - }, - { - "role": "Coordinated package maintainer", - "url": "Coordinated_package_maintainer", - "role-head": "Astropy coordinated package maintainer", - "sub-roles": [ - { - "role": "astroquery", - "people": [ - "Clara Brasseur", - "Adam Ginsburg", - "Brigitta Sip\u0151cz" - ] - }, - { - "role": "astropy-healpix", - "people": [ - "Thomas Robitaille", - "Leo Singer" - ] - }, - { - "role": "photutils", - "people": [ - "Larry Bradley" - ] - }, - { - "role": "ccdproc", - "people": [ - "Matt Craig" - ] - }, - { - "role": "specutils", - "people": [ - "Adam Ginsburg", - "Ricky O'Steen", - "Erik Tollerud" - ] - }, - { - "role": "reproject", - "people": [ - "Stuart Mumford", - "Thomas Robitaille", - "Sam Van Kooten" - ] - }, - { - "role": "regions", - "people": [ - "Larry Bradley", - "Adam Ginsburg" - ] - }, - { - "role": "asdf-astropy", - "people": [ - "Nadia Dencheva", - "Perry Greenfield", - "Brett Graham" - ] - }, - { - "role": "specreduce", - "people": [ - "Tim Pickering", - "Erik Tollerud", - "Kyle Conroy", - "Clare Shanahan", - "Hannu Parviainen" - ] - } - ], - "responsibilities": { - "description": "Maintain an astropy coordinated package, including:", - "details": [ - "Maintaining the github repository for the coordinated package", - "Maintaining the coordinated package's infrastructure (usually via the helpers and package template)", - "Monitoring features and bringing them for inclusion in the core package when relevant", - "All the same responsilities as a sub-package, but for the coordinated package." - ] - } - }, - { - "role": "Dev-telecon coordinator", - "url": "devtelecon_coordinator", - "people": [ - "Hans Moritz G\u00fcnther" - ], - "role-head": "Developer telecon coordinators", - "responsibilities": { - "description": "Organize monthly developer telecons", - "details": [] - } - }, - { - "role": "Distribution coordinator", - "url": "Distribution_coordinator", - "people": [ - "Matt Craig", - "Stuart Mumford", - "Sergio Pascual", - "Ole Streicher", - "Miguel de Val-Borro" - ], - "role-head": "Distribution coordinators", - "responsibilities": { - "description": "Create and maintain binary distribution packages for Astropy core and affiliated packages for a specific OS or package management system.", - "details": [] - } - } -] diff --git a/search.html b/search.html new file mode 100644 index 00000000..86f04c12 --- /dev/null +++ b/search.html @@ -0,0 +1,187 @@ + + + + + + + + + + + + Search — Astropy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + +
        +
        +
        + + Fork me on GitHub + +
        + +

        Search

        +
        + +

        + Please activate JavaScript to enable the search + functionality. +

        +
        +

        + From here you can search these documents. Enter your search + words into the box below and click "search". Note that the search + function will automatically search for all of the words. Pages + containing fewer words won't appear in the result list. +

        +
        + + + +
        + +
        + +
        + +
        +
        +
        +

        Back to top

        +

        + © Copyright 2012, The Astropy Collaboration.
        + Created using Sphinx 1.1.3.
        +

        + +
        +
        + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..07aee83a --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({objects:{},terms:{all:[0,4,6,2],concept:4,queri:4,webchat:1,code:[0,1,3,4,5,6],lian:5,follow:[3,0,4,6],astroml:4,row:4,cython:0,authorit:4,simon:5,depend:[0,1,6],send:[3,5],foster:0,decis:5,under:[0,4],sourc:0,ginsburg:[4,5],util:4,mechan:6,whether:[3,0,4],veri:4,ticket:0,relev:4,nmcell:4,pypinam:4,level:[4,6],gui:6,henri:5,list:[0,1,3,4,5,6],ryan:5,"try":4,barbari:5,team:[6,5],div:0,refer:6,pleas:[3,0,1,4,5],prevent:6,kowalik:5,direct:6,nair:5,sign:[0,4],second:0,design:5,pypi_transl:4,download:[0,4,6],further:6,victor:5,even:[3,4],url_transl:4,compar:4,repli:1,abl:6,candiat:4,uniform:6,current:[0,4,6,2],version:[0,2],axel:5,conduct:3,"new":[3,4,6],net:1,ever:6,method:6,ongo:0,widget:4,zach:5,gener:[4,6],never:6,privat:1,matplotlib:[4,6],leo:5,satisfi:6,address:1,layout:6,becom:4,valu:6,madhura:5,convert:4,urlcel:4,jame:5,prasanth:5,extrem:1,chang:[3,0,4],woillez:5,via:[3,6],modul:4,pypicel:4,prefer:[3,1],ask:0,href:4,instal:[0,4,6],should:[0,1,4,6],unit:5,plot:4,from:[0,1,4,6],would:[0,1,4,6],commun:[3,0,1,4,6],conlei:5,mumford:5,regist:4,websit:[3,0],few:[4,6],edward:5,criteria:6,commite:4,type:4,until:6,oprescu:5,more:[0,4,6],sort:[0,4],"fr\u00e9d\u00e9ric":5,desir:6,relat:4,indic:4,actual:4,baumbach:5,effort:[0,4],cach:4,must:6,none:4,graphic:4,join:[3,0,1],scalabl:4,regdiv:4,setup:0,work:[3,0,4,6],judg:4,dev:[3,0,1,4,5],xhr:4,archiv:0,can:[3,0,1,6],learn:4,meet:4,want:[3,0],give:[0,1],process:6,registr:1,share:4,templat:[4,6],high:4,tab:4,onlin:4,keep:[1,6],alwai:[4,6],end:4,goal:[4,6],rather:6,anoth:0,write:4,how:[0,1,6],anyon:3,pure:4,chri:5,updat:0,map:4,maintcel:4,resourc:4,dencheva:5,rudi:5,pyfit:0,"20affili":4,befor:[4,6],date:0,pdf:4,data:4,grow:6,insertrow:4,github:[3,0,1],bind:4,spectra:6,element:4,issu:[3,0,1,4],maintain:4,allow:[0,6],devdoc:0,order:[4,6],talk:0,feedback:1,astropys:4,over:[3,6],beaumont:5,becaus:[4,6],barrett:5,robitail:[4,5],report:[3,0,4],paper:0,flexibl:4,grollier:5,streamlin:4,style:6,group:[1,4],fit:[4,6],fix:3,urltext:4,onc:6,mail:[3,0,1,5],main:6,easier:4,them:6,scipi:6,"return":4,thei:6,python:[3,0,4,6],wolfgang:5,initi:[0,6],framework:[4,6],getelementbyid:4,facilit:[4,6],geert:5,discuss:[0,1,5],strive:6,choic:[4,6],term:6,document:[0,2,3,4,5,6],alex:5,name:[4,5],anyth:4,photometri:[4,6],tstat:4,astronom:[4,6],slide:0,mean:6,zabalza:5,neil:5,citat:0,michael:5,individu:4,idea:3,procedur:6,heavi:4,contributor:5,astropi:[0,1,2,3,4,5,6],significantli:4,populatet:4,logo:[0,5],engin:4,rpocel:4,special:6,out:[1,4,6],canvas:4,open:[0,4,5],crucial:4,astroqueri:4,research:0,daniel:5,"_email_with_name_regex":4,correct:4,hogan:5,shiga:5,benjamin:5,after:3,stable_transl:4,hang:1,free:1,standard:[4,6],standalon:6,reason:4,believ:0,releas:[0,6],org:[0,4],nmarr:4,featur:[0,4],promptli:0,wai:[3,0,1],could:[0,4,6],david:5,length:4,outsid:6,adrian:5,getelementsbytagnam:4,think:4,first:[0,4,6],origin:[0,6],softwar:[3,4],major:[0,4],notifi:3,directli:[0,4,6],christoph:5,demitri:5,arrai:4,independ:6,qualiti:[4,6],number:6,moritz:5,mai:[4,6],instruct:[3,0,4],alreadi:[3,0,6],done:6,wrapper:4,stabl:[0,4,6,2],agre:6,miss:5,differ:[3,6],"long":[4,6],script:[4,6],interact:4,system:[4,6],messag:4,sortord:4,aldcroft:5,tom:5,white:0,tool:[4,6],alan:5,insertcel:4,part:[4,6],exactli:6,technic:0,png:4,"20packag":4,grew:5,whenev:6,provid:[0,4,6],seamlessli:6,tree:6,structur:4,"g\u00fcnther":5,project:[3,0,4,6,5],reus:4,transport:4,browser:4,conseil:5,viewer:4,craig:5,modern:4,ani:[3,0,1,4,6],packag:[0,1,3,4,5,6],larri:5,perri:5,have:[0,1,3,4,5,6],tabl:[4,6],need:[4,6],take:0,turner:5,"null":4,seek:6,photutil:4,connelli:5,gustavo:5,lim:5,bradlei:5,contact:4,note:[0,4],also:[0,1,4,6],client:1,maintainer_transl:4,which:[1,4,6],thoma:[4,5],subject:4,juli:6,channel:1,pontzen:5,simplifi:0,sure:[3,4],unless:6,exec:4,track:6,price:5,who:[3,6],reach:6,most:0,plan:0,phase:6,"class":[0,4,6],singer:5,don:3,correctli:0,url:4,doc:[0,4],adopt:6,cover:4,face:4,bibtex:0,determin:4,latest:[0,2],text:[0,4],maint:4,pkg:4,astrophys:4,fine:4,affil:4,involv:0,consolid:6,onli:6,locat:6,explain:4,hanlei:5,activ:[0,6],figur:4,than:6,configur:4,theme:5,nadia:5,local:4,asciit:0,decid:6,contribut:[3,5],get:[3,0,1],googlegroup:1,spectroscop:4,express:4,pypi:[4,6],muna:5,cannot:6,increas:6,requir:[0,4,6],"terr\u00f3n":5,organ:[3,6],pkgnm:4,"public":[0,4],blanton:4,common:6,contain:6,jeschke:4,weaver:5,where:[0,6],vision:[0,6],set:6,julien:5,pynbodi:5,specutil:4,around:4,fail:4,best:[0,4],concern:6,awar:0,still:4,shupe:5,databas:4,someth:0,particip:1,enough:6,stall:6,donath:5,between:[0,6],"import":[0,6],irc:1,across:[0,6],deil:5,altern:0,kei:6,javascript:4,barentsen:5,extens:4,entir:6,here:[3,0],ipython:0,"_email_regex":4,come:0,addit:[0,4,6],both:4,easi:[4,6],numpydoc:4,comment:1,etc:6,present:0,committe:[4,6],improv:[1,4],brai:5,com:[0,1],clone:0,jeff:5,color:4,guidelin:4,innerhtml:4,droettboom:5,taylor:5,guid:0,summar:6,duplic:6,mailto:4,ultim:6,strong:6,chrome:4,patch:[3,6],numpi:[0,6],mark:4,compon:[0,6],hagen:5,json:4,much:[4,6],interest:[3,1,4],thereaft:6,futur:[4,6],wait:6,crawford:5,wish:[0,6],imag:4,andrew:5,mine:4,coordin:[4,6,5],understand:1,"bragan\u00e7a":5,andrea:5,impati:1,davi:5,"case":6,interoper:[0,4],look:0,aim:[4,6],whelan:5,abov:0,error:0,everyon:5,ginga:4,cell:4,readi:4,toolkit:6,itself:6,routin:4,sever:[1,4],scienc:4,develop:[0,1,2,3,4,6],welcom:[3,1],credit:5,suggest:[0,4],make:[3,0,4,6],format:4,access:[1,4,6],pkgi:4,member:4,complex:6,home_url:4,pan:4,higher:6,competit:6,http:[0,1,4],upon:6,capabl:4,jqueri:4,user:[0,1,4,6],mani:[3,0,6,5],robust:6,wherev:4,stablecel:4,mosaic:4,recent:0,task:[4,6],center:4,discourag:6,thu:6,kyle:5,without:1,exampl:6,command:4,thi:[0,1,3,4,5,6],undefin:4,everyth:6,ferguson:5,load:4,pywc:0,identifi:6,erben:5,eventu:6,kramer:5,obtain:0,collabor:0,aspect:0,bressert:[4,5],paul:5,web:4,eli:[4,5],han:5,parikh:5,point:1,help:[0,1,6],overview:0,els:4,transit:6,match:4,build:[0,6],"_email_regex_str":4,quirk:4,read:[0,4],foundat:3,consensu:6,realiz:4,pypi_nam:4,repo_url:4,emma:5,like:[0,1,4],success:0,eric:4,changelog:0,zoom:4,server:4,benefit:6,api:4,necessari:4,singl:[0,6],output:4,page:[3,4,5],"function":[4,6],jean:5,www:0,repocel:4,often:1,acknowledg:[0,1],twitter:0,some:[4,6],deleterow:4,adequ:4,ncol:4,home:4,librari:[4,6],affili:[3,4,6],implement:6,montag:4,avoid:6,cut:4,fox:5,tracker:[3,0],leav:4,pei:5,reproduc:4,either:[3,6],machin:4,core:[0,1,3,4,5,6],encourag:[1,6],run:4,power:4,journal:0,usag:4,docstr:4,pascual:5,repositori:[3,0,4,6,5],hsu:5,regexp:4,post:1,sphinx:4,unsaf:4,about:4,central:6,column:4,preclud:6,logo_bann:0,addition:4,idl:4,integr:[3,6],stuart:5,kerzendorf:5,produc:4,compil:4,own:6,greenfield:5,primarili:6,sergio:5,automat:[0,4],appropri:4,steven:5,ensur:6,your:[3,0,1,4,5],merg:0,inclus:6,git:0,van:5,val:5,area:6,support:[4,6],question:0,submit:[3,6],avail:[0,4,6],start:[3,0,6],reli:6,joseph:5,interfac:[4,6],includ:[0,1,4,6],suit:4,"var":4,strict:4,analysi:4,head:3,marten:5,roban:5,form:[4,6],kerkwijk:5,bundl:4,basic:4,continu:6,link:[0,4,2],grate:0,tollerud:5,bug:0,freenod:1,pull:[3,1,6,5],made:[0,6],consist:6,possibl:[4,6],"default":6,crighton:5,"v\u00edctor":5,displai:4,below:[0,2],miguel:5,those:6,email:5,connect:4,bell:5,aplpi:4,later:[0,6],creat:[3,4],request:[3,1,4,6,5],dure:6,miruna:5,indeci:4,exist:6,erik:5,file:4,pip:0,check:0,googl:1,titl:0,when:4,detail:[0,4],borro:5,other:[0,1,3,4,5,6],kacper:5,varieti:4,test:[4,6],you:[3,0,1,4,5],fork:3,intend:[4,6],registri:4,astronomi:[3,0,4,6],matt:5,intens:4,intent:3,consid:[4,6],stai:0,reduc:6,mosaick:4,algorithm:4,svg:[0,4],getjson:4,geometr:4,adam:[4,5],potenti:6,time:[3,0,6],manifesto:6,kcorrect:4},objtypes:{},titles:["How to start working with Astropy","Astropy Feedback (and getting help)","Astropy Documentation","Contributing to Astropy","About affiliated packages","The Astropy Team","Vision for a Common Astronomy Python Package"],objnames:{},filenames:["index","feedback/index","docs","contributing","affiliated/index","team","vision"]}) \ No newline at end of file diff --git a/team.html b/team.html index 16ee2a22..83908f28 100644 --- a/team.html +++ b/team.html @@ -1,785 +1,256 @@ - - - - - - - - - - - - - - -Astropy Team - - - - - - - -
        - - -
        -

        Astropy Team

        - -

        Roles

        - -

        The Astropy project is made possible through the efforts of - community members that perform numerous important roles. This - encompasses a broad scope of responsibilities ranging from - direct package development to communication, distribution, and - managerial activities. In this section we list the identified - project roles and responsible parties, to provide members with a - point-of-contact for individual tasks and to give the project an - overview of the current state of the team. Different roles on this - page have very different scope and effort needed to perform them. - Listing on this page is also not mean to be any particular assignment - of credit beyond that implict in having the responsibilities of the role. - See the Astropy project role - responsibilities section below for a full description of each - role. - -

        We are always looking for interested community members to fill empty roles and to join existing - teams. Community members may volunteer or nominate someone else for any role by emailing - coordinators@astropy.org or by getting in - touch with the current team. -

        - - - - - - - - - - -
        RoleSub-rolePerson/People (last name alphabetical)
        - -
        - -
        -

        Astropy Project Role Responsibilities

        - -

        The Astropy project is made possible through the efforts of - community members that perform numerous important roles. This - encompasses a broad scope of responsibilities ranging from direct - package development to communication, distribution, and managerial - activities. In this section we list the responsibilities for each of - the identified project roles. The list of people fulfilling these - roles is found in the Roles section. - Committee/Team specific policies and communication methods are outlined in the - Astropy Policies - readme document. -

        - -
        -
        - -
        -

        Voting Members

        -

        - The Voting Members are the group of trusted individuals who operate the Astropy Project on behalf of the community. - Their role and responsibilites are defined in The Astropy Project Governance Charter (APE 0). -

        - -

        Active Voting Members

        -
          -
        • Tom Aldcroft
        • -
        • Larry Bradley
        • -
        • Clara Brasseur
        • -
        • Michael K. Brewer
        • -
        • Mihai Cara
        • -
        • Simon Conseil
        • -
        • Lia Corrales
        • -
        • Matt Craig
        • -
        • Kelle Cruz
        • -
        • Nadia Dencheva
        • -
        • Nicholas Earl
        • -
        • Tom Donaldson
        • -
        • Wilfred Gee
        • -
        • Adam Ginsburg
        • -
        • Lauren Glattly
        • -
        • Perry Greenfield
        • -
        • Moritz Günther
        • -
        • Derek Homeier
        • -
        • William Jamieson
        • -
        • Pey Lian Lim
        • -
        • Stuart Littlefair
        • -
        • Brett Morris
        • -
        • Stuart Mumford
        • -
        • Ricky O'Steen
        • -
        • Aarya Patil
        • -
        • Tim Pickering
        • -
        • Adrian Price-Whelan
        • -
        • Clément Robert
        • -
        • Thomas Robitaille
        • -
        • Albert Y. Shih
        • -
        • David Shupe
        • -
        • Jonathan Sick
        • -
        • Leo Singer
        • -
        • Brigitta Sipőcz
        • -
        • Nathaniel Starkman
        • -
        • Ole Streicher
        • -
        • John Swinbank
        • -
        • Erik Tollerud
        • -
        • James Turner
        • -
        • Marten van Kerkwijk
        • -
        • Eero Vaher
        • -
        • Benjamin Alan Weaver
        • -
        - -

        Emeritus Voting Members

        -
          -
        • E. Madison Bray
        • -
        • Juan Luis Cano Rodríguez
        • -
        • Steve Crawford
        • -
        • Michael Droettboom
        • -
        • Michael Seifert
        • -
        • Edward Slavich
        • -
        • Zé Vinícius
        • -
        -

        - -
        - -
        -

        Contributors

        - -

        Astropy project packages are under continuous development by professional astronomers and software developers from around the world. The Project is community-driven, with decisions generally made by consensus, but with oversight and organization provided by the coordinating committee.

        - -

        Core Package Contributors

        -
          - -
        • Aaron Meisner
        • -
        • Aarya Patil
        • -
        • Abdu Zoghbi
        • -
        • Abhinuv Nitin Pitale
        • -
        • Abigail Stevens
        • -
        • Adam Broussard
        • -
        • Adam Ginsburg
        • -
        • Adele Plunkett
        • -
        • Aditya Sharma
        • -
        • Adrian Price-Whelan
        • -
        • Akash Deshpande
        • -
        • Akeem
        • -
        • Akshat Dixit
        • -
        • Akshat1Nar
        • -
        • Al Niessner
        • -
        • Albert Y. Shih
        • -
        • Albert Zhang
        • -
        • Aleh Khvalko
        • -
        • Alex Conley
        • -
        • Alex de la Vega
        • -
        • Alex Drlica-Wagner
        • -
        • Alex Hagen
        • -
        • Alex Rudy
        • -
        • Alexander Bakanov
        • -
        • Alexandre Beelen
        • -
        • Alexandre R. Bomfim Junior
        • -
        • Alfio Puglisi
        • -
        • Alpha-Ursae-Minoris
        • -
        • Amit Kumar
        • -
        • AMHermansen
        • -
        • Ana Posses
        • -
        • Anany Shrey Jain
        • -
        • Anchit Jain
        • -
        • Andreas Baumbach
        • -
        • Andreas Faisst
        • -
        • Andrej Rode
        • -
        • Andrew Hearin
        • -
        • Andrii Oriekhov
        • -
        • Aniket Kulkarni
        • -
        • Aniket Sanghi
        • -
        • Anirudh Katipally
        • -
        • Anne Archibald
        • -
        • Antetokounpo
        • -
        • Anthony Horton
        • -
        • Antony Lee
        • -
        • Arfon Smith
        • -
        • Arie Kurniawan
        • -
        • Arne de Laat
        • -
        • Arthur Eigenbrot
        • -
        • Asish Panda
        • -
        • Asra Nizami
        • -
        • arthurxvtv
        • -
        • athul
        • -
        • Austen Groener
        • -
        • Axel Donath
        • -
        • Azalee Bostroem
        • -
        • Bastian Beischer
        • -
        • Ben Greiner
        • -
        • Benjamin Alan Weaver
        • -
        • Benjamin Roulston
        • -
        • Benjamin Winkel
        • -
        • Bernardo Sulzbach
        • -
        • Bernie Simon
        • -
        • Bhavya Khandelwal
        • -
        • Bharath Saiguha
        • -
        • Bili Dong
        • -
        • Bill Cleveland
        • -
        • Bogdan Nicula
        • -
        • Bojan Nikolic
        • -
        • Brandie-M
        • -
        • Brett Graham
        • -
        • Brett Morris
        • -
        • Brett Woltz
        • -
        • Brian Soto
        • -
        • Brigitta Sipőcz
        • -
        • britgit
        • -
        • Bruce Merry
        • -
        • Bruno Oliveira
        • -
        • Bryce Kalmbach
        • -
        • Bryce Nordgren
        • -
        • Caden Gobat
        • -
        • CaioCoutinhoP
        • -
        • Carl Osterwisch
        • -
        • Carl Schaffer
        • -
        • Chiara Marmo
        • -
        • Chris Beaumont
        • -
        • Chris Hanley
        • -
        • Chris Osborne
        • -
        • Chris Simpson
        • -
        • Christian Clauss
        • -
        • Christian Hettlage
        • -
        • Christoph Deil
        • -
        • Christoph Gohlke
        • -
        • Christopher Bonnett
        • -
        • Chun Ly
        • -
        • Clara Brasseur
        • -
        • Clare Shanahan
        • -
        • Clément Robert
        • -
        • Conor MacBride
        • -
        • Cristian Ardelean
        • -
        • Curtis McCully
        • -
        • Dan Foreman-Mackey
        • -
        • Dan P. Cunningham
        • -
        • Dan Taranu
        • -
        • Daniel Bell
        • -
        • Daniel D'Avella
        • -
        • Daniel Datsev
        • -
        • Daniel Lenz
        • -
        • Daniel Ruschel Dutra
        • -
        • Daniel Ryan
        • -
        • Danny Goldstein
        • -
        • Dany Vohl
        • -
        • Daria Cara
        • -
        • David Kirkby
        • -
        • David M. Palmer
        • -
        • David Paz
        • -
        • David Pérez-Suárez
        • -
        • David Shiga
        • -
        • David Shupe
        • -
        • David Stansby
        • -
        • Deen-Dot
        • -
        • Demitri Muna
        • -
        • Derek Homeier
        • -
        • Devin Crichton
        • -
        • Diego Alonso
        • -
        • Diego Asterio de Zaballa
        • -
        • disha
        • -
        • Dominik Klaes
        • -
        • Doron Behar
        • -
        • Doug Branton
        • -
        • Douglas Burke
        • -
        • Drew Leonard
        • -
        • Duncan Macleod
        • -
        • Dylan Gregersen
        • -
        • E. Madison Bray
        • -
        • E. Rykoff
        • -
        • E.C. Herenz
        • -
        • Eduardo Olinto
        • -
        • Edward Betts
        • -
        • Edward Slavich
        • -
        • Eero Vaher
        • -
        • Eli Bressert
        • -
        • Elijah Bernstein-Cooper
        • -
        • Eloy Salinas
        • -
        • Emily Deibert
        • -
        • Emir
        • -
        • Emma Hogan
        • -
        • Eric Depagne
        • -
        • Eric Jeschke
        • -
        • Eric Koch
        • -
        • Erik Tollerud
        • -
        • Erin Allard
        • -
        • Esteban Pardo Sánchez
        • -
        • Even Rouault
        • -
        • Evert Rol
        • -
        • Felipe Cybis Pereira
        • -
        • Felipe Gameleira
        • -
        • Felix Yan
        • -
        • fockez
        • -
        • Francesc Vilardell
        • -
        • Francesco Biscani
        • -
        • Francesco Montanari
        • -
        • Francesco Montesano
        • -
        • Frazer McLean
        • -
        • Frédéric Chapoton
        • -
        • Frédéric Grollier
        • -
        • Gabe Brammer
        • -
        • Gabriel Brammer
        • -
        • Gabriel Perren
        • -
        • Geert Barentsen
        • -
        • George Galvin
        • -
        • Georgiana Ogrean
        • -
        • Gerrit Schellenberger
        • -
        • Giang Nguyen
        • -
        • Giorgio Calderone
        • -
        • Gordon Gibb
        • -
        • Graham Kanarek
        • -
        • Grant Jenks
        • -
        • Gregory Dubois-Felsmann
        • -
        • Gregory Simonian
        • -
        • Griffin Hosseinzadeh
        • -
        • Gustavo Bragança
        • -
        • Gyanendra Shukla
        • -
        • Hannes Breytenbach
        • -
        • Hans Moritz Günther
        • -
        • Harry Ferguson
        • -
        • Heinz-Alexander Fuetterer
        • -
        • Henrike F
        • -
        • Henry Schreiner
        • -
        • Helen Sherwood-Taylor
        • -
        • Hélvio Peixoto
        • -
        • Himanshu Pathak
        • -
        • homeboy445
        • -
        • Hood Chatham
        • -
        • Hsin Fan
        • -
        • Hugo Buddelmeijer
        • -
        • Humna Awan
        • -
        • iamsoto
        • -
        • ikkamens
        • -
        • Inada Naoki
        • -
        • J. Goutin
        • -
        • J. Xavier Prochaska
        • -
        • Jake VanderPlas
        • -
        • Jakob Maljaars
        • -
        • James Davies
        • -
        • James Dearman
        • -
        • James Noss
        • -
        • James O'Keeffe
        • -
        • James Taylor
        • -
        • James Tocknell
        • -
        • James Turner
        • -
        • Jamie Kennea
        • -
        • Jan Skowron
        • -
        • Jane Rigby
        • -
        • Jani Šumak
        • -
        • Jason Segnini
        • -
        • Javier Pascual Granado
        • -
        • JC Hsu
        • -
        • Jean Connelly
        • -
        • Jeff Jennings
        • -
        • Jeff Taylor
        • -
        • Jeffrey McBeth
        • -
        • Jero Bado
        • -
        • jimboH
        • -
        • Jo Bovy
        • -
        • Joanna Power
        • -
        • Joe Hunkeler
        • -
        • Joe Lyman
        • -
        • Joe Philip Ninan
        • -
        • John Fisher
        • -
        • John Parejko
        • -
        • Johnny Greco
        • -
        • Jonas Große Sundrup
        • -
        • Jonas Kemmer
        • -
        • Jonathan Eisenhamer
        • -
        • Jonathan Foster
        • -
        • Jonathan Sick
        • -
        • Jonathan Whitmore
        • -
        • Jörg Dietrich
        • -
        • Jose Sabater
        • -
        • Joseph Jon Booker
        • -
        • Joseph Long
        • -
        • Joseph Ryan
        • -
        • Joseph Schlitz
        • -
        • José Sabater Montes
        • -
        • Jost Migenda
        • -
        • JP Maia
        • -
        • Juan Luis Cano Rodríguez
        • -
        • Juanjo Bazán
        • -
        • Julien Woillez
        • -
        • Jurien Huisman
        • -
        • Kacper Kowalik
        • -
        • Karan Grover
        • -
        • Karl Gordon
        • -
        • Karl Vyhmeister
        • -
        • Karl Wessel
        • -
        • Katrin Leinweber
        • -
        • Kelle Cruz
        • -
        • Kevin Gullikson
        • -
        • Kevin Sooley
        • -
        • Kewei Li
        • -
        • Kieran Leschinski
        • -
        • Kirill Tchernyshyov
        • -
        • Kris Stern
        • -
        • Kristin Berry
        • -
        • Kunam Balaram Reddy
        • -
        • Kyle Barbary
        • -
        • Kyle Conroy
        • -
        • Kyle Oman
        • -
        • kYwzor
        • -
        • Larry Bradley
        • -
        • Laura Hayes
        • -
        • Laura Watkins
        • -
        • Lauren Glattly
        • -
        • Laurent Michel
        • -
        • Laurie Stephey
        • -
        • Leah Fulmer
        • -
        • Lee Spitler
        • -
        • Lehman Garrison
        • -
        • Lennard Kiehl
        • -
        • Leo Singer
        • -
        • Leonardo Ferreira
        • -
        • Lia Corrales
        • -
        • Lily Fahey
        • -
        • Lingyi Hu
        • -
        • Lisa Martin
        • -
        • Lisa Walter
        • -
        • Lu Xu
        • -
        • Ludwig Schwardt
        • -
        • Luigi Paioro
        • -
        • Luke G. Bouma
        • -
        • Luke Kelley
        • -
        • Luz Paz
        • -
        • Léni Gauffier
        • -
        • M Atakan Gürkan
        • -
        • M S R Dinesh
        • -
        • Mabry Cervin
        • -
        • Madhura Parikh
        • -
        • Magali Mebsout
        • -
        • maggiesam
        • -
        • Maik Nijhuis
        • -
        • Malynda Chizek Frouard
        • -
        • Manas Satish Bedmutha
        • -
        • Maneesh Yadav
        • -
        • Mangala Gowri Krishnamoorthy
        • -
        • Manish Biswas
        • -
        • Manodeep Sinha
        • -
        • Manon Marchand
        • -
        • Marcello Nascif
        • -
        • Mark Fardal
        • -
        • Mark Taylor
        • -
        • Markus Demleitner
        • -
        • Marten van Kerkwijk
        • -
        • Martin Dyer
        • -
        • Martin Glatzle
        • -
        • Matej Stuchlik
        • -
        • Mathieu Servillat
        • -
        • Matt Davis
        • -
        • Matteo Bachetti
        • -
        • Matthew Bourque
        • -
        • Matthew Brett
        • -
        • Matthew Craig
        • -
        • Matthew Petroff
        • -
        • Matthew Pitkin
        • -
        • Matthew Turk
        • -
        • Matthias Bussonnier
        • -
        • Mavani Bhautik
        • -
        • Max Mahlke
        • -
        • Max Silbiger
        • -
        • Max Voronkov
        • -
        • Maximilian Linhoff
        • -
        • Maximillian Weber
        • -
        • Médéric Boquien
        • -
        • Megan Sosey
        • -
        • Melissa Weber Mendonça
        • -
        • Michael Brewer
        • -
        • Michael Droettboom
        • -
        • Michael Hirsch
        • -
        • Michael Hoenig
        • -
        • Michael Kelley
        • -
        • Michael Lindner-D'Addario
        • -
        • Michael Mueller
        • -
        • Michael Seifert
        • -
        • Michael Wood-Vasey
        • -
        • Michael Zhang
        • -
        • Michele Costa
        • -
        • Michele Mastropietro
        • -
        • Michele Peresano
        • -
        • Michiel De Wilde
        • -
        • Miguel de Val-Borro
        • -
        • Mihai Cara
        • -
        • Mike Alexandersen
        • -
        • Mike McCarty
        • -
        • Mikhail Minin
        • -
        • Mikołaj
        • -
        • Miruna Oprescu
        • -
        • Moataz Hisham
        • -
        • Mohan Agrawal
        • -
        • Molly Peeples
        • -
        • Mridul Seth
        • -
        • Mubin Manasia
        • -
        • mzhengxi
        • -
        • Nabil Freij
        • -
        • Nadia Dencheva
        • -
        • Nathanial Hendler
        • -
        • Nathaniel Starkman
        • -
        • Neal McBurnett
        • -
        • Neil Crighton
        • -
        • Neil Parley
        • -
        • Nicholas Earl
        • -
        • Nicholas S. Kern
        • -
        • Nicholas Saunders
        • -
        • Nick Lloyd
        • -
        • Nick Murphy
        • -
        • Nicolas Tessore
        • -
        • Nikita Saxena
        • -
        • Nikita Tewary
        • -
        • Nimit Bhardwaj
        • -
        • Noah Zuckman
        • -
        • Nora Luetzgendorf
        • -
        • odidev
        • -
        • Ole Streicher
        • -
        • Orion Poplawski
        • -
        • omahs
        • -
        • orionlee
        • -
        • Param Patidar
        • -
        • Parikshit Sakurikar
        • -
        • Patricio Rojo
        • -
        • Patti Carroll
        • -
        • Paul Barrett
        • -
        • Paul Hirst
        • -
        • Paul Huwe
        • -
        • Paul Price
        • -
        • Paul Sladen
        • -
        • Pauline Barmby
        • -
        • Perry Greenfield
        • -
        • Peter Cock
        • -
        • Peter Teuben
        • -
        • Peter Yoachim
        • -
        • Pey Lian Lim
        • -
        • Piyush Sharma
        • -
        • Porter Averett
        • -
        • Prajwel Joseph
        • -
        • Prasanth Nair
        • -
        • Pratik Patel
        • -
        • Pritish Chakraborty
        • -
        • Pushkar Kopparla
        • -
        • Raghuram Devarakonda
        • -
        • Ralf Gommers
        • -
        • Rashid Khan
        • -
        • Rasmus Handberg
        • -
        • Ray Plante
        • -
        • Régis Terrier
        • -
        • Ricardo Fonseca
        • -
        • Ricardo Ogando
        • -
        • Richard R
        • -
        • Ricky O'Steen
        • -
        • Rik van Lieshout
        • -
        • Ritiek Malhotra
        • -
        • Ritwick DSouza
        • -
        • Roban Hultman Kramer
        • -
        • Robel Geda
        • -
        • Robert Cross
        • -
        • Robert Queenin
        • -
        • Rocio Kiman
        • -
        • Rohan Rajpal
        • -
        • Rohit Kapoor
        • -
        • Rohit Patil
        • -
        • Roland Weber
        • -
        • Roman Tolesnikov
        • -
        • Roy Smart
        • -
        • Rui Xue
        • -
        • Ryan Abernathey
        • -
        • Ryan Cooke
        • -
        • Ryan Fox
        • -
        • Sadie Bartholomew
        • -
        • Sam Holt
        • -
        • Sam Van Kooten
        • -
        • Sam Verstocken
        • -
        • Samruddhi Khandale
        • -
        • Samuel Brice
        • -
        • Sandeep Desai
        • -
        • Sanjeev Dubey
        • -
        • Sara Ogaz
        • -
        • Sarah Graves
        • -
        • Sarah Kendrew
        • -
        • Sarah Weissman
        • -
        • Saransh Chopra
        • -
        • Sashank Mishra
        • -
        • sashmish
        • -
        • Saurav Sachidanand
        • -
        • Scott Thomas
        • -
        • Sébastien Maret
        • -
        • Sebastian Meßlinger
        • -
        • Sedona Price
        • -
        • Semyeong Oh
        • -
        • Serge Montagnac
        • -
        • Sergio Pascual
        • -
        • Shaheer Ahmad
        • -
        • Shailesh Ahuja
        • -
        • Shane Maloney
        • -
        • Shankar Kulumani
        • -
        • Shantanu Srivastava
        • -
        • Shilpi Jain
        • -
        • Shivan Sornarajah
        • -
        • Shivansh Mishra
        • -
        • Shresth Verma
        • -
        • Shreyas Bapat
        • -
        • Sigurd Næss
        • -
        • Simon Alinder
        • -
        • Simon Conseil
        • -
        • Simon Gibbons
        • -
        • Simon Liedtke
        • -
        • Simon Torres
        • -
        • Somia Floret
        • -
        • Sourabh Cheedella
        • -
        • Srikrishna Sekhar
        • -
        • srirajshukla
        • -
        • Stefan Becker
        • -
        • Stefan Nelson
        • -
        • Stephen Bailey
        • -
        • Stephen Portillo
        • -
        • Steve Crawford
        • -
        • Steve Guest
        • -
        • Steven Bamford
        • -
        • Stuart Littlefair
        • -
        • Stuart Mumford
        • -
        • Sudheesh Singanamalla
        • -
        • Sushobhana Patra
        • -
        • Suyog Garg
        • -
        • Swapnil Sharma
        • -
        • T. Carl Beery
        • -
        • T. E. Pickering
        • -
        • Tanuj Rastogi
        • -
        • Tanvi Pooranmal Meena
        • -
        • Thais Borges
        • -
        • Thomas J. Fan
        • -
        • Thomas Erben
        • -
        • Thomas Robitaille
        • -
        • Thomas Vandal
        • -
        • Thompson Le Blanc
        • -
        • Tiago Gomes
        • -
        • Tiago Ribeiro
        • -
        • Tiffany Jansen
        • -
        • Tim Gates
        • -
        • Tim Jenness
        • -
        • Tim Plummer
        • -
        • Timothy P. Ellsworth Bowers
        • -
        • Tito Dal Canton
        • -
        • Tom Aldcroft
        • -
        • Tom Donaldson
        • -
        • Tom J Wilson
        • -
        • Tom Kooij
        • -
        • Tomas Babej
        • -
        • Tyler Finethy
        • -
        • Vatsala Swaroop
        • -
        • Victoria Dye
        • -
        • Vinayak Mehta
        • -
        • Vishnunarayan K I
        • -
        • Vital Fernández
        • -
        • Volodymyr Savchenko
        • -
        • VSN Reddy Janga
        • -
        • Víctor Terrón
        • -
        • Víctor Zabalza
        • -
        • Wilfred Tyler Gee
        • -
        • William Jamieson
        • -
        • Wolfgang Kerzendorf
        • -
        • Yannick Copin
        • -
        • Yash Kumar
        • -
        • Yash Nandwana
        • -
        • Yash Sharma
        • -
        • Yingqi Ying
        • -
        • Zac Hatfield-Dodds
        • -
        • Zach Burnett
        • -
        • Zach Edwards
        • -
        • Zachary Kurtz
        • -
        • Zeljko Ivezic
        • -
        • Zhen-Kai Gao
        • -
        • Zhiyuan Ma
        • -
        • Zlatan Vasović
        • -
        • Zé Vinicius
        • -
        - -

        Other Credits

        -
          -
        • Kaylea Nelson for designing this web site.
        • -
        • Kyle Barbary for designing the Astropy logos and documentation themes.
        • -
        • Andrew Pontzen and the pynbody team (For code that grew into astropy.units)
        • -
        • Everyone on astropy-dev and the astropy mailing list for contributing to many discussions and decisions!
        • -
        -

        If you have contributed to the Astropy project and your name is missing, - please send an email to the coordinators, or open a pull request for the credits document in the astropy repository.

        - -
        + -
        - - - - -
        -

        - - The Astropy project is committed to fostering an inclusive community. -

        + + + + + + The Astropy Team — Astropy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + +
        +
        +
        + + Fork me on GitHub + +
        + +
        +

        The Astropy Team

        +
        +

        Astropy Project Coordinators

        +
          +
        • Perry Greenfield
        • +
        • Thomas Robitaille
        • +
        • Erik Tollerud
        • +
        +
        +
        +

        Core Package Contributors

        +
          +
        • Tom Aldcroft
        • +
        • Kyle Barbary
        • +
        • Geert Barentsen
        • +
        • Paul Barrett
        • +
        • Andreas Baumbach
        • +
        • Chris Beaumont
        • +
        • Daniel Bell
        • +
        • Larry Bradley
        • +
        • Gustavo Bragança
        • +
        • Erik M. Bray
        • +
        • Eli Bressert
        • +
        • Alex Conley
        • +
        • Jean Connelly
        • +
        • Simon Conseil
        • +
        • Matt Craig
        • +
        • Steven Crawford
        • +
        • Neil Crighton
        • +
        • Matt Davis
        • +
        • Christoph Deil
        • +
        • Nadia Dencheva
        • +
        • Axel Donath
        • +
        • Michael Droettboom
        • +
        • Zach Edwards
        • +
        • Thomas Erben
        • +
        • Henry Ferguson
        • +
        • Ryan Fox
        • +
        • Adam Ginsburg
        • +
        • Perry Greenfield
        • +
        • Frédéric Grollier
        • +
        • Hans Moritz Günther
        • +
        • Alex Hagen
        • +
        • Emma Hogan
        • +
        • Chris Hanley
        • +
        • JC Hsu
        • +
        • Marten van Kerkwijk
        • +
        • Wolfgang Kerzendorf
        • +
        • Kacper Kowalik
        • +
        • Roban Kramer
        • +
        • Pey Lian Lim
        • +
        • Stuart Mumford
        • +
        • Demitri Muna
        • +
        • Prasanth Nair
        • +
        • Miruna Oprescu
        • +
        • Madhura Parikh
        • +
        • Sergio Pascual
        • +
        • Adrian Price-Whelan
        • +
        • Thomas Robitaille
        • +
        • Alex Rudy
        • +
        • Joseph Ryan
        • +
        • David Shiga
        • +
        • David Shupe
        • +
        • Leo Singer
        • +
        • James Taylor
        • +
        • Jeff Taylor
        • +
        • Víctor Terrón
        • +
        • Erik Tollerud
        • +
        • James Turner
        • +
        • Miguel de Val-Borro
        • +
        • Benjamin Alan Weaver
        • +
        • Julien Woillez
        • +
        • Victor Zabalza
        • +
        +
        +
        +

        Other Credits

        +
          +
        • Kyle Barbary for designing the Astropy logos and documentation themes.
        • +
        • Andrew Pontzen and the pynbody team +(For code that grew into astropy.units)
        • +
        • Everyone on astropy-dev +and the astropy mailing list +for contributing to many discussions and decisions!
        • +
        +

        (If you have contributed to the Astropy project and your name is missing, +please send an email to the coordinators, or +open a pull request for this page +in the astropy repository)

        +
        +
        -
        - - - +
        +
        +

        Back to top

        +

        + © Copyright 2012, The Astropy Collaboration.
        + Created using Sphinx 1.1.3.
        +

        + +
        +
        + + \ No newline at end of file diff --git a/validate_roles.py b/validate_roles.py deleted file mode 100644 index e3a42492..00000000 --- a/validate_roles.py +++ /dev/null @@ -1,73 +0,0 @@ -import os -import sys -import json -from termcolor import cprint - -REQUIRED_KEYS = {"role", "url", "role-head", "responsibilities"} - - -def assert_is_list(i, key, value): - if isinstance(value, list): - return 0 - else: - cprint(f" ERROR: Key \"{key}\" for role #{i} should be a list but instead is a {type(value)}", file=sys.stderr, color='red') - return 1 - - -def assert_is_string(i, key, value): - if isinstance(value, str): - return 0 - else: - cprint(f" ERROR: Key \"{key}\" for role #{i} should be a string but instead is a {type(value)}", file=sys.stderr, color='red') - return 1 - - -jsonfn = "roles.json" -try: - roles = json.load(open(jsonfn)) -except json.decoder.JSONDecodeError as e: - cprint(jsonfn + ' : ' + e.args[0], color='red') - cprint("*** JSON file appears to be malformed - see above ***", color='red') - sys.exit(2) - -error = 0 - -for i, role in enumerate(roles): - if not isinstance(role, dict): - cprint(f" ERROR: Role #{i} is not a key/value set", file=sys.stderr, color='red') - error += 1 - else: - key_difference = REQUIRED_KEYS - set(role.keys()) - if key_difference: - cprint(f" ERROR: Missing key(s) for role #{i}: {key_difference}", file=sys.stderr, color='red') - error += 1 - - error += assert_is_string(i, 'role', role['role']) - error += assert_is_string(i, 'url', role['url']) - error += assert_is_string(i, 'role-head', role['role-head']) - - if 'sub-roles' in role: - if 'people' in role: - cprint(f" ERROR: people should not be defined at top level for role #{i} since sub-roles are defined") - error += 1 - for sub_role in role['sub-roles']: - error += assert_is_string(i, 'sub-roles[role]', sub_role['role']) - error += assert_is_list(i, 'sub-roles[people]', sub_role['people']) - else: - error += assert_is_list(i, 'people', role['people']) - - if isinstance(role['responsibilities'], list): - for resp in role['responsibilities']: - error += assert_is_string(i, 'responsibilities[description]', resp['description']) - for detail in resp['details']: - error += assert_is_string(i, 'responsibilities[detail]', detail) - else: - resp = role['responsibilities'] - error += assert_is_string(i, 'responsibilities[description]', resp['description']) - for detail in resp['details']: - error += assert_is_string(i, 'responsibilities[detail]', detail) - -if error > 0: - sornot = 's' if error > 1 else '' - cprint(f"** {error} error{sornot} occurred - see above for details **", file=sys.stderr, color='red') - sys.exit(1) diff --git a/vision.html b/vision.html new file mode 100644 index 00000000..83f33bb4 --- /dev/null +++ b/vision.html @@ -0,0 +1,259 @@ + + + + + + + + + + + + Vision for a Common Astronomy Python Package — Astropy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + +
        +
        +
        + + Fork me on GitHub + +
        + +
        +

        Vision for a Common Astronomy Python Package

        +

        The following document summarizes the original ‘manifesto’ for the Astropy +project which was adopted in July 2011.

        +
        +

        Long-term Vision

        +

        The ultimate goal that we seek is a package that would contain much of the +core functionality and some common tools required across Astronomy, but not +everything Astronomers will ever need. The aim is primarily to avoid +duplication for common core tasks, and to provide a robust framework upon +which to build more complex tools.

        +

        Such a common package should not preclude any other Astronomy package from +existing, because there will always be more complex and/or specialized tools +required. These tools will be able to rely on a single core library for many +tasks, and thus reduce the number of dependencies, reduce duplication of +functionality, and increase consistency of their interfaces.

        +
        +
        +

        Procedure

        +

        With the help of the community, the coordination committee will start by +identifying a few of key areas where initial development/consolidation will be +needed (such as FITS, WCS, coordinates, tables, photometry, spectra, etc.) and +will encourage teams to be formed to build standalone packages implementing +this functionality. These packages will be referred to as affiliated packages +(meaning that they are intended for future integration in the core package).

        +

        A set of requirements will be set out concerning the interfaces and +classes/methods that affiliated packages will need to make available in order +to ensure consistency between the different components. As the core package +grows, new potential areas/components for the core package will be identified. +Competition cannot be avoided, and will not be actively discouraged, but +whenever possible, developers should strive to work as a team to provide a +single and robust affiliated package, for the benefit of the community.

        +

        The affiliated packages will be developed outside the core package in +independent repositories, which will allow the teams the choice of tool and +organization. Once an affiliated package has implemented the desired +functionality, and satisfies quality criteria for coding style, documentation, +and testing, it will be considered for inclusion in the core package, and +further development will be done directly in the core package either via +direct access to the repository, or via patches/pull requests (exactly how +this will be done will be decided later).

        +

        To ensure uniformity across affiliated packages, and to facilitate integration +with the core package, developers who wish to submit their affiliated packages +for inclusion in the core will need to follow the layout of a template +package that will be provided before development starts.

        +
        +
        +

        Dependencies

        +

        Affiliated packages should be able to be imported with only the following +dependencies:

        +
          +
        • The Python Standard Library
        • +
        • NumPy, SciPy, and Matplotlib
        • +
        • Components already in the core Astronomy package
        • +
        +

        Other packages may be used, but must be imported as needed rather than during +the initial import of the package.

        +

        If a dependency is needed, but is an affiliated package, the dependent package +will need to wait until the dependency is integrated into the core package +before being itself considered for inclusion. In the mean time, it can make +use of the other affiliated package in its current form, or other packages, so +as not to stall development. Thus, the first packages to be included in the +core will be those only requiring the standard library, NumPy, SciPy, and +Matplotlib.

        +

        If the required dependency will never be part of a main package, then by +default the dependency can be included but should be imported as needed +(meaning that it only prevents the importing of that component, not the entire +core package), unless a strong case is made and a general consensus is reached +by the community that this dependency is important enough to be required at a +higher level.

        +

        This system means that packages will be integrated into the core package in an +order depending on the dependency tree, and also ensures that the interfaces +of packages being integrated into the core package are consistent with those +already in the core package.

        +

        Initially, no dependency on GUI toolkits will be allowed in the core package. +If the community reaches agrees on a single toolkit that could be used, then +this toolkit will be allowed (but will only be imported as needed).

        +
        +
        +

        Keeping track of affiliated packages

        +

        Affiliated packages will be listed in a central location (in addition to PyPI) +that will allow an easy installation of all the affiliated packages, for +example with a script that will seamlessly download and install all the +affiliated packages. The core package will also include mechanisms to +facilitate this installation process.

        +
        +
        +

        Existing Packages

        +

        Developers who already have existing packages will be encouraged to continue +supporting them for the benefit of users until the core library is considered +stable, contains this functionality, and is released to the community. +Thereafter, developers should encourage users to transition to using the +functionality in the core package, and eventually phase out their own +packages, unless they provide added value over the core package.

        +
        +
        + + +
        + + + \ No newline at end of file