From 2d6ac2b172b96994764d9a92ef1d51f7b247317d Mon Sep 17 00:00:00 2001 From: mikkelkp Date: Thu, 7 Dec 2023 19:12:51 +0000 Subject: [PATCH] deploy: update docs --- .nojekyll | 1 + README.md | 1 + docs/.buildinfo | 4 + docs/.doctrees/cli/grid.doctree | Bin 0 -> 19347 bytes docs/.doctrees/cli/index.doctree | Bin 0 -> 3084 bytes docs/.doctrees/cli/leed.doctree | Bin 0 -> 15616 bytes docs/.doctrees/cli/main.doctree | Bin 0 -> 317028 bytes docs/.doctrees/cli/mtxop.doctree | Bin 0 -> 31249 bytes docs/.doctrees/cli/postprocess.doctree | Bin 0 -> 234877 bytes docs/.doctrees/cli/schedule.doctree | Bin 0 -> 21497 bytes docs/.doctrees/cli/translate.doctree | Bin 0 -> 34109 bytes docs/.doctrees/cli/two_phase.doctree | Bin 0 -> 40908 bytes docs/.doctrees/environment.pickle | Bin 0 -> 568487 bytes ...neybee_radiance_postprocess.annual.doctree | Bin 0 -> 21921 bytes ...adiance_postprocess.annualdaylight.doctree | Bin 0 -> 26277 bytes ...iance_postprocess.annualirradiance.doctree | Bin 0 -> 3602 bytes .../honeybee_radiance_postprocess.cli.doctree | Bin 0 -> 4652 bytes ...ybee_radiance_postprocess.cli.grid.doctree | Bin 0 -> 17810 bytes ...ybee_radiance_postprocess.cli.leed.doctree | Bin 0 -> 3506 bytes ...bee_radiance_postprocess.cli.mtxop.doctree | Bin 0 -> 3510 bytes ...diance_postprocess.cli.postprocess.doctree | Bin 0 -> 3580 bytes ..._radiance_postprocess.cli.schedule.doctree | Bin 0 -> 3538 bytes ...radiance_postprocess.cli.translate.doctree | Bin 0 -> 3514 bytes ...radiance_postprocess.cli.two_phase.doctree | Bin 0 -> 3581 bytes ...ybee_radiance_postprocess.cli.util.doctree | Bin 0 -> 12643 bytes .../honeybee_radiance_postprocess.doctree | Bin 0 -> 5234 bytes ...eybee_radiance_postprocess.dynamic.doctree | Bin 0 -> 56090 bytes ...radiance_postprocess.electriclight.doctree | Bin 0 -> 10584 bytes ...eybee_radiance_postprocess.en17037.doctree | Bin 0 -> 23012 bytes ...neybee_radiance_postprocess.helper.doctree | Bin 0 -> 18290 bytes ...honeybee_radiance_postprocess.leed.doctree | Bin 0 -> 51214 bytes ...eybee_radiance_postprocess.metrics.doctree | Bin 0 -> 142745 bytes ...neybee_radiance_postprocess.reader.doctree | Bin 0 -> 27001 bytes ...ostprocess.results.annual_daylight.doctree | Bin 0 -> 430746 bytes ...tprocess.results.annual_irradiance.doctree | Bin 0 -> 257599 bytes ...eybee_radiance_postprocess.results.doctree | Bin 0 -> 4473 bytes ...diance_postprocess.results.results.doctree | Bin 0 -> 233573 bytes ...ee_radiance_postprocess.type_hints.doctree | Bin 0 -> 3511 bytes ...honeybee_radiance_postprocess.util.doctree | Bin 0 -> 36014 bytes docs/.doctrees/index.doctree | Bin 0 -> 6450 bytes docs/.doctrees/modules.doctree | Bin 0 -> 2851 bytes docs/.nojekyll | 0 docs/README.md | 1 + .../honeybee_radiance_postprocess/annual.html | 616 + .../annualdaylight.html | 834 ++ .../cli/grid.html | 787 ++ .../cli/util.html | 671 + .../dynamic.html | 823 ++ .../electriclight.html | 568 + .../en17037.html | 849 ++ .../honeybee_radiance_postprocess/helper.html | 799 ++ .../honeybee_radiance_postprocess/leed.html | 1303 ++ .../metrics.html | 964 ++ .../honeybee_radiance_postprocess/reader.html | 618 + .../results/annual_daylight.html | 1234 ++ .../results/annual_irradiance.html | 739 ++ .../results/results.html | 1887 +++ .../honeybee_radiance_postprocess/util.html | 719 + docs/_modules/index.html | 565 + docs/_sources/cli/grid.rst.txt | 6 + docs/_sources/cli/index.rst.txt | 17 + docs/_sources/cli/leed.rst.txt | 6 + docs/_sources/cli/main.rst.txt | 7 + docs/_sources/cli/mtxop.rst.txt | 6 + docs/_sources/cli/postprocess.rst.txt | 6 + docs/_sources/cli/schedule.rst.txt | 6 + docs/_sources/cli/translate.rst.txt | 6 + docs/_sources/cli/two_phase.rst.txt | 6 + ...neybee_radiance_postprocess.annual.rst.txt | 7 + ...adiance_postprocess.annualdaylight.rst.txt | 7 + ...iance_postprocess.annualirradiance.rst.txt | 7 + ...ybee_radiance_postprocess.cli.grid.rst.txt | 7 + ...ybee_radiance_postprocess.cli.leed.rst.txt | 7 + ...bee_radiance_postprocess.cli.mtxop.rst.txt | 7 + ...diance_postprocess.cli.postprocess.rst.txt | 7 + .../honeybee_radiance_postprocess.cli.rst.txt | 25 + ..._radiance_postprocess.cli.schedule.rst.txt | 7 + ...radiance_postprocess.cli.translate.rst.txt | 7 + ...radiance_postprocess.cli.two_phase.rst.txt | 7 + ...ybee_radiance_postprocess.cli.util.rst.txt | 7 + ...eybee_radiance_postprocess.dynamic.rst.txt | 7 + ...radiance_postprocess.electriclight.rst.txt | 7 + ...eybee_radiance_postprocess.en17037.rst.txt | 7 + ...neybee_radiance_postprocess.helper.rst.txt | 7 + ...honeybee_radiance_postprocess.leed.rst.txt | 7 + ...eybee_radiance_postprocess.metrics.rst.txt | 7 + ...neybee_radiance_postprocess.reader.rst.txt | 7 + ...ostprocess.results.annual_daylight.rst.txt | 7 + ...tprocess.results.annual_irradiance.rst.txt | 7 + ...diance_postprocess.results.results.rst.txt | 7 + ...eybee_radiance_postprocess.results.rst.txt | 20 + .../honeybee_radiance_postprocess.rst.txt | 38 + ...ee_radiance_postprocess.type_hints.rst.txt | 7 + ...honeybee_radiance_postprocess.util.rst.txt | 7 + docs/_sources/index.rst.txt | 27 + docs/_sources/modules.rst.txt | 7 + .../_sphinx_javascript_frameworks_compat.js | 134 + docs/_static/basic.css | 899 ++ .../css/bootstrap-responsive.css | 1109 ++ .../css/bootstrap-responsive.min.css | 9 + .../_static/bootstrap-2.3.2/css/bootstrap.css | 6167 +++++++++ .../bootstrap-2.3.2/css/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12799 bytes docs/_static/bootstrap-2.3.2/js/bootstrap.js | 2287 ++++ .../bootstrap-2.3.2/js/bootstrap.min.js | 6 + .../bootstrap-3.4.1/css/bootstrap-theme.css | 587 + .../css/bootstrap-theme.css.map | 1 + .../css/bootstrap-theme.min.css | 6 + .../css/bootstrap-theme.min.css.map | 1 + .../_static/bootstrap-3.4.1/css/bootstrap.css | 6834 ++++++++++ .../bootstrap-3.4.1/css/bootstrap.css.map | 1 + .../bootstrap-3.4.1/css/bootstrap.min.css | 6 + .../bootstrap-3.4.1/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes docs/_static/bootstrap-3.4.1/js/bootstrap.js | 2580 ++++ .../bootstrap-3.4.1/js/bootstrap.min.js | 6 + docs/_static/bootstrap-3.4.1/js/npm.js | 13 + docs/_static/bootstrap-sphinx.css | 223 + docs/_static/bootstrap-sphinx.js | 175 + .../bootswatch-2.3.2/amelia/bootstrap.min.css | 9 + .../cerulean/bootstrap.min.css | 9 + .../bootswatch-2.3.2/cosmo/bootstrap.min.css | 9 + .../bootswatch-2.3.2/cyborg/bootstrap.min.css | 9 + .../bootswatch-2.3.2/flatly/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../journal/bootstrap.min.css | 9 + .../readable/bootstrap.min.css | 9 + .../simplex/bootstrap.min.css | 9 + .../bootswatch-2.3.2/slate/bootstrap.min.css | 9 + .../spacelab/bootstrap.min.css | 9 + .../bootswatch-2.3.2/spruce/bootstrap.min.css | 9 + .../superhero/bootstrap.min.css | 9 + .../bootswatch-2.3.2/united/bootstrap.min.css | 9 + .../cerulean/bootstrap.min.css | 11 + .../bootswatch-3.4.1/cosmo/bootstrap.min.css | 11 + .../bootswatch-3.4.1/cyborg/bootstrap.min.css | 11 + .../bootswatch-3.4.1/darkly/bootstrap.min.css | 11 + .../bootswatch-3.4.1/flatly/bootstrap.min.css | 11 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../journal/bootstrap.min.css | 11 + .../bootswatch-3.4.1/lumen/bootstrap.min.css | 11 + .../bootswatch-3.4.1/paper/bootstrap.min.css | 11 + .../readable/bootstrap.min.css | 11 + .../sandstone/bootstrap.min.css | 11 + .../simplex/bootstrap.min.css | 11 + .../bootswatch-3.4.1/slate/bootstrap.min.css | 11 + .../spacelab/bootstrap.min.css | 11 + .../superhero/bootstrap.min.css | 11 + .../bootswatch-3.4.1/united/bootstrap.min.css | 11 + .../bootswatch-3.4.1/yeti/bootstrap.min.css | 11 + docs/_static/custom.css | 48 + docs/_static/doctools.js | 156 + docs/_static/documentation_options.js | 14 + docs/_static/file.png | Bin 0 -> 286 bytes docs/_static/jquery-3.6.0.js | 10881 ++++++++++++++++ docs/_static/jquery.js | 2 + docs/_static/js/jquery-1.12.4.min.js | 5 + docs/_static/js/jquery-fix.js | 2 + docs/_static/language_data.js | 199 + docs/_static/minus.png | Bin 0 -> 90 bytes docs/_static/plus.png | Bin 0 -> 90 bytes docs/_static/pygments.css | 84 + docs/_static/searchtools.js | 566 + docs/_static/sphinx_highlight.js | 144 + docs/_static/underscore-1.13.1.js | 2042 +++ docs/_static/underscore.js | 6 + docs/cli/grid.html | 703 + docs/cli/index.html | 608 + docs/cli/leed.html | 675 + docs/cli/main.html | 2474 ++++ docs/cli/mtxop.html | 788 ++ docs/cli/postprocess.html | 1845 +++ docs/cli/schedule.html | 706 + docs/cli/translate.html | 800 ++ docs/cli/two_phase.html | 811 ++ docs/genindex.html | 3161 +++++ .../honeybee_radiance_postprocess.annual.html | 654 + ...e_radiance_postprocess.annualdaylight.html | 677 + ...radiance_postprocess.annualirradiance.html | 606 + ...oneybee_radiance_postprocess.cli.grid.html | 666 + docs/honeybee_radiance_postprocess.cli.html | 642 + ...oneybee_radiance_postprocess.cli.leed.html | 614 + ...neybee_radiance_postprocess.cli.mtxop.html | 614 + ..._radiance_postprocess.cli.postprocess.html | 614 + ...bee_radiance_postprocess.cli.schedule.html | 614 + ...ee_radiance_postprocess.cli.translate.html | 614 + ...ee_radiance_postprocess.cli.two_phase.html | 614 + ...oneybee_radiance_postprocess.cli.util.html | 650 + ...honeybee_radiance_postprocess.dynamic.html | 851 ++ ...ee_radiance_postprocess.electriclight.html | 618 + ...honeybee_radiance_postprocess.en17037.html | 660 + .../honeybee_radiance_postprocess.helper.html | 639 + docs/honeybee_radiance_postprocess.html | 766 ++ docs/honeybee_radiance_postprocess.leed.html | 737 ++ ...honeybee_radiance_postprocess.metrics.html | 984 ++ .../honeybee_radiance_postprocess.reader.html | 656 + ...e_postprocess.results.annual_daylight.html | 1654 +++ ...postprocess.results.annual_irradiance.html | 1257 ++ ...honeybee_radiance_postprocess.results.html | 753 ++ ..._radiance_postprocess.results.results.html | 1197 ++ ...eybee_radiance_postprocess.type_hints.html | 606 + docs/honeybee_radiance_postprocess.util.html | 723 + docs/index.html | 682 + docs/modules.html | 652 + docs/objects.inv | Bin 0 -> 4914 bytes docs/py-modindex.html | 695 + docs/search.html | 577 + docs/searchindex.js | 1 + 218 files changed, 85257 insertions(+) create mode 100644 .nojekyll create mode 100644 README.md create mode 100644 docs/.buildinfo create mode 100644 docs/.doctrees/cli/grid.doctree create mode 100644 docs/.doctrees/cli/index.doctree create mode 100644 docs/.doctrees/cli/leed.doctree create mode 100644 docs/.doctrees/cli/main.doctree create mode 100644 docs/.doctrees/cli/mtxop.doctree create mode 100644 docs/.doctrees/cli/postprocess.doctree create mode 100644 docs/.doctrees/cli/schedule.doctree create mode 100644 docs/.doctrees/cli/translate.doctree create mode 100644 docs/.doctrees/cli/two_phase.doctree create mode 100644 docs/.doctrees/environment.pickle create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.annual.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.annualdaylight.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.annualirradiance.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.grid.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.leed.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.mtxop.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.postprocess.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.schedule.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.translate.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.two_phase.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.util.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.dynamic.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.electriclight.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.en17037.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.helper.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.leed.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.metrics.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.reader.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.results.annual_daylight.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.results.annual_irradiance.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.results.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.results.results.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.type_hints.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.util.doctree create mode 100644 docs/.doctrees/index.doctree create mode 100644 docs/.doctrees/modules.doctree create mode 100644 docs/.nojekyll create mode 100644 docs/README.md create mode 100644 docs/_modules/honeybee_radiance_postprocess/annual.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/annualdaylight.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/cli/grid.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/cli/util.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/dynamic.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/electriclight.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/en17037.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/helper.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/leed.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/metrics.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/reader.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/results/annual_daylight.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/results/annual_irradiance.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/results/results.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/util.html create mode 100644 docs/_modules/index.html create mode 100644 docs/_sources/cli/grid.rst.txt create mode 100644 docs/_sources/cli/index.rst.txt create mode 100644 docs/_sources/cli/leed.rst.txt create mode 100644 docs/_sources/cli/main.rst.txt create mode 100644 docs/_sources/cli/mtxop.rst.txt create mode 100644 docs/_sources/cli/postprocess.rst.txt create mode 100644 docs/_sources/cli/schedule.rst.txt create mode 100644 docs/_sources/cli/translate.rst.txt create mode 100644 docs/_sources/cli/two_phase.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.annual.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.annualdaylight.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.annualirradiance.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.grid.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.leed.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.mtxop.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.postprocess.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.schedule.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.translate.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.two_phase.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.util.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.dynamic.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.electriclight.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.en17037.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.helper.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.leed.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.metrics.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.reader.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.results.annual_daylight.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.results.annual_irradiance.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.results.results.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.results.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.type_hints.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.util.rst.txt create mode 100644 docs/_sources/index.rst.txt create mode 100644 docs/_sources/modules.rst.txt create mode 100644 docs/_static/_sphinx_javascript_frameworks_compat.js create mode 100644 docs/_static/basic.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap.min.css create mode 100644 docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png create mode 100644 docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png create mode 100644 docs/_static/bootstrap-2.3.2/js/bootstrap.js create mode 100644 docs/_static/bootstrap-2.3.2/js/bootstrap.min.js create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.min.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.min.css.map create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff2 create mode 100644 docs/_static/bootstrap-3.4.1/js/bootstrap.js create mode 100644 docs/_static/bootstrap-3.4.1/js/bootstrap.min.js create mode 100644 docs/_static/bootstrap-3.4.1/js/npm.js create mode 100644 docs/_static/bootstrap-sphinx.css create mode 100644 docs/_static/bootstrap-sphinx.js create mode 100644 docs/_static/bootswatch-2.3.2/amelia/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cerulean/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cosmo/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cyborg/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/flatly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/img/glyphicons-halflings-white.png create mode 100644 docs/_static/bootswatch-2.3.2/img/glyphicons-halflings.png create mode 100644 docs/_static/bootswatch-2.3.2/journal/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/readable/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/simplex/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/slate/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/spacelab/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/spruce/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/superhero/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/united/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cerulean/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cosmo/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cyborg/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/darkly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/flatly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff2 create mode 100644 docs/_static/bootswatch-3.4.1/journal/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/lumen/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/paper/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/readable/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/sandstone/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/simplex/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/slate/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/spacelab/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/superhero/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/united/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/yeti/bootstrap.min.css create mode 100644 docs/_static/custom.css create mode 100644 docs/_static/doctools.js create mode 100644 docs/_static/documentation_options.js create mode 100644 docs/_static/file.png create mode 100644 docs/_static/jquery-3.6.0.js create mode 100644 docs/_static/jquery.js create mode 100644 docs/_static/js/jquery-1.12.4.min.js create mode 100644 docs/_static/js/jquery-fix.js create mode 100644 docs/_static/language_data.js create mode 100644 docs/_static/minus.png create mode 100644 docs/_static/plus.png create mode 100644 docs/_static/pygments.css create mode 100644 docs/_static/searchtools.js create mode 100644 docs/_static/sphinx_highlight.js create mode 100644 docs/_static/underscore-1.13.1.js create mode 100644 docs/_static/underscore.js create mode 100644 docs/cli/grid.html create mode 100644 docs/cli/index.html create mode 100644 docs/cli/leed.html create mode 100644 docs/cli/main.html create mode 100644 docs/cli/mtxop.html create mode 100644 docs/cli/postprocess.html create mode 100644 docs/cli/schedule.html create mode 100644 docs/cli/translate.html create mode 100644 docs/cli/two_phase.html create mode 100644 docs/genindex.html create mode 100644 docs/honeybee_radiance_postprocess.annual.html create mode 100644 docs/honeybee_radiance_postprocess.annualdaylight.html create mode 100644 docs/honeybee_radiance_postprocess.annualirradiance.html create mode 100644 docs/honeybee_radiance_postprocess.cli.grid.html create mode 100644 docs/honeybee_radiance_postprocess.cli.html create mode 100644 docs/honeybee_radiance_postprocess.cli.leed.html create mode 100644 docs/honeybee_radiance_postprocess.cli.mtxop.html create mode 100644 docs/honeybee_radiance_postprocess.cli.postprocess.html create mode 100644 docs/honeybee_radiance_postprocess.cli.schedule.html create mode 100644 docs/honeybee_radiance_postprocess.cli.translate.html create mode 100644 docs/honeybee_radiance_postprocess.cli.two_phase.html create mode 100644 docs/honeybee_radiance_postprocess.cli.util.html create mode 100644 docs/honeybee_radiance_postprocess.dynamic.html create mode 100644 docs/honeybee_radiance_postprocess.electriclight.html create mode 100644 docs/honeybee_radiance_postprocess.en17037.html create mode 100644 docs/honeybee_radiance_postprocess.helper.html create mode 100644 docs/honeybee_radiance_postprocess.html create mode 100644 docs/honeybee_radiance_postprocess.leed.html create mode 100644 docs/honeybee_radiance_postprocess.metrics.html create mode 100644 docs/honeybee_radiance_postprocess.reader.html create mode 100644 docs/honeybee_radiance_postprocess.results.annual_daylight.html create mode 100644 docs/honeybee_radiance_postprocess.results.annual_irradiance.html create mode 100644 docs/honeybee_radiance_postprocess.results.html create mode 100644 docs/honeybee_radiance_postprocess.results.results.html create mode 100644 docs/honeybee_radiance_postprocess.type_hints.html create mode 100644 docs/honeybee_radiance_postprocess.util.html create mode 100644 docs/index.html create mode 100644 docs/modules.html create mode 100644 docs/objects.inv create mode 100644 docs/py-modindex.html create mode 100644 docs/search.html create mode 100644 docs/searchindex.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/README.md b/README.md new file mode 100644 index 00000000..ebfb3665 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# documentation diff --git a/docs/.buildinfo b/docs/.buildinfo new file mode 100644 index 00000000..10f26e95 --- /dev/null +++ b/docs/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a21a82e19eb7640a587d8049b10a8356 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/cli/grid.doctree b/docs/.doctrees/cli/grid.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e2ded49902bcd684bb74007b2baef29750712be6 GIT binary patch literal 19347 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 PFiYqaJgjAt155rtVF7F6 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/mtxop.doctree b/docs/.doctrees/cli/mtxop.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2c6beaa8f981dece08caf700e7865453e48d1e01 GIT binary patch literal 31249 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 Nl)vi03O_%*{Qv9q&Hw-a literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/schedule.doctree b/docs/.doctrees/cli/schedule.doctree new file mode 100644 index 0000000000000000000000000000000000000000..61b84e97b0659cced97417656bb4bec73b4f7c9b GIT binary patch literal 21497 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/translate.doctree b/docs/.doctrees/cli/translate.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e430c03e1196cd22c049892f3879bf119a203c9f GIT binary patch literal 34109 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/two_phase.doctree b/docs/.doctrees/cli/two_phase.doctree new file mode 100644 index 0000000000000000000000000000000000000000..80c8f0dd73e5bfdf95d680d6373b771d7a209b1c GIT binary patch literal 40908 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..f129515958be9db2c8919562966689b123ad9d6c GIT binary patch literal 568487 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 A%m4rY literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.annualdaylight.doctree b/docs/.doctrees/honeybee_radiance_postprocess.annualdaylight.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bb4857474b9d74bb1c4ae293ea70fcd21f0d0ab4 GIT binary patch literal 26277 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 bg@hkfca_kvO;Y7%hn5C4i_(rI-B|r!t;<;Q literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.annualirradiance.doctree b/docs/.doctrees/honeybee_radiance_postprocess.annualirradiance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6f8b89ab233d748fc248569cd4b7ba1c91cbab24 GIT binary patch literal 3602 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 SJ(>rhuLWh=^!-UTpZpJ*8zKw< literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.grid.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.grid.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fcb8254f7a49299ffeb65b0a0b0a2cacadd1e189 GIT binary patch literal 17810 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 UTD3;%+cao7NGvCLDN(ocZ{gHPj{pDw literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.leed.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.leed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..71bafe93306a60fd002b92687dc871ec632cdc7e GIT binary patch literal 3506 zcmdT`U2hyU6it)tCYz5<($Wfvrj05n0kOM0@K6<1AV9oC>_gS^L}htrylZP`?7<(+ zMko?IRB9!^)%*q?_!s;#j%RjeH&GiZ!3!&`G`_a)^*uiK`2M>7`yab2<@7k053@+eG)o#R-w0)28(?tvWYvxMif;*- zvf0w5R`<=1kTbuB+xigy`}iN@|7px05Nc6oeeBl@Ds=Gu>UzICs`+sB34-rc8+z}! zp0|fKP{%*x{Ur$h{BI$=@+<=|c@UZ0FU}rDuz`V`9I5fUrp)hxRiJ(cB%~8f3%-Q8 ze^3WMs_*_NrDvI#aC=nN&k_@2+(hL$m8t1h6?N-hIA|)0e+O*8spvT@k4xXmf_N2Q z^E>=2@aS57C2qu;4afYEZ*KREgzf>+Ud(OIg}`d6EjC_FqgqsG&CPhKEu3bpN`m() zmcKoXrt*0&?!D%_iPKRdNTUclwWU%9ziF7YxB`gnL8G2yt)yi#4Zi&&%^ZrOmS4U% z^qmPqjZ>?1z#yei6if30gY7B|f$u4XTl1mQ8AiKSB_t|IoJF`+EWESeuaA|oQdzb% zd2-F~M(LI=C$q8Ad4Q!GNm`J|6>K$d`9Wo287nR1R9H@GJwwF#hPl8E{f=gZ(w1cG zIm^Pys^8)?YlbaL}!Oe(zeT_Fo+ z36qIRu`2kEv*X@_o)P%IeQ}a7t(7Jmq|X=>ryY-)*x>h+vlqRzN-x15UYfb&g8$;X zmD9xmT2G&R-+O@I7bh<5^!qUZ1C%)M$&gU+yBU=eM<)z$rx>r|f%P{uOO#GY$_kJJ zVWMmfeLGQdj2r=nNJ)W*Ld*hh`!01>k%h^x3NUInb$LM=)&bShAV4@RX%-#sl@>rN zO}zVssW8l?ip=uJr+qeqiZHUgv!qC3$#Y>u#m_yG3PVR(Ok{q_jk+3m&+i}^1OC&p zO8{l&%g9({<(uHU1uF=0VyGkZ00_JjEhCE1k=XuyZf#*64hAqA$fPj>##i>}Q9fHgI^O99Kh4d6^Z zVkzqP3`gLMSp>P6VAYhcoQjN~_0(we%3~kQn@5l}8&{h4%I{PjO7{l4*O+`B8!W$B zX$y)O)I<{^P%M^MswWIug+}85hXmCu8dSiY#&+r)>UY6fwOla6+qfCDV@aV~gMA|! zt8f04KQ_J-4fd?SiO&OnIyC%V>~tQZF?)pPxm_J#q2KfVw|Ut3BU-;x^|ON>%AlVK zFXJ2X7kaz@S!1&Nf;+#vTmvPByNN(0#Y+ILl_e@wy{@{fWlOaVR|v}IBb7B}RW5z+ zlCfFcx!|!=M=dv9zu+G)j<)fMyLs8yd}hUOK}QqiqDlt8ov17Wy^sSQ(v5HD_Sc}m yi|`ntf~E}egkIjD3aWsOoL(?*H|CPK+d?LpOJm_oB4@YKsQ7bnj9rKu_5TLP9co|z literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.mtxop.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.mtxop.doctree new file mode 100644 index 0000000000000000000000000000000000000000..331c907d78882e0db7b98555098dcbfb015503bb GIT binary patch literal 3510 zcmdT`TWcFf6n1P&vV4*4qzQ$_i3n}#mP*P)9zsfJX-Z#AMKMXA8kW)SNHchMW;>Ty zrlhnFfdu9)(_c~gC;H3!&E6!N+$epiK(KRW&Y3yieCM0<+xj1W?yM9)x2to;#e7JT zM973{?=}({+l&h1U-{2|_s{&H>nd`prByNYZUrl1#?wSm;h%Wd3(E~p^|12qXc`+X zMdQv|tj#)4{2}YQmfY@IkITEmF%mLOUAwUO9-F_@6}MA2zjV_nCPS(x%{mtAMu z?0~JY8}8Q;lNlW;D+E=eQ>jj1DDfQBa1NHxe8()((an+u&DVoDR2m@MJX*CAw&Ge` zBy_%XvE`k!K9Xj)aA607J!#v=7~SPPp=JRNnBH{W^zt9KpL`=`na; z2i6`NPb~X_4VO^->%T?ut%n(b&!d9R!~E=i030xgSzk`yJ8O0m)ItSx!9+4sBxg&w zySoo%mJyNYzLEXFi2f-ztbbe;S3e`z5S7)pI_x{P*$-#KvZ${8OXsGZ*tbCSo06O3 z;+W)(3<#I-HM_yS0*5ZumtiNgaX4fT+_1*-wQL>$%RzzVpwb3f^K9Yy4i43-LTYA) zb8X^0Yh@a2P;&gui8O`J2Eq4|>%~?DiHI6O*sd+5Ft`m(jRE?Q+xckH?|iV`PADvv=zASi}pIR;zhHW6Z1!e-HYDplrT=>>k~Q4CVSRU_m_rG=)nutb4gQ7vcKv2v*N zZS1xc&80F?N}tlyAFaAgM$%^3a{F}7ft4Y~>UvSjwGuk9Gi=v8B}xD*tWcC>uylqYcfegBGoB7 zbv3Yo+eR`P{3k`90LoO$qA5>{7s2&%nn%cqqK=?d*myfwCInjtV!IESF}c1!8o{ig zqy|DUlxjBe?rK;WB88Qap&8IMKyw53!6$d_0*;=V#uvf|%Od>kIy?#udWoB&YRIXX z7JHy%N6cg?HtQNPK?Nj+`J)YY06t|=Q(8>|k0GiXr(cM`g(XHdU$*0SS* z8PTTApdCsI%^K{TU@X7cV|J`vHyF%WjuSug?D1H$TcOW6Mql;-4|BUbz(T*P4!C*R z*aK2ORQ0oi4oc$@^Dn|1@;6$$|6NnE{EAz*vs?uQiaRk!Ern|UvZW~D2 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.postprocess.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.postprocess.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dc8e3daf065c83b637500401e657d2ca9af8f7c7 GIT binary patch literal 3580 zcmdT{U2hyU6it)tCYz7VM`?vb(?%7PfY@Cm3aW}K5FlP6_MvKdqO!a*-nEq(d+
  • 3=?a%F{^3U&>f(tqA z(=?STWhVIbR3$EF(uNn|gI~gvaO69ho*LzJ!h&DIiiC?S)l7y*!FS_wD>Boc?O!u2 zu|mmaJ8$teUwagec*nP_uo+vJ@}F@f+1ZG(ABd)@pfbT%p^PoGN|-VIBoqCG@nNn~ z2N%&J9IifK(-`U8&r;)O>2>@(4P}nJHTUp_k@$8&0fr5H&v!_J9$)e88E8YlnhD9m z(2c0ypw?T5l9#e6WL$%$s;xW@T4ODAzE@Ev}Q zZ}9`Z!ms;Z2VCWBpq-RV4^EXnfuTaUR|DKz!1Etwk&bDWG|0XR*uFM^;>Pi^8}TLI z5;A4eg$u8^zz>l+zlke+7r$Hh9pU$3gaJruQ6_)nR|_h1@Sj$9{`p~@$!i4?{OxLA z@6ERH_Rt3E_(#0Ifa~x7Ev~N&X#ma-7VfBDoZXEV0bu0hP>tUZ2Yv&@L#=ecQ##SK z;0yQRKdD1Gtm$!>(z8rVxIJ8mA)cJ5Jf|`>{i^z|{=2oTrM!sO z@g={`zW}o?)z{)itl4nH@A=zxDu2uL9#CCmes88Etmfc+|7-E9Rw7z+H^#Vu*jB2P zc(1C0mnYQ-1n*`vk*{+0f|>qiw4a5(OvD;<#2U%(LM4$4XhL zEL)g7zT~%~>`RxE=~(GJz|xI;El4B{wi>v6r?Rk&l@@X;EGM<>;l$a7nGO#9mS%<0 zmSpTP%fj)p-{3TBhAqFxrUF=5YMrSUwR|gOBR9cu-BYS1u)+$>XbwxqYMQW^RCwmQ zLKe;vCKHunRq!2W$Gtl}Bk+Cg{3KyoD@{1qpD`#>JBFIr;CGa>=e@K_FTo#Nn7QDB z|Kz)s(|G``hY!B(-NE7KCob&tyD7%$^-_LntFluk*? z3XlWGL|GmBcB14MIRXxmk^=9Em}3?5Ouc~r2^$3 zC#bGWx)G$MNl5>&HjZUJ{1yRIitzjM~AGlLo4#?7D|OA1XL z>}%0jee;L>zVV%CuxAA#eiHb@q2V`UCv+eE+dVwd?J9t|e$RU6=9%O7X#HH(&klMl zgQqM!i*LvuXaWD%t;*u-?)>&*MU;qcCjxa9uLLMpmZ)3xy6Wl{E!8?)C<-7SsjMlo za_L(ajLquKIgg$C)N<4QIsbTnw2cqmm5aV+GfRF0s+uSlH8c3lL}eMsh8*y$u6;eT zzW^bghWn5hv}q74`~zT66V-u@xSlg_Hs+GXn?fd;OJf;LB7-;5sQ)vmj6I1P_5T8Z C`;CME literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.schedule.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.schedule.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e5b685f215c7424f7c8a47e7829f474f818856d2 GIT binary patch literal 3538 zcmdT`U2hyU6iu7#CYz5<($Wfvrd?G~0%CVt;Grt2K!A9O*oTVpL}htrylX2n_TZ0Z zBUFh#RB9!^)%+6v0WbV5j%RjeHxVT&;)O`7jIZtMdymgOzQ3;h_UFz@`R8{{!G)X+ zXqrluG86npsuGtoX~XOA(ev;u9Qux?Cq_A)u;5p)BHtrlZvfpNriRiq~3x1MCw7#Q*0k~FWrHd0qC24k8WYc`2%oL{$e8m9u^ zgR07||BH=HW$|x;>DLuSM`d{QjVy>)@D;zw zzXXpi)mP!htl4nLANqTB5`RnTK9KC!iS*}M!D_lKHeXDoT4-p^(HPw(qFSwz;r)v3 zZ%(IC0p5>$FZpibbkqydsKa(`sZ_#m7-lW59U{EnsOm&3X_-ueZ~sU$ha#zEneUE# zXUb6T)G8e?NGa6C(!9W6t2&0j_c4Z>^P$rjMmts|B&tfB#c{1zfTzJ=fy*lOVNy~@HeR$9o3u$>NHWR?gQtM2;sO4KJ8@nlv>z+_8ffZJ0Msrv?R?~#Vq{2(z6|!)a zFqxws!$5FnhEG>Z;*OADZt zCf@zRR2b$`MP_;A(;k~aOBh++SyCjikclk4A!v zuZj&<ilH&bZuVo0$mIu77W zK4vNE_Y@&;#w-rGmSEK}VL25UK})L90G46z&znk+HJenL_R4Qp9!mEHyH}Zf8k;S@ zQE3Z`8Pr5GB2X-rSgNNCT7`yVA3=g@7L6<5PGf8J4C;5rTD4y=!`q}8v|~x3bAx?7 z8mn*qm_IVU6AkvXK*Y}ie>^h$cI^F9@O=3=Jwa1 z!i(?-;)13OGKK!$pc<+J8(BSL-fGMxfwzQAGMB~znnvz!rcwFlA{o08Hy->2mM3`v literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.translate.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.translate.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a2eacd490dc743fa9e8cc93697055a08a1a76b6b GIT binary patch literal 3514 zcmdT`U2hyU6it)tCYz5<($Wfvrj05n0kONN^r0%MKos#3u@6&48#=AE0*n>Zs zjZh^(s?_dm9m%Aemc1>I(?<5UwY{j={a1H&c z;F5-+8xg-jtkrzvEMShXuJFu62-i|UjDZo~ElKj~Ydv$td@v&Ev8Lm=#`!f%CUGjT z9d?y%v3<6}uKC{vOyzW-os?7$PLw`|p~ALTL)%+G_6@U0$23bCR9_EjUmE~%{b<>Z z*phE?nbGOOMOPeP2S}XVz~z02|4sZ4@&7b}030rjQFRI)A@}SP+Ey4)? zR<*15E}K|;XajNVGuB@~^w0km(SHqS0GyYT`5iJTm$@jD^Fu7hr9AhK z=hr9H6gun0y%&5pbvjBy(g?s-ZK;I7uN!JDZWU6y*J$ThD`~0Bf^YvoghLtB;>&i1 zzB8dHX=0TQ7-Y~vV@Y0Muvs0G!1pnR8?&L)0;6rK(j*E;oW*giSYoHaUmPoCrLuHk z^5}x!j>0Wno=nF|=K+>(6Z3YWc#6vkfyn8~QCx3#Dx$ z=u;}f(X!uQL^Q*e-=k9wtSqt4)QeiamC=!#;JEGy(Gpl;g{CBjrGu+aX-q1-@Leto zXA>$@m0?xz9cRbAJ3Yhkef8{QLbX;pVPL+X(3W-#HMPO-C}+=lX_a1r-#<5V&IS9~ zcPpp!09ub8e%HH$!_Q8f+v#^>0(j6213m%?1-~tboH#O}fIGu@8PBV~q-m;jmSnU5 zIdDuA$f0kiN{*2u;NV$O;9cO;z}mh`oK?x(r%tfjGzFW{DK~5BPgbn})Z$-<9;OIzf|30&}Fn0$7m<^QDLNNMDPX@tX zjw_?5xH7Rc2f7w$uEXB@==0lvqpQd1Irq^rcYm{Xk3u7nZpT#jIkn^R43zAE*<9eT zjwK^hKxSDuTKD_lQ=T-X)g+LZB3|%If2E9zOG9y}|AkDxb!F z%CA@2f?@_W(Qa@Qi%l%i6AGcr3o^&TlVPLy6{g%28ACI)HFxiJDcftFCR)Qmw;fg8cbNiKf8H zrSF|HHmf^lJa+0+%S{*0_{ZC$ZG7x5pZ7JJS@IiD)Ks~sm%(qQN(c}QIp9fMyFatP z0vVo%2ap#uT@WfX@dou!9oPu#8S`diE-AdpWhz`2OK1|=yOBlhpUGtGN8G6YHy#{t AWB>pF literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.two_phase.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.two_phase.doctree new file mode 100644 index 0000000000000000000000000000000000000000..43690fe82cf274e16a2a55bce4af06bf747893cf GIT binary patch literal 3581 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 E3;d%EQ~&?~ literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.helper.doctree b/docs/.doctrees/honeybee_radiance_postprocess.helper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c9e675bb7f92c3a71b62d64d73655899f7efe50b GIT binary patch literal 18290 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 B(h2|o literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.metrics.doctree b/docs/.doctrees/honeybee_radiance_postprocess.metrics.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4dde77a7121e99c18e38b55eaee0fb82954b232d GIT binary patch literal 142745 zcmeHw37jNFl{dpo&rJ6mFd(BaLsKY1k52c@AfOB)AP54^fPe=dI~Lhh*l*Y#LYTvz>GT$z!P5w9Y$ z4yMPC-;bWE%8Yms@BQON#QVRDylKU&FF9=4VdTH)h<3A5tsj{2%H?{a?6T;vh zS@7#&_xA3Vo4eO{r=szex4+%!v`T(AIt=b8RjRde%ddC$bffj;_OM!O&+ziA+I}gl zHtKQl%2;J(W!0YURAoFG3#(zxmo7y!l}6oPob~-bDz?0G)vK4_Q?t3zPDP#pMsf%D=cv`&1cAN?J;eRyIB8bl9zIh{lVt zmMY7mm0UTyqZPGk-S6)1%zDv;7ed2lJ0U2QC~6%PD^_1aTU7Lj&F%IsZ-=ks|_kR;nKr9vz5c5v1+~SACL^nY+Wfpmn)A1Q=J6= zpA7#`!T*mT-3JY}s&0b)KzFdJ{NOj+J~E{_kc zxCq4(8KOm1nPaqsP$U1AR^VIA3XGQ3yPgb8qNz85re06A^DwF%BDP6feaBOlSJASa zLNa_xOT815+RRFQZ!9(TM@2S3Bzr6?#PSM?yt^@Z`?K=?fy;Zd@bu9tS?l02*Eaon z85~sc0IY~4EAfTK#-u>H=l7ahBC8q}xBgtYvEWtf-RSV$Ij{s?JqQ-CJOeUfju7s?npZTp{s1i#wU5-Nf+!0xJ0;tRT~~ z-Cvjh;-~ME)>>lBy%s9G9gy_8SjP|3%@!Qyi6zG4yM(!=U((9{Euw6F%YO|GdSBci zGlGLPuv0;5|GSJ{2!u)PA4_UC;x#xHul;kG+6iDu?TMO}!+gsWbdQi2W0PJ>sVaCZ zE>W_d49&{-5?oe(kU}Jtf#9(6BMriWQ=l1^AhTBHQ}C{tm3dgSA@*^Nrr+|yMoSv% z(Xz7z0^w6yozFmJM#~x*pA%e3ia21TjEbn3yEPuItk&s{P;#EjVPPhELqDhc6QaV% za%Rr!)WYIEuh#L?eT$B6cbd&cD=fAbyjFN!r$P3fw}4LxT5*^2xQj`A8A*FHC5?z9 z)%!(%vlr5xeghpvGpwCR?;CFePs}%3(uRO-FIztB zgzIg2CYa8%UDXUBy4zKzk`qyFnHG)m%p5Im%m(T8;#zrojV%}T)AaGsrnGarMi_kA zHA?%>z}v5PZd^cCMe#a34XF!oA?|+0enD-kp{=oowkjHWHr{wtLsnjD4i}*JQm!Tl zaUlnT30R=0vN2k=M=`<6@Wx{%=;=&?O{DUSKLM}CNDiP3X7*M6{Uu;Jy3rBhV-ZM) zN@~H`D~L_@jABDLQ)K(S9^rEl1BP8C6t0%Ll@~@U;Sb747enS0d~`oua%CQ)XEPkE2GtOom!2CKA`av#jsH-Li{9bcZ0ts zt$N{0!1d8zStw|o6k(d$Lc?lh2=daf4_L_~yE^b~BA8fe)I*te5>el&%6akR{e<)5 z__kNCcf4Am-GLSMd?hUS2Y~H>z-fU5x;-Vv9f!E{R}j0w;N#Q;!QJE^O2$}*x1%K- zNUUrQ{+{<2Og0`(%vJqbxu`_yL^KxLkz)+QNU!KgH^YiZ%z| zaM6A6HD<8;$Uh8!WKNAcG219FW?BlD*USRk{m|UWank)_HS`y<#S_dPM`MG9>FL6G zT2xNK2v}c(T3TMM2;5MkJ}*@l^$sltzjxBcZ<#iJ4gY`^Hb!HG@7#2|62}Y3RTBuAz2f+X;DE|mBsZI!ZnkY+UE0)N3e@H2XA@BsWH`~&yfiSFxh z2#e_ds)}EL@ZGH6BIFxf>NKl<8OR`@O$uQJc##r#l}1MhIDO2^f}?f7UYWVR!@s@TyR zz8d0gMI#Ufs8M^_8)uKCTEi9WfU|2xkR#A8RObp_q3ze(FkMyK zg~mR@dxSF+GN#D>P7A7RAcbQqdm*+3h1it}9&inCh+RgNWpWkdssgc#2*d`_^|;3FjGIw=m@mlX;w|<%48r%#2r2XPl z@OA08Xw?;bd(EK}e~*<;5%UVgym)i@RQobgD4uGAA4zgEKKgOz@oWS}O@n79&i1@3 zpHlGJ1+M_%;1Vngy?MVdRR*4A!K-bFmvgzw#{G+O6$b#l(M2b8UVA;1$b{RKd5xQz z=+4R1I4Zsfx`!r<)mvpUvuDUo#lc5tA+|&pOLnzQQ;aTyO##b4QFj=eR15wI`V*~! zT?i%Bf=`jJlqHtFuc|j#BGE0;TK23PtL1NIDenPrh7{ z$~Dm?9(Z0r7mKL3S-!}QocSV8w4(fG^diyJk!zK)T=B&Z(X;i{nKDJlCazfX>+@kn zwbR9lb*&9o;&DP)^#rF1iKvIYE0|1CTpQIhmRAqnVKx!{5 zXiiAk2)+}SjXt)7vNp5`BuRE8J>sTV{Tua$7TYD$<+OSqh*hN9woX-|%B@=ULgt2~ z-ryIc8rHy9#SNS>Bx)ES$MKc$()z>;i5KaaW)ZAefuYAhA+3T!plK^U`dD0mK7hpq zd@RD6h8tFzc@>0L0hua=pp?XU5YSua{JnqE>=<&z}SmALI7of)@7m%pU zF-zhVxKMW-=F5_JDK&%@`dn1{cD#3(O0CJv51=woGSj6iccWqqWF`}!keOr=A_mk7 z`XxP*zJN-~LuRsOxHyd7_X3}(pC*IN(k3Wc&l79ql~zULrN#BMD*h8yg$+}wz&!)OIgeGj@ihJ2;XGMKgFu18>ur~^ejk{$B{yl0!=WeHNl(U zr<%5-ad?>n(Vj$7Z*$B82c+~e!QmBXTkjVT; zX#>A}qGJTfmGxu$O)Ug^c5o$7olt#M}cOqg@e~UFtDf0tc%Y zExD0Ax4tpb#%SSk?7FD;eR!-Q_ZV%W-e4oC<{*sGPNUs3MEABpA=?=3S-1dwOpFV# ziiur}3(yB}xPT-kmNQ0s4K7?-IgThs`z&f2Wlq#bHkl66GmpHYkz=%vrqzxhMtdW! zP<>CH$699sw-~#k`u=K5*O-@!+bH?cTq!Fq0dF7pTc{G zsnj|~dk-oDjnTSv<-4dDLyVRQaE#IZ43(58M$4Mv;xKyOOJcOzX;L4fO+ApTiP4Jd z={fw!RoD_q_IV@n(rckX4l!E2f<_*rJr)pUjL{}-%*1Ga4;z$W#Ar!-Sd8{;&}Trt zqA^;sOA)E>@q!HSw~UVz2(aNX+8INPwv8vcyB3SV8$5*ocXM#QHGWwfYw{3T%|qAE zlZ!)74tclLkZg=AcGfr7Sa~H4cfz@nB$;-g*#4Y2T#i4DSUu!|Q1;Oi@~LRWSn= ze@*Ox-34P$t+%&fUPIf7cPV8Uv`P`BowKNw$N9)$RHJF~{7#U;qqJAhTL%`Uy$7n3 zjeskGM`^!I3ia?EQk3>eU^%ACRX7o_4X66S6IT)?SlC|;D>Pj<6}6=^lkb%(g;rxf z97jd&n5fp9osgY47Dsi5Qg;Hip;QkT{eg?xY1H_;)b6->IGTugoX~{BnMaMql;#vQ z7HgCQExDq`N3Mp25{(*fAfIT|n0^{^)cBlI+3PQz*Yfx`NlxDQa7U`c6ci2{Av_@l zk1fIJZ~Uq9%bMgYD6e)6oI$e(PIcQ2M?h{(p1eqodwZNX?d>2)@O=!R!0ff~;PJ_E z*`@R}rDWV}#CT2WDhm^*ev2I%jSZg}Yrs7=oM%1q&YNFurxPahrq+ilQ^R2j2^}Tr$YoS#f`F*$mJtnyTD@=YA z7of)^7m%oIT}rWBquIdOYH^#wetiLNgatN(?IdST&JjF9nK0c?V)<;wPUe$XzKi!j zZznDwt0x*3Pb2MTxBv?kDG8wYLho6fm=FFK8^>n-3Z@ffsH5Y^3g*Y+ZNXq}9os(z zm4U|gT}JHbs2D?Rp9xT6`(*7XT-*x!C5^fBQAv4X`>Yv?btUYgj(lVMd~s@(tMT9B z@MF=r@wlYoc>W0Opb+8A4A0$JO&ex_87}yQz^z2{ham}pGW27 z@fWNSF8-qTy@U(YZj1C>pm;)prt@T{>Q&-;S`|M=RUyX;Ek{Sc&ujb;8sxwQ>J>C{ zF7PZ^^%%Lpq>ULa@I)v#3@(tghjD?&O~5DeRd9jpq)oj<0E%5VfbLOnH;IDuBmmD! z2te{6e6`+bKnl0F$d0}8I$@*USXjg#+32f|7|X#Up_|b30{O@30gfef@|9#b8moc+ z9?$zb5!mpgTi6H!ltLS{aYT$RDd z_&~L}F@_CKZK$=FCl0{}UQAo1EHtEbj>HFENN>gYz}w?6gZ#_}9Ewpb!Fm7ix)^dO z3IuPphgZ!ME}kopgRAD@)T%nX<7JW4Em$ESZ)&x|EP2?g122V{U1UTKc_mDtUGbW} zmh_c^A3UX1`X$yfjZ{8Yu?(&&ZtQ(jS0>hxTvd$y67g)vL#(T~@6o~1BJf-Bk?A|Mk33;RKy0vbluV$MqcEW7$1Vz?H23|~BDmtXor&U{?2H4A)7)aE z=0tOgm3U&uTr~H?*9e;X5#$r4x#_2o(cF2Th;pU5^FIca(A?%{pW=m3|1`JA%za3n zk=g+$F#8jn=AMqrE=ihO_h3{)X(vxZrGAUu60vDjiBo~livQL`(Uc3<& z*c=AU{pF0E%ry7?cn|b;;sUa2N2U@*5Pt!7XeC~4&~VxNeLF_2bFK$^5-%r*~Q>1ggtP)T`cE7lCfx)OF#M?M6a zyM*@8u%;+NA=@>@b+`b%U*H0)fPEt_Ko4v#Ao1ThXztr^!IDue*AsbZ?pvujtkw}O zihVcUKTNUK9^=EP4Af(|bmdd17=y=P0@5C%2hDvCDkqP>V2yC`7rpN#G`DtJq^G&X z`qo5qi|gq<+b>X6gN+@Kexye--jQJjW zRckR%9D?S)oVH3?Xh`cEiRRu#Z~cR#xo=i1gX@YL`+BM?6U|MoD#kuoNaff|9!xa1 zs;}O#elFENZYoZ5+rauDqPgF#U_#!o@(8cK;bg2yRG@J7P#D+~L6Iw7Xb2I??W8XOQ437wtZ| zUeN9*kWZ9$r=NyQyYDJ>7CJS^&D%GaS4W*=_v$F4)Vxogw~aL#pF@YkAljkd6mO5( z0Z*L6i%b1x5flQ(&Oo}dekqLdII3X?D=p){heNk{I8T_mOMFN$^LPTePZ4lX3ssMP(1rYF?hFv*`18|a&-_MqK1gw?Nx zLbhS`y|@5eE+7f3=cMXifeV+moR*>We&0OxQfeAyR@IYoOb6zv zQf7FbL93Oh`VFCqU5?H~rK`m)A{#LIAwBfohbvLv`ggMySyA&J#Rcdw$OTwo@Uyr8 zJqEdeL}8RmHUzIVJo7hkq3+nr_c--esUfTo=c3YI;l0CDYE9~l9f8fQD5>Mpm7`HH z22zI!NRv9tc8H+_pVDLKL{vr|LWeaVr+e6pt*tViVngO`(NE2lbia3^{Wi>BXFws_ z`Rl2;0KMe^-n!YpsqV9=D)LjpqBYKx z@TZ_b4wSH7K_jPxFNP`HNC_ux%uvGHpxiJhVbUH(2|oz>49HhO32!oPB&Fw|#oi7e zxC6?PU3pJ}ct`RawBysyIZDP;V{q7!(7w&V@2r8$n6t@4Cr$vp{|)c`NT}hXiNvwNeWGhpaBf=fm6fkBgOfs;TfmSaeC%4P{>RTldH16@;w2q)?%JO1T}mLZI!av zkk&d9HGC4i6{m(z7n@x90chX>=wr$8wZ1=HnYek8Lm?QSs?^@bdphj}-eFFF+8FPm%)WzI z@jU(vY*_Ka_;K?%NL)^i4;JRtnp3lL;da$ri8V+K`~t-qcz?NpZ$J%9t||sTHAg?= zc1C$hgUQu)^fvkPXuoh3q)d)hDM-%~Eo$ZD6Y%d6QzlG{#qv1;6r00i7 zp&nC;M0%dAf3`PfiIg`Q+TNZ3#kK^1>RC9Z1M^fV zbBJ4MwL{_%UxF)9-})D@7FltKU0i@3gIs_W2JgTH=rPCzBp7t$5I=|ub;n*l4)IQE z2rI<7sPyxA?=Y2GGXUQ}WuOdzOIPkk#TXa>Ccv5jco3D5hXG&>$mt$N#vyJv3R@l- z=C5^7$aelZ0T-b69bABw@0i8~=z-1!B)%gDhj3(WO+pQ^+m+Lnw_9Nb3`yg9hX8pwwZhnPHG`eokxk#LCj zyQo@li2p_kO^Toa4Do?;h=X~&bnIw!l_f0|2nEMkjb%{C%psDia)3PFZZHnfUg_GVGk423^t}4cGpaWyKPkksjM715gO@4)|$v?Oeb+rLIjrhqMMcAs0IR1vT=Y*l&9_*9mBWhI$q80Ct~sYE zmOM_JrdZ4-u*t<~ehzxXIL&`1pD3qEKMk4Fd{VzJ-Q8~YAY>vY?~{*VQibtR$3x_m zyFUO3$P-T5cj2_vld!0m3wgkdQ5TwR+wDG1?Vx!1tgg4 z^C03^;Ek}r<}eN-erd)|=7Wgeg7-jgCoaJ1AmYEo1z4zPAO{g=bz(k<_-?$(m`;?T zj*cTMnBRl91%tUY_w!v;2Fm@ojM$%{Vhr356OiV9dLBgldsI>$28cC7v95$&)R7P2 zAmT?HlVeTsFeqfZrZ^cFpdSNVfEBP$!v*Mp%>^X>I|o~QAud=ls^xkjFI)U%Y7VP) zgo|RY#ruaT*4ks#Q5mSmaOukPQ85OO!33l|MvsGtUyjPj<1bhvT>M4vdkJH#-4^K? zWAU6Pec&TIRU6*7`z}-!`59x;8fV7%?a&~M=HQ+;*aUG&qk=}x82<|PtVYH-F=B=> z{w9@Vx z*#G~?VdHy|HwUV|dc%4f)jw`32Uwri^Ub=M>1(j>)4f(f4Bj&i!aqVmNUka%JWcmL z-JU&*L-66#kvUK<6SOYrgZc>EbzfCNmS!xNgPU?juxve zu|~iPeT3~r#KJkTR4zLDE6^iGNB;}?MCoYyX;gG{-e+nZ>FE3q(Z+N%^3?3$=xCAr z{E$3F`(uEB?B~<&0;i*Y7?)j&bhPfV*_eAyo|Bb-iro{XqyH!FzB?VAs4n;osb&e& z(MLTTLy&>UTn~k8L&pVNfIf801z3fSXK(@f2qzbigpPC4(dXjArQM=s__*K0cArR1 zllB9s70q*(%wkN?YDYvzmvN=)X|!uu3$5tr7A`=KNiM(&lQ-c4^qAxV5={03&oON-nvK*auND26BlBNRvxF>FAY@z-HV$^b%`^VqFQls3RW&9eo1Y zL&I#e2@2V+DW-7&`Z2%-SONPiT!0?fTtMQ#bI{SdaKVyME!Puy>FA58Ijq(ZE{dJU z`-dsk+GBK38K}o_>BFM8ig=xFV>NKZ%0yJq_b znD0bYk)Mtht#PKK-vbT8Vu}hKtyj><>FD3Vp4CW4CvD8o(cgn|!=R%{dl()4P0(jR zzGmp?)Dz2M(+!yW0o+U?AcLTzbq|#S%_BXroC%WBCx*O&S~3nb1m7o+-5h+^8o5iD zj!qs?{x6N(_N ze9m#TUapqlWped-dc1MHvoPzo3UJtQqg3iNtA4pqX>?lcnZm_$g?b~Ln1|QS)eByI zkw520p7=8ricj91Yb1o`1hrwIUGbX!)lU+ zl2?1Iz39;C6U;lR&3cd0GbjddxHyc`hn!uXS5S-hj1PnoIuOWJWgz5Z#}m-yD-Q-% z+tS;>*SZ=Qtx~Y-D=li}oGh7oEjihr(_06|uD?Yw9F7IfuD_8K>akLg*!5>wJ$bHQ zNJ=m2H9mSiwE7b;4ow8$^-dQPP`3Xs?U6-H<%BF8+MMkdi&-bOU+hZ~%c@pCL|v3>31B)1QJ1(8uYy0IN9t>9_!WIGGDbRF#wazX%sD?QAV$_5E`H z=Tp<9$3ALB^Yka6{91tW23oBIy+`x_X`8>JqS%o&$Z@UnIku0i+ zdPhETetQhurjg%H+L+Ves3eJ&fP}Fc={qUj@H?jAn-_J$Eg(jxb67m~Yd2 z65WqYUhhjPw>p&DsZ2a21a}imZ4Ukchn6(l1i5_(1R9{e z|44Swgyw!SYz=*{UI-h&S5v0jFYK@Qz%B#H-3gnWP>lDM-)#A92y7A_d?N7#$r-nB zu}$9!+-h{@ffc8B7NA761za_MFK}Us#X~39`-2w?sd@{Q>U_m-hlR#Izvb0xOnAX7 zwHobqfzlaV%6zL@o`9FvdWELf3ah0~&4U*b^OqMErmkvr{4Ls-*2?h$65|3p%0I=< zh(_#=-JCW$ZU&B{W1x^3N93x4qklcbtq|)pI@Eg#PF%Hb?-70!#S0EC&XBVaj#eoM z)bCjM4NjmEuWm_meV)0PK^@)wbY(E$O5gKt0Du^+r5^>@;t z-CMzzkt7^)l6ToZKyrb|mj&-Yb)mDsJyz`1c;e7R?3!4GJa=b*HLTFm;JxOF-=ho} z^IPDUmSWSB!M+q*4+D7C1(TFfE?Nv=KGXXoJX~>N7Ic;&WR9+@|haHnF$;rzgzf!8h#2kmj1B6B5Cw3O-d1k;JpS~Sl zzg&TJSEW%aCqF-KJNaFtD+1}Kgj*YRB_am_TMHF8e*9RLq`;gk0DIH!C^ zTsFFE>2S)D)w5jkn$%Uc5Ka9SJ5st5y(`v$`{U(__JR+RYEF^3Z>)WJL72YP9;qGRa}5RpvDDQMSK4Z7od;!asdh17YEwu-Xz6#jcTV6d+0c zmR9KT$79~k(34}KkS!h`iwn@>kqfZG z7sdK`|1iZ`^UrNm2FgFXbmeALjDde<0@D2R;iqpGgNl4ikEK6GrQ~6rSrc-)j3GSX z{O4#74c_8yP{`I>{538>?=83hD{t`$T!0?bTtHvm;$B?v=)A?3sX45?g^OZ;iuVsw zthKlJ9V!F$7A{>`JBiMTXjj_s5L3Kf?D2&2aj2X;{(|)~r@t8Hn^qo&cGciGwm~6V z$8jDmK<_xX04v9F87@E%3N9dV9DN>b)p(166KxH_mFlBXOPEmL*-egQC%23zmin_r3-FRCtm|MH?52G?rH}2AvPoZKA zi#{eGz3A(Cw9P%Jq&$wCHAAtkgx&03vG=_s;WqXi@}+VOSreX+6(!>KsqUxDpD% zYIkEaR`||Mw-=Py0=X)KF<)AbT8nwo5NSP^(^jF-7im4a=&g8K&wHilB+2VJudq<9 zQ$9MTk5Y$L5Spnl<Z_c(bjwHR((o*ZK{P9E~(Bi^lG4DT6-?K@G}lB)`A z^Bw`6MRhkHxum)MllSKgx_#0qp@LP1Ba zDxf=b4!Vi8cW52nquQ+Z;QYMn;6$qwsfm|Z)XMXv$ja0*U+N5c>%h)-SyxB{93L}0 zHF1Iz>amcPQWH-)u)SFU>Xl3#2#+F`TRDEaO7 z%z_Uq`civKH?mBPljP)0jeChyhcPwIF4Ju*+4B_P;1!WQw}Yg~L0+!>8>G%{XNR${ zlsNI`P&&bm`k0kjfQ3AXrhN>a68D_A>{3dJldP>tiA!DODRJ^|u>+&4n(JZ>xTnM= z+6$Vb8Z{+u-jotIU?@^|KHy_mUW)3)zzMz(3fXdkuf_%Fc@-|eiWB@ZT!5Y|;Q|s) zFpi|t<*{|7{VrU%6rLPWD%|_2Y0|y{wW4{Blj)5cX|+-++%S3Sui{G8^K1987D|sJ zo6|G@4HuxtBo|%&dQ5Tw2`2mGsaKtdO&B&T&@g!F<jH-hvBoAHMl`>a0%8JoVXllQEqrLmeGQRxp1$-WCkz);x6)m4WiqE+cjU6=UG3 znE*$g`gy3NJUlgPhGJa_yQm{SD!UHm>x{$^jnR9=ZjygXudljjuM9KLpFp9sFEIP; zJ8%Jd+;ag|V7?O?X<=%6xCC*jhS7ouVePJ#(YJBbw}{v-wz`;vAOx1o~qxCzz_7dO%S zUXt>r4WZ~$-sB*g?(IzCdRi5CqN=dj?C4Y8gf!>e)AvAwuwXV{l!?=;^a>hz%3B*Y zuEvzNq>Y)Bx2vJtFjC$~d-&U#K%W8m8mGKT!9FSFO+@Gbbl1S$Bx2e#ixTeVi}!0MNTzxnHyc3e={-C4MNk)6sAAHUF79Wj=J?-LxuE1Rt0yadzUB*W3T zF7)@?yuTw!dwbADxgzcD0a9pE1b|^^4?OKn2P}ogw|QsNqp+o;><9^+#&brFfI_gw zGNiqct1|Pz(%#hO#u$z^z#%H?AlV$KwU{Rkk@mKhwn|xQNGl!E0iMn?PH)B2-foW% zLFnV1O+3X7-q|$4j(H)+xd1z)ebJNlolX2S7y8a7ZEl;Cnb9j(<7~w;xURUd&!oCC z8Jk>HjQx_FFIpP3t`dYDEG+`hrRu9Utk0nO$4%t`>x*e{hCq5(CW~_p4o*X6v^dpr zX94!3S}# zL*KsUq7a%Hb)UVRiQ=5>i~~))hKj6yrN?maLOe4{?7tE_=E{s(agxZ48Y7=*W)%H2 zvdpL<9~u_#hsZl@SMCnG9$5j;R5n-E$~v!HE1qeGj24pOTk*vYQIZ)2Z5>fMikumh zei6{#xLqe(C6UFOXxrQ45lC};CIJ?*qS6iq&x|@QF1sW%qxf5oVefWRtn)P~JgJ#c zP$I3p=~x5qnNf-Mf~};QLn$-rd{i$6vf>;lWJ^{&9T%V{E4TnFvZ9C!(8tudfP}2b znHhB*E?nBiTe6z{K7+hKO_TNws1?m~oJ^>nMXMcAX4I>3rRp;}ZeuO9%8dFmT!0>v zT!0lO-;WE>W0DIOQ;&dOL9e*|Y>rX4Lm_0TwD! z_>_E^QCXdsGoyZuHyP83GSty=WCinekH(fH1`d$H+?vkZgvvnaOqUV61r>vLC3O%} z&l5Zzk4nlzXR>}O)|Ie}I`RQ!MqQ5f$}j^x4GP(=Bc6i`(Bqy9umW=p7ohjqTtMQp za~$q?11?xHq~#hSZ)VhUsX46H4las)9o|1ovDRMV9jFY{OSp99gQysTmtX?YNe?|T zqy7<b`m>K8K{$R>B>2%7=x2w0@6;RXJ*tcR8k%{!J6UX zCVJmXGNZI16n$ot9AwjFMv3d`_)ZN~g`5yzIf?eW5wAdlGUG%Vrb=d%UO^+zjM@gf z3u9(f(#A|?)G<(Q7@1L|JuEZo^`Osye9dM?k-&AA1e41UgBKAx0NumkZW1vaY-ZG{ zYSIUbJvwDZsddCy4&F*|4Ck0x!tCanS|kjTz*^N; zZ&?4F>K`{1&y2Ex^+TQ+^{7+Qh{1ctL3jcbGJ70yRRLlD*-Qz1`mYNNuePzb;WyJh zA)RoC1D|JViT#4p8CGIHnBXc`rq;)x zN9+u%yU8b-sYO2xIaBK?B;%#l*zdRcJIU(tcG*f9X?e4@x|y1WlDpOJ)QjcD{(7-d zDiz^f+pYFa7{DRC^YP$0-Rf%q7)yC*^mj|=g^wBAXV19Wpt*;|R5Vv& z-$--fei-Y-J*z9xXYlW&8a1oS_zK8=&bvZD${#f!=qn(9kLt%jxcmkR*%B`6rZ7NP z^n?o+U`4oW!UgDg0WKgRTykc2P2<9)P{fFW%3Gj8nV_1`DgI9U@*6)WbZ>|pp>l3 zi2Xh)#z4t30SYBc-XAU=s$r>K=@rR;p_1}YvaA`3btUYgj(kAbU2C_X)4U#QtD%tX zI^sB7fFAc;fEAdhZ~=NSa{-CZ&XL`<6BjHQ(sB)vH@oW$YL4`d!>|H$QS4QC|1iZ` zdx=?82I?hTy3$0&7`y}%koFQivb%0T<>c`ZtPweV#HQYxl4JxNmAzTGL*1pcb9^n@ zaRV4{heEb)4Z~=O>a{-AGX_mO*2wqK=`X_Or?k*%>mipb)5LOPv zMWx@udxxpi+JXESm4P}Cm#+K<6=QH9OhDR!EQ=4sf=}r&H2xTDD$e6PSOZ*~NAG({ z&X+d8qR;sf=T8~N#42$;t%@mB75Q_%gf!>Vuug&oWwz(i@KkcX^a>hz&exA%_ixPk zO4^vo`T7!+8%E9-X%EZ!dIsn-AYVn!*U_0!p_KV0qIdwkuRs|RXYHB!bzyQQ7LBaK zOWV9Uc9;l$Jl3G9i*X+8AsB~4zO11x^1+sTj2L?TY~JgUWQ8?dR4lT>7D%B<5kQ8) zKk%%u%o$VUnRw@{uva*Bjx+Tyg+k^W4RTfHGFVoa+T0k)hV!!2TFg_6$O?NAZI!YN zk({iQ6?QYd^$#v9>@LMJxURUd-%oXA$_gV_6=NSPIamq84we>y=Ti068`kfo`o~Sh zlY?wv{g7vceM>fsZqUi$S#X%A z;qbnS-}1@3Y70=XP;D0ohps&;OSiwL3-*nX?ozB+%G8cOHf=jAIE+Cd^8`e$Dsb55 z+ReC;k#kWnw%UT;#y*_(2=9Dql%rLOG_V^iAjH#g$b!W(9Vei-4lE7qJjGnN5_lTe zlSrW+>nkY@?1|a~vg}s&afVlal_ZGjuO5Kc6)qa1d0CfPz>5QcXx0e`I1+hYmRPYn z&YjYmqkB~I4>*jIa>Mhvhts%rRHS~=}fKce5B3G5|8!K zr(Q<=*1^{RVC1PJ?VIqttXIWlmvCN|?u0Eh`-M!i9Un3k!lXb zysW=N^yoxBxvSxqt+dedcAI zg*UcP(Tp1Ub zzZh=|26Jn|^mbGRN|?HI<*ld~17XSpqzTiWr*6Fum6V4zWzA5mD`6LPNdxaR__eD?Qn0eUcV0g2Dfk(c#LT(D$F%QZyaysV#7b6Bk%Toilc zG&-GQinaCTn2?~ z-H3+^(7O>Xz{-s@Z~=O>a{-APam>rQ85ipALh|KhT~7^RwBmw^5@=hnAO>Id_N!Ec51Nsnx~gPH-%!06O$=@{jb!5XB2iQ^3;C%i=L&==H;R zuSb%Xwbez%A}?zTDKsep$T0W^o|mOUgYp*6d07`Zb&h9AoDYRyv^Rp;pDML|feDj@7Xmnwlz|8;@k)i(Av ze0Q*hKS=YkKB?Hw3J!Opa3EI|I5;O)CDwN?3dUAj(A(I5?`mwcN|Bef)1p?MjzbnK zmgzVr(_06Ym-SnyPBs^g0G^li-=t8F^_7&DRkJ#t%bce*p}wHp=A^FC3QZ6@TDbuC z_1hdQNb|(jKnZL^OmgTsFo~s|fQgR`o+l=D5KehwV)vK;FIS$}6QJ`fPwY(ciROvX zPou~a>ol7qJijX?E${hV2gpNLshavfzl*$dcV~e#8qVla?vZlA(pO?vNHf2^SSRkeV2M71Ye_X~F4&cQzXUW3#9^Gn zwI9`ifnaGvAzOmw#kc@H!NLVt5iGak0`zPE7myGvIrF{VjtiHfY?fSYzxiHorKV9< zO8U$WrUUb&D5nWDXtg8C_xcR3RDEwg$y#W24%dCS06iwT04q#>9~YpCv(2nn(gTFQEw+Mz$)MCSX_XGiUyMJmDPzk-)kCgGNuz{sH5Y^ z3g+kGZNXq}O~hV?%0P)&ml3-M6=NV`nSeAA+cV#5FDfYy9m|@bSXaU>>c|K62DKNV z-7+jBZh}I#3yD|Z0`$P=0<6&dr?>z;nz?|)Y3E4z`YT+pWJ$|KMBaq2_fm6MEgoDH z`#HRSm}0Hn#Me+6sGD%<%D9aQE?XxaxLtIa*;+P%iGQfR&@I|(e=A5;$0UCq_skp-pHXRNPHz{c3SsNu- zc^R`d5+i1^HZF#8!^qko?O|CPPX>JkK`|i z1FWC9KqAHDB$Zv>f$BnM0j9Q=->x)jWqKr><$O0Yae+VQb!tF zx7aE)rv5nvK6p1dB0r5Hl3Y~~xofapjk^#HxMIME+WOx3_$0%}tG7XJF!`@ixV}48 zc_f5{PJ;h2|A*EssQ(#J|B6%7HpgMassCl9P>(5EqW;g; z9?4=mT*N5ovz7#UeO3feJH|z6lx;r>N?;oqiESs!b;1G;M$Wd2b)OU4E>``Ct#h&M z=Rl7b+kP(jMA>%wX~b;%2u@{@*4!jldgbo0>ycH~Ol5OrZOXS^yXEFCaW`Y&&B=L= z6<_=iscicoPG!lGoHE-k9;f(PuDEs#&UR`wgfL3_M&6A=`((I$vj)-mlBCb?DOZYj~LMyiYUvU9? zOmYEMnEVf1fF6@vK!V9W+4kSzjj+JxFxdA0&e+M!wjcF4Y{E0VF^>zdV%rP201Fij zgl*62#LTvzhBsM{T_!*o>gYJKg85VNwqP)~rqP~>%0Ou}ml0b=#TaNbCP1OldcF0k zg-Xgpqp@Zv)|Ie}I`ToW?XN()Wtf6q3WaPJ60gSv=z-4#SfTlyxBxwxxq!rJ=V04E zj0=`5X}O5V%eLP|&0)28a8c}6@cvKcrKJ<0FE$nl_Hq&W7ebF1 zp??wiLtT`qzB^hgeyLUKes_1Yy6uNywLahOMjOhFQYWm|+B0*lMm_ZF zKc-ag6cIYiM;maB(rU-TKg|8F*Yo}F% zZ|lNFsW|JE_L8e0ZVcMhTI@zg%{3Zfy%GA-#Y>k(>)L)PtalcQ2j&{Bg)aQEz76Va z7E6tV1t{8vDmSrT{F+aHDekX^m13#pwcF5SkjM+fKdf!}%|9Zs)MfJj+XB&z%S!r%PaY$Q{9(E>#Ox< zCoKB)Qlkuab))f4I5+)->2?)9Z%$t<`mI)@RfN~KmTP_s^h}ys3cJw}jZT=ZWsKI+ zjgD8YC{+ae0N>GiR&UaVv1eR$;q((ge)@t^I69K_p$&?HG{I&K`qYiq)x7$A$D8*- z<7N1MxL@x^N4NY^qg5`J{U+c8#8j!KSC$&}Ip`*6q*^XETmD@20Hl;e>%C6cC?-Ee zhgShq>&l&lW-$gHD3<J_Xx85e^Pkw5){Z6@2Jg`6@b)zjVF2z`QA&%uxfo2%jX=|^ur4b-u|HCIxqC%+`spDe0}vE~uP?e$wTRX?1gGGNqhtAqgafY)Iu>HU2zAB?ItnsEzw5Wu4=vQw@BXsxkO84fbyD_w?F<0 zLvI7|7BC{}^Dw|_)rD%<-F4(C(UI-NdI;${WICry+itX?)*#Sd+g|Wspk3F2aovUr zkEY+**J7i!n7HuFk6VGrN;0I%^!HWdNA@|moXlyv z;7>amCqIXaOal_TKf+9^ZPOQvtlLuIdL`oIhp*KS_6Nk$)9cO;m>L0 z&&mz(XASxD&7c|DXDKP5d(*X=|$WQms=aBYmC> SvWYU8qPRCFE2qxv%>M(wO(7Ei literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.reader.doctree b/docs/.doctrees/honeybee_radiance_postprocess.reader.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e7622de93971c8ac0efabeac0aa5a82dd3f5303f GIT binary patch literal 27001 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.results.annual_daylight.doctree b/docs/.doctrees/honeybee_radiance_postprocess.results.annual_daylight.doctree new file mode 100644 index 0000000000000000000000000000000000000000..67a0a657f159834deb38ef0a5c77214d49e58347 GIT binary patch literal 430746 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%0D6BC#?VF3f!gPAA4(Ym;#&ih-I87gFv)VGJgN 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

    O4s87vy6d*Tv6Rm5Urh!N}@^IGl3a)aIx&i`B7q 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.results.annual_irradiance.doctree b/docs/.doctrees/honeybee_radiance_postprocess.results.annual_irradiance.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c67397fcfa2f9c5a7f271afbb52730f34c6899cf GIT binary patch literal 257599 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

    g3AC7ur=XIn$#@V`m(+_a1Kg<;|Pvc zD8;AtZx--j(>*v5o@}z*Ebt%>;>fAgI#?%e7D)5TzP|MhoD7s#(h(H)n+1N*27r^d z{y7d{b|_w*;{R|2M^SI)PBC{sbWno|+F&~jHw)~JBRH}t)g#)tS-__wEX7-o@<-|j z_MUcRet=A;D{dAr``x{_OHR*VM~)YRD<%et`#@v&ga7H05#H^%A+{)0hj0cYJZ2dW zk6D(A9GGa$0B2bmnP}~k9mg`!nhAwRs>2h}GH5Uf4iDg8Wi-Jy&l7e;MHpT5Di0}I z4H9GtM#J#Slwf2CFcFzW`(<-LN+}YfCZImz`D@$z?rp4Dbj%Y82^hJ>*^<5+H0m z7T>U2&0UeO`K{PMF8n<=;HwVJ$el6e0=162X?R#Sl< z=Qimra1!aMz9PlH%5$6k-oc*m+$J*Yb2D#GvPS93 zT%tGhR(&H#mx> z&4;EvK%0iEtFOMmokhwpO}K>AdNO@MOY2_F?I&tiem z@!)e_6mnDW-=vb4DadgN%9Q;9WY6L>k)&zY2zi^a1DBwX1xf7^ls`L&lwX4KfEoKtlUv1lkKh|#iC=;u7Df}PrjuKvc_0z&5)|^DCAYqk{Mtm4Tj{UvC%0A; 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.util.doctree b/docs/.doctrees/honeybee_radiance_postprocess.util.doctree new file mode 100644 index 0000000000000000000000000000000000000000..239dd07d05f25e7074d6e98ef5f3293be055f358 GIT binary patch literal 36014 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/index.doctree b/docs/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..eb08239841123cfacd73f57f8a23893adbaac9a4 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/modules.doctree b/docs/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b2b4fa54a085054c324da4b8b455eb02dfddb05c GIT binary patch literal 2851 zcmai0-D_Jn6i<^lwiDa==sF5*Hp=MQvN|4P4`ok-!Cu1hFuFn?Iw4=lmWZx&C+RlM zL)rGwv4GyH{lEL^-s@{S6dJh1Iy&FycaF|qyZ_xk*sA`*p(}*ci!;iYHjKL%ddy^H z&b5yp;A_K3mln{idnAXn;1rk-Am=p8u_l{nU_Yl;-Vw=ME6a6 zD*B=0rB{6IDx3QP=;N!KxKXHq2 z+$1-wRNS3ehakT=-!7-fR4+4mVM@)`l3eFsY{55^dCS)e(A<5An8hRH`YU{o@jb!! z4Bvy$ZR{WyNT-!m1};8TiGLyu1F17rGCq@V6Uh-j($LH4g7LzOc)p9|(xSo&N-$WBP+Wo!UP2t z>k)>-CK2N+ON)ZrNY{f-^5a$Uk{)1$w<=b#f3$W`)?{(T_;Ga8Wtx-4eOTP7;Zk{y zdTx5X?qUmK@jS`i38SpE3GSo?_h3n>K^}UJdoT4IJ$~Fa?aUhOInWaJUQtz|Ov|np zhZmtg=YT8q#zq_%MRRzX7dRZ$W(ag&;<(=&ORI1iBD*9tMY@H#PAbiH3@0;Vyf&V% zU7p_w!!$8aTe6rLn@3Pa4mc|apqvJggUSarg)3fB$d&YhEL#&68-b=*FT%j`!dOof zf6G-o-wykNs`l6k$9y4?D^GptmQ0<{VSHN7VQzFqtwyfEVL8n~>3d5vo`Q=1hLO}o z=?T}FVc?3PU;5ej#n?&wezDS$lFm8O&2ZjE^M$*XXT~yuP6aq% zCUyNq*vpKbAx5M_GE!jX$wd@4+~d8aY{)tRRwk@>V)oF89YKpHQ*%We?Q!vMiJ;GZ@F zXV|cj<#Y<8f)@laVZ`7WO1=ydWlCW>0Xy6m-WTqN$pmC~R$P0G@H1oQlNjzL&ZH@E z63=sF*CU%f(8rIz{T}HU*;#f=eWI+?f4x+XMxzOCm)xF7?q`(^wCqIqT)|l1({Oh)U$A5Jqt5fBPrHycV> znS%6XS-{7%MpP5M83Gvpph!If29{IdB+Us|PH*waJb_mktPjbh^rl}%Ue3zS_-oO3er7QS5wbR12tz z^|M>Vmb<^9vA?uh37u@{$E>wJ4flJubu~A5(=kCZ>@I*w3 + + + + + + honeybee_radiance_postprocess.annual — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.annual

    +"""Shared functions for post-processing annual results."""
    +from typing import Union
    +import numpy as np
    +
    +from ladybug.analysisperiod import AnalysisPeriod
    +from .util import filter_array
    +
    +
    +
    [docs]def occupancy_schedule_8_to_6( + timestep: int = 1, as_list: bool = False) -> Union[np.ndarray, list]: + """Create an occupancy schedule for LEED (8 am to 6 pm). + + Args: + timestep: An integer value noting the number of timesteps per hour. + Defaults to 1. + as_list: Boolean toggle to output the schedule as a Python list instead + of a NumPy array. Defaults to False. + + Returns: + A schedule as an array or list. + """ + full_analysis_period = AnalysisPeriod(timestep=timestep) + analysis_period = AnalysisPeriod(st_hour=8, end_hour=17, timestep=timestep) + schedule = np.zeros(8760 * timestep).astype(int) + hours = np.where(np.isin(full_analysis_period.hoys, analysis_period.hoys))[0] + schedule[hours] = 1 + if as_list: + schedule = schedule.tolist() + + return schedule
    + + +
    [docs]def schedule_to_hoys( + schedule: Union[list, np.ndarray], + sun_up_hours: Union[list, np.ndarray] = None, as_list: bool = False + ) -> Union[np.ndarray, list]: + """Convert a schedule to hoys. + + Args: + schedule: A list of 8760 values for the occupancy schedule. + sun_up_hours: An optional list of sun up hours as integers. If sun up + hours are provided the function will exclude all values from the + schedule that are not among the sun up hours. Defaults to None. + as_list: Boolean toggle to output the schedule as a Python list instead + of a NumPy array. Defaults to False. + + Returns: + An array or list of occupancy expressed as hoys. + """ + assert len(schedule) == 8760 + if not isinstance(schedule, np.ndarray): + schedule = np.array(schedule).astype(int) + + hours = np.arange(0, 8760, 1) + if sun_up_hours: + sun_up_hours = np.array(sun_up_hours).astype(int) + mask = np.ones(schedule.size, dtype=bool) + mask[sun_up_hours] = False + schedule[mask] = 0 + + occ_hoys = filter_array(hours, np.array(schedule)) + + if as_list: + occ_hoys = occ_hoys.tolist() + + return occ_hoys
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/annualdaylight.html b/docs/_modules/honeybee_radiance_postprocess/annualdaylight.html new file mode 100644 index 00000000..6093fd4b --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/annualdaylight.html @@ -0,0 +1,834 @@ + + + + + + + honeybee_radiance_postprocess.annualdaylight — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.annualdaylight

    +"""Functions for post-processing annual daylight outputs.
    +
    +Note: These functions will most likely be moved to a separate package in the near future.
    +"""
    +import json
    +import os
    +import numpy as np
    +
    +from ladybug.color import Colorset
    +from ladybug.datatype.fraction import Fraction
    +from ladybug.legend import LegendParameters
    +from honeybee_radiance.postprocess.annual import filter_schedule_by_hours, \
    +    _process_input_folder
    +
    +from .metrics import da_array2d, cda_array2d, udi_array2d, \
    +    udi_lower_array2d, udi_upper_array2d
    +from .util import filter_array
    +
    +
    +
    [docs]def metrics_to_files(ill_file, occ_pattern, output_folder, threshold=300, + min_t=100, max_t=3000, grid_name=None, total_hours=None, + sun_down_occ_hours=0): + """Compute annual metrics for an ill file and write the results to a folder. + + This function generates 5 different files or daylight autonomy, continuous daylight + autonomy, lower than useful daylight illuminance, useful daylight illuminance and + higher than useful daylight illuminance. + + Args: + ill_file: Path to an ill file generated by Radiance. The ill file should be + tab separated and shot NOT have a header. The results for each sensor point + should be available in a row and and each column should be the illuminance + value for a sun_up_hour. The number of columns should match the number of + sun up hours. + occ_pattern: A list of 0 and 1 values for hours of occupancy. + output_folder: An output folder where the results will be written to. The folder + will be created if not exist. + threshold: Threshold illuminance level for daylight autonomy. Default: 300. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + max_t: Maximum threshold for useful daylight illuminance. Default: 3000. + grid_name: An optional name for grid name which will be used to name the output + files. If None the name of the input file will be used. + total_hours: An integer for the total number of occupied hours in the + occupancy schedule. If None, it will be assumed that all of the + occupied hours are sun-up hours and are already accounted for + in the the occ_pattern. + + Returns: + Tuple(file.da, file.cda, file.udi, file.udi, file.udi) + + """ + if not os.path.isdir(output_folder): + os.makedirs(output_folder) + + grid_name = grid_name or os.path.split(ill_file)[-1][-4:] + da = os.path.join(output_folder, 'da', '%s.da' % grid_name).replace('\\', '/') + cda = os.path.join(output_folder, 'cda', '%s.cda' % grid_name).replace('\\', '/') + udi = os.path.join(output_folder, 'udi', '%s.udi' % grid_name).replace('\\', '/') + udi_lower = \ + os.path.join(output_folder, 'udi_lower', '%s.udi' % grid_name).replace('\\', '/') + udi_upper = \ + os.path.join(output_folder, 'udi_upper', '%s.udi' % grid_name).replace('\\', '/') + + for file_path in [da, cda, udi, udi_upper, udi_lower]: + folder = os.path.dirname(file_path) + if not os.path.isdir(folder): + os.makedirs(folder) + + mask = np.array(occ_pattern) + results = np.load(ill_file) + results_occ = np.apply_along_axis(filter_array, 1, results, mask=mask) + + dar = da_array2d(results_occ, total_occ=total_hours, threshold=threshold) + np.savetxt(da, dar, fmt='%.2f') + + cdar = cda_array2d(results_occ, total_occ=total_hours, threshold=threshold) + np.savetxt(cda, cdar, fmt='%.2f') + + udir = udi_array2d(results_occ, total_occ=total_hours, min_t=min_t, max_t=max_t) + np.savetxt(udi, udir, fmt='%.2f') + + udi_lowerr = udi_lower_array2d(results_occ, total_occ=total_hours, min_t=min_t, + sun_down_occ_hours=sun_down_occ_hours) + np.savetxt(udi_lower, udi_lowerr, fmt='%.2f') + + udi_upperr = udi_upper_array2d(results_occ, total_occ=total_hours, max_t=max_t) + np.savetxt(udi_upper, udi_upperr, fmt='%.2f') + + return da, cda, udi_lower, udi, udi_upper
    + + +# TODO - support a list of schedules/schedule folder to match the input grids +
    [docs]def metrics_to_folder( + results_folder, schedule=None, threshold=300, min_t=100, max_t=3000, + grids_filter='*', sub_folder='metrics' + ): + """Compute annual metrics in a folder and write them in a subfolder. + + This folder is an output folder of annual daylight recipe. Folder should include + grids_info.json and sun-up-hours.txt - the script uses the list in grids_info.json + to find the result files for each sensor grid. + + Args: + results_folder: Results folder. + schedule: An annual schedule for 8760 hours of the year as a list of values. + threshold: Threshold illuminance level for daylight autonomy. Default: 300. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + max_t: Maximum threshold for useful daylight illuminance. Default: 3000. + grids_filter: A pattern to filter the grids. By default all the grids will be + processed. + sub_folder: An optional relative path for subfolder to copy results files. + Default: metrics + + Returns: + str -- Path to results folder. + + """ + grids, sun_up_hours = _process_input_folder(results_folder, grids_filter) + occ_pattern, total_occ, sun_down_occ_hours = \ + filter_schedule_by_hours(sun_up_hours=sun_up_hours, schedule=schedule) + + metrics_folder = os.path.join(results_folder, sub_folder) + if not os.path.isdir(metrics_folder): + os.makedirs(metrics_folder) + + for grid in grids: + ill_file = os.path.join(results_folder, '%s.npy' % grid['full_id']) + metrics_to_files( + ill_file, occ_pattern, metrics_folder, threshold, min_t, + max_t, grid['full_id'], total_occ, sun_down_occ_hours + ) + + # copy info.json to all results folders + for folder_name in ['da', 'cda', 'udi_lower', 'udi', 'udi_upper']: + grid_info = os.path.join(metrics_folder, folder_name, 'grids_info.json') + with open(grid_info, 'w') as outf: + json.dump(grids, outf) + + metric_info_dict = _annual_daylight_vis_metadata() + for metric, data in metric_info_dict.items(): + file_path = os.path.join(metrics_folder, metric, 'vis_metadata.json') + with open(file_path, 'w') as fp: + json.dump(data, fp, indent=4) + + return metrics_folder
    + + +def _annual_daylight_vis_metadata(): + """Return visualization metadata for annual daylight.""" + udi_l_lpar = LegendParameters(min=0, max=100, colors=Colorset.nuanced()) + udi_u_lpar = LegendParameters(min=0, max=100, colors=Colorset.glare_study()) + udi_lpar = LegendParameters(min=0, max=100, colors=Colorset.annual_comfort()) + cda_lpar = LegendParameters(min=0, max=100, colors=Colorset.annual_comfort()) + da_lpar = LegendParameters(min=0, max=100, colors=Colorset.annual_comfort()) + + metric_info_dict = { + 'udi_lower': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Useful Daylight Illuminance Lower').to_dict(), + 'unit': '%', + 'legend_parameters': udi_l_lpar.to_dict() + }, + 'udi_upper': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Useful Daylight Illuminance Upper').to_dict(), + 'unit': '%', + 'legend_parameters': udi_u_lpar.to_dict() + }, + 'udi': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Useful Daylight Illuminance').to_dict(), + 'unit': '%', + 'legend_parameters': udi_lpar.to_dict() + }, + 'cda': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Continuous Daylight Autonomy').to_dict(), + 'unit': '%', + 'legend_parameters': cda_lpar.to_dict() + }, + 'da': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + } + } + + return metric_info_dict + + +def _annual_daylight_config(): + """Return vtk-config for annual daylight. """ + cfg = { + "data": [ + { + "identifier": "Useful Daylight Illuminance Lower", + "object_type": "grid", + "unit": "Percentage", + "path": "udi_lower", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Useful Daylight Illuminance Upper", + "object_type": "grid", + "unit": "Percentage", + "path": "udi_upper", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "glare_study", + "label_parameters": { + "color": [34, 247, 10], + "size": 0, + "bold": True, + }, + }, + }, + { + "identifier": "Useful Daylight Illuminance", + "object_type": "grid", + "unit": "Percentage", + "path": "udi", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "annual_comfort", + "label_parameters": { + "color": [34, 247, 10], + "size": 0, + "bold": True, + }, + }, + }, + { + "identifier": "Continuous Daylight Autonomy", + "object_type": "grid", + "unit": "Percentage", + "path": "cda", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "annual_comfort", + "label_parameters": { + "color": [34, 247, 10], + "size": 0, + "bold": True, + }, + }, + }, + { + "identifier": "Daylight Autonomy", + "object_type": "grid", + "unit": "Percentage", + "path": "da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "annual_comfort", + "label_parameters": { + "color": [34, 247, 10], + "size": 0, + "bold": True, + }, + }, + }, + ] + } + + return cfg +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/cli/grid.html b/docs/_modules/honeybee_radiance_postprocess/cli/grid.html new file mode 100644 index 00000000..8f919b61 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/cli/grid.html @@ -0,0 +1,787 @@ + + + + + + + honeybee_radiance_postprocess.cli.grid — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.cli.grid

    +"""honeybee radiance postprocess grid commands."""
    +import click
    +import sys
    +import logging
    +import json
    +import numpy as np
    +from pathlib import Path
    +
    +from honeybee_radiance_postprocess.reader import binary_to_array
    +from ..annualdaylight import _annual_daylight_vis_metadata
    +
    +_logger = logging.getLogger(__name__)
    +
    +
    +@click.group(help='Commands for generating and modifying sensor grids.')
    +def grid():
    +    pass
    +
    +
    +@grid.command('merge-folder')
    +@click.argument(
    +    'input-folder',
    +    type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True))
    +@click.argument(
    +    'output-folder',
    +    type=click.Path(file_okay=False, dir_okay=True, resolve_path=True))
    +@click.argument('extension', type=str)
    +@click.option(
    +    '--dist-info', '-di',
    +    help='An optional input for distribution information to put the grids back together '
    +    '. Alternatively, the command will look for a _redist_info.json file inside the '
    +    'folder.', type=click.Path(file_okay=True, dir_okay=False, resolve_path=True)
    +)
    +def merge_grid_folder(input_folder, output_folder, extension, dist_info):
    +    """Restructure files in a distributed folder.
    +
    +    \b
    +    Args:
    +        input_folder: Path to input folder.
    +        output_folder: Path to the new restructured folder
    +        extension: Extension of the files to collect data from. It will be ``pts`` for
    +            sensor files. Another common extension is ``ill`` for the results of daylight
    +            studies.
    +    """
    +    try:
    +        # handle optional case for Functions input
    +        if dist_info and not Path(dist_info).is_file():
    +            dist_info = None
    +        restore_original_distribution(input_folder, output_folder, extension, dist_info)
    +    except Exception:
    +        _logger.exception('Failed to restructure data from folder.')
    +        sys.exit(1)
    +    else:
    +        sys.exit(0)
    +
    +
    +@grid.command('merge-folder-metrics')
    +@click.argument(
    +    'input-folder',
    +    type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True))
    +@click.argument(
    +    'output-folder',
    +    type=click.Path(file_okay=False, dir_okay=True, resolve_path=True))
    +@click.option(
    +    '--dist-info', '-di',
    +    help='An optional input for distribution information to put the grids back together '
    +    '. Alternatively, the command will look for a _redist_info.json file inside the '
    +    'folder.', type=click.Path(file_okay=True, dir_okay=False, resolve_path=True)
    +)
    +@click.option(
    +    '--grids-info', '-gi',
    +    help='An optional input for grid information that will be copied to each '
    +    'metric folder. This file is usually called grids_info.json.',
    +    type=click.Path(file_okay=True, dir_okay=False, resolve_path=True)
    +)
    +def merge_metrics_folder(input_folder, output_folder, dist_info, grids_info):
    +    """Restructure annual daylight metrics in a distributed folder.
    +    
    +    Since this command redistributes metrics it is expected that the input
    +    folder has sub folder
    +
    +    \b
    +    Args:
    +        input_folder: Path to input folder.
    +        output_folder: Path to the new restructured folder
    +    """
    +    try:
    +        # handle optional case for Functions input
    +        if dist_info and not Path(dist_info).is_file():
    +            dist_info = None
    +        if grids_info:
    +            with open(grids_info) as gi:
    +                grids_info = json.load(gi)
    +        extension_mapper = {
    +            'da': 'da',
    +            'cda': 'cda',
    +            'udi': 'udi',
    +            'udi_lower': 'udi',
    +            'udi_upper': 'udi'
    +        }
    +        metric_info_dict = _annual_daylight_vis_metadata()
    +        input_folder = Path(input_folder)
    +        output_folder = Path(output_folder)
    +        for metric, extension in extension_mapper.items():
    +            metric_folder = input_folder.joinpath(metric)
    +            metric_out = output_folder.joinpath(metric)
    +            restore_original_distribution_metrics(
    +                metric_folder, output_folder, metric, extension, dist_info)
    +
    +            if grids_info:
    +                info_file = metric_out.joinpath('grids_info.json')
    +                info_file.write_text(json.dumps(grids_info))
    +
    +            vis_data = metric_info_dict[metric]
    +            vis_metadata_file = metric_out.joinpath('vis_metadata.json')
    +            vis_metadata_file.write_text(json.dumps(vis_data, indent=4))
    +    except Exception:
    +        _logger.exception('Failed to restructure data from folder.')
    +        sys.exit(1)
    +    else:
    +        sys.exit(0)
    +
    +
    +
    [docs]def restore_original_distribution( + input_folder, output_folder, extension='npy', dist_info=None): + """Restructure files to the original distribution based on the distribution info. + + It will assume that the files in the input folder are NumPy files. However, + if it fails to load the files as arrays it will try to load from binary + Radiance files to array. + + Args: + input_folder: Path to input folder. + output_folder: Path to the new restructured folder + extension: Extension of the files to collect data from. Default is ``npy`` for + NumPy files. Another common extension is ``ill`` for the results of daylight + studies. + dist_info: Path to dist_info.json file. If None, the function will try to load + ``_redist_info.json`` file from inside the input_folder. (Default: None). + """ + if not dist_info: + _redist_info_file = Path(input_folder, '_redist_info.json') + else: + _redist_info_file = Path(dist_info) + + assert _redist_info_file.is_file(), 'Failed to find %s' % _redist_info_file + + with open(_redist_info_file) as inf: + data = json.load(inf) + + # create output folder + output_folder = Path(output_folder) + if not output_folder.is_dir(): + output_folder.mkdir(parents=True, exist_ok=True) + + src_file = Path() + for f in data: + output_file = Path(output_folder, f['identifier']) + # ensure the new folder is created. in case the identifier has a subfolder + parent_folder = output_file.parent + if not parent_folder.is_dir(): + parent_folder.mkdir() + + out_arrays = [] + for src_info in f['dist_info']: + st = src_info['st_ln'] + end = src_info['end_ln'] + new_file = Path(input_folder, '%s.%s' % (src_info['identifier'], extension)) + if not new_file.samefile(src_file): + src_file = new_file + try: + array = np.load(src_file) + except Exception: + array = binary_to_array(src_file) + slice_array = array[st:end+1,:] + + out_arrays.append(slice_array) + + out_array = np.concatenate(out_arrays) + # save numpy array, .npy extension is added automatically + np.save(output_file, out_array)
    + + +
    [docs]def restore_original_distribution_metrics( + input_folder, output_folder, metric, extension, dist_info=None): + """Restructure files to the original distribution based on the distribution info. + + It will assume that the files in the input folder are NumPy files. However, + if it fails to load the files as arrays it will try to load from binary + Radiance files to array. + + Args: + input_folder: Path to input folder. + output_folder: Path to the new restructured folder + metric: Name of the metric to redistribute. + extension: Extension of the files to collect data from. For annual + daylight metrics the extension can be 'da', 'cda', or 'udi'. + dist_info: Path to dist_info.json file. If None, the function will try to load + ``_redist_info.json`` file from inside the input_folder. (Default: None). + """ + if not dist_info: + _redist_info_file = Path(input_folder, '_redist_info.json') + else: + _redist_info_file = Path(dist_info) + + assert _redist_info_file.is_file(), 'Failed to find %s' % _redist_info_file + + with open(_redist_info_file) as inf: + data = json.load(inf) + + # create output folder + output_folder = Path(output_folder) + if not output_folder.is_dir(): + output_folder.mkdir() + + src_file = Path() + for f in data: + output_file = Path(output_folder, metric, '%s.%s' % (f['identifier'], extension)) + # ensure the new folder is created. in case the identifier has a subfolder + parent_folder = output_file.parent + if not parent_folder.is_dir(): + parent_folder.mkdir() + + out_arrays = [] + for src_info in f['dist_info']: + st = src_info['st_ln'] + end = src_info['end_ln'] + new_file = Path(input_folder, '%s.%s' % (src_info['identifier'], extension)) + if not new_file.samefile(src_file): + src_file = new_file + array = np.loadtxt(src_file) + slice_array = array[st:end+1] + out_arrays.append(slice_array) + + out_array = np.concatenate(out_arrays) + # save array as txt file + np.savetxt(output_file, out_array, fmt='%.2f')
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/cli/util.html b/docs/_modules/honeybee_radiance_postprocess/cli/util.html new file mode 100644 index 00000000..50d09a8f --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/cli/util.html @@ -0,0 +1,671 @@ + + + + + + + honeybee_radiance_postprocess.cli.util — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.cli.util

    +from ladybug.analysisperiod import AnalysisPeriod
    +from datetime import datetime
    +import copy
    +
    +
    +
    [docs]def get_hoys(start_date, start_time, end_date, end_time, timestep, leap_year): + """Return list of hours from start date, star hour, end date and end hour. + + Date should be formatted as MMM-DD (e.g JUL-21) and hours must be formatted + as HH:MM (e.g 18:30). + """ + # convert datetimes + try: + start_date = datetime.strptime(start_date, '%b-%d') + except ValueError as e: + raise ValueError('Wrong input for start date:\n\t{}'.format(e)) + try: + start_time = datetime.strptime(start_time, '%H:%M') + except ValueError as e: + raise ValueError('Wrong input for start time:\n\t{}'.format(e)) + try: + end_date = datetime.strptime(end_date, '%b-%d') + except ValueError as e: + raise ValueError('Wrong input for end date:\n\t{}'.format(e)) + try: + end_time = datetime.strptime(end_time, '%H:%M') + except ValueError as e: + raise ValueError('Wrong input for end time:\n\t{}'.format(e)) + + org_end_time = copy.copy(end_time) + if end_time.minute != 0: + if end_time.hour != 23: + end_time = datetime( + end_time.year, end_time.month, end_time.day, end_time.hour + 1, 0 + ) + else: + end_time = datetime( + end_time.year, end_time.month, end_time.day + 1, 0, 0 + ) + ap = AnalysisPeriod( + start_date.month, start_date.day, start_time.hour, + end_date.month, end_date.day, end_time.hour, + timestep, leap_year + ) + + hoys = ap.hoys + + # filter start and end hours if needed + start_index = 0 + end_index = None + if start_time.minute != 0: + # remove the hours that are smaller than this hour + for start_index, h in enumerate(hoys): + if round(60 * h) % 60 >= start_time.minute: + break + + if org_end_time.minute != 0: + for end_index, h in enumerate(reversed(hoys)): + if (60 * h) % 60 <= org_end_time.minute: + break + + if start_index == 0 and end_index is None: + return hoys + elif end_index is None: + return hoys[start_index:] + else: + return hoys[start_index: -1 * (end_index + 1)]
    + + +
    [docs]def handle_operator(operator): + """Handle operator for rmtxopt command.""" + if operator == '+': + return '+' + elif operator == '-': + return '+ -s 1.0' + elif operator == '/': + return '/' + elif operator == '*': + return '"*"' + else: + raise ValueError('Invalid operator: %s' % operator)
    + + +
    [docs]def remove_header(input_file): + """Remove the header text from a Radiance matrix file.""" + inf = open(input_file) + first_line = next(inf) + if first_line[:10] == '#?RADIANCE': + for line in inf: + if line[:7] == 'FORMAT=': + # pass next empty line + next(inf) + first_line = next(inf) + break + continue + return first_line, inf
    + + +
    [docs]def get_compare_func(include_min, include_max, comply): + if include_max and include_min: + if comply: + compare = lambda value, minimum, maximum: minimum <= value <= maximum + else: + compare = lambda value, minimum, maximum: not (minimum <= value <= maximum) + elif not include_max and not include_min: + if comply: + compare = lambda value, minimum, maximum: minimum < value < maximum + else: + compare = lambda value, minimum, maximum: not (minimum < value < maximum) + elif include_max and not include_min: + if comply: + compare = lambda value, minimum, maximum: minimum < value <= maximum + else: + compare = lambda value, minimum, maximum: not (minimum < value <= maximum) + elif not include_max and include_min: + if comply: + compare = lambda value, minimum, maximum: minimum <= value < maximum + else: + compare = lambda value, minimum, maximum: not (minimum <= value < maximum) + + return compare
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/dynamic.html b/docs/_modules/honeybee_radiance_postprocess/dynamic.html new file mode 100644 index 00000000..f5f9fc5a --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/dynamic.html @@ -0,0 +1,823 @@ + + + + + + + honeybee_radiance_postprocess.dynamic — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.dynamic

    +"""Post-processing classes for dynamic schedules."""
    +import json
    +import os
    +import sys
    +from itertools import islice, cycle
    +
    +from honeybee.config import folders
    +
    +
    +
    [docs]class ApertureGroupSchedule(object): + """ApertureGroupSchedule. + + This class contains the dynamic states schedule of a single ApertureGroup. + + Args: + identifier: Identifier of the ApertureGroup. + schedule: A list or tuple of integer values. + + Properties: + * identifier + * schedule + * is_static + """ + __slots__ = ('_identifier', '_schedule', '_is_static') + + def __init__(self, identifier, schedule, is_static=None): + """Initialize ApertureGroupSchedule.""" + self._identifier = identifier + self.schedule = schedule + self.is_static = is_static + +
    [docs] @classmethod + def from_dict(cls, data): + """Initialize a ApertureGroupSchedule from a dictionary. + + Args: + data: A dictionary representation of an ApertureGroupSchedule + object. + """ + identifier = data['identifier'] + schedule = data['schedule'] + is_static = data['is_static'] if 'is_static' in data else None + return cls(identifier, schedule, is_static)
    + + @property + def identifier(self): + """Return identifier.""" + return self._identifier + + @property + def schedule(self): + """Return ApertureGroup schedule.""" + return self._schedule + + @schedule.setter + def schedule(self, schedule): + assert isinstance(schedule, (list, tuple)), \ + ('Failed to add schedule. Received input of type: ' + '%s. Expected input of type: list or tuple.' % type(schedule)) + if isinstance(schedule, tuple): + schedule = list(schedule) + if len(schedule) < 8760: + schedule = list(islice(cycle(schedule), 8760)) + elif len(schedule) > 8760: + error_message = ( + 'The light path %s has %s values in ' + 'its states schedule. Maximum allowed number of values ' + 'is 8760.' % (self.identifier, len(schedule)) + ) + raise ValueError(error_message) + self._schedule = schedule + + @property + def is_static(self): + """Return True if schedule is static.""" + return self._is_static + + @is_static.setter + def is_static(self, value): + if value is not None: + assert isinstance(value, bool) + self._is_static = value + else: + if len(set(self.schedule)) == 1: + self._is_static = True + else: + self._is_static = False + +
    [docs] def to_dict(self): + """Return ApertureGroupSchedule as a dictionary.""" + base = {} + base['identifier'] = self.identifier + base['schedule'] = self.schedule + base['is_static'] = self.is_static + return base
    + +
    [docs] def ToString(self): + """Overwrite .NET ToString.""" + return self.__repr__()
    + + def __repr__(self): + return '{}: {}'.format(self.__class__.__name__, self.identifier)
    + + +
    [docs]class DynamicSchedule(object): + """DynamicSchedule. + + This class contains a single property (dynamic_schedule). This property is + a dictionary where keys are ApertureGroup identifiers and the value for + each key is the dynamic schedule for the ApertureGroup. + + Args: + dynamic_schedule: A dictionary of ApertureGroup identifier and + schedules. + + Properties: + * dynamic_schedule + """ + __slots__ = ('_dynamic_schedule',) + + def __init__(self, dynamic_schedule = None): + self.dynamic_schedule = dynamic_schedule + +
    [docs] @classmethod + def from_group_schedules(cls, group_schedules): + """Initialize a DynamicSchedule from a list of ApertureGroupSchedules. + + The method will automatically sense if there are duplicated groups in + the list and ensure the group schedule only appears once. + + Args: + data: A dictionary representation of a DynamicSchedule objects. + """ + dyn_sch = cls() + dyn_sch_ids = set() + for _ap_group in group_schedules: + assert isinstance(_ap_group, ApertureGroupSchedule), \ + 'Expected Aperture Group Schedule. Got {}'.format(type(_ap_group)) + if _ap_group.identifier not in dyn_sch_ids: + dyn_sch_ids.add(_ap_group.identifier) + dyn_sch.add_aperture_group_schedule(_ap_group) + return dyn_sch
    + +
    [docs] @classmethod + def from_dict(cls, data): + """Initialize a DynamicSchedule from a dictionary. + + Args: + data: A dictionary representation of a DynamicSchedule objects. + """ + dynamic_schedule = {} + for identifier, group in data.items(): + dynamic_schedule[identifier] = ApertureGroupSchedule.from_dict(group) + return cls(dynamic_schedule)
    + +
    [docs] @classmethod + def from_json(cls, json_file): + """Initialize a DynamicSchedule from a JSON file. + + Args: + json_file: Path to JSON file. + """ + assert os.path.isfile(json_file), 'Failed to find %s' % json_file + if sys.version_info < (3, 0): + with open(json_file) as inf: + data = json.load(inf) + else: + with open(json_file, encoding='utf-8') as inf: + data = json.load(inf) + return cls.from_dict(data)
    + + @property + def dynamic_schedule(self): + """Return dynamic schedule as a dictionary.""" + return self._dynamic_schedule + + @dynamic_schedule.setter + def dynamic_schedule(self, dynamic_schedule): + if not dynamic_schedule: + dynamic_schedule = {} + assert isinstance(dynamic_schedule, dict), \ + 'Expected dictionary. Got %s.' % type(dynamic_schedule) + self._dynamic_schedule = dynamic_schedule + +
    [docs] def add_aperture_group_schedule(self, aperture_group_schedule): + """Add an ApertureGroupSchedule to the DynamicSchedule instance. + + Args: + aperture_group_schedule: An ApertureGroupSchedule object. + """ + assert isinstance(aperture_group_schedule, ApertureGroupSchedule), \ + ('Failed to add ApertureGroupSchedule. Received input of type: ' + '%s. Expected input of type: ApertureGroupSchedule.' \ + % type(aperture_group_schedule)) + identifier = aperture_group_schedule.identifier + self.dynamic_schedule[identifier] = aperture_group_schedule
    + +
    [docs] def filter_by_identifiers(self, identifiers): + """Filter the DynamicSchedule by identifiers. + + This method returns a filtered DynamicSchedule object. + + Args: + identifiers: A list of identifiers. + + Returns: + A filtered DynamicSchedule object. + """ + filter_dyn_sch = DynamicSchedule() + for identifier in identifiers: + if identifier in self.dynamic_schedule: + filter_dyn_sch.add_aperture_group_schedule( + self.dynamic_schedule[identifier] + ) + else: + filter_dyn_sch.add_aperture_group_schedule( + ApertureGroupSchedule(identifier, [0]) + ) + return filter_dyn_sch
    + +
    [docs] def to_dict(self, simplified=False): + """Return DynamicSchedule as a dictionary.""" + base = {} + for identifier, group in self.dynamic_schedule.items(): + if not simplified: + base[identifier] = group.to_dict() + else: + base[identifier] = group.to_dict()['schedule'] + return base
    + +
    [docs] def to_json(self, folder=None, file_name=None, indent=None, simplified=False): + """Write a DynamicSchedule to JSON. + + Args: + folder: A text string for the directory where the JSON file will be + written. If unspecified, the default simulation folder will be + used. This is usually at "C:\\Users\\USERNAME\\simulation." + file_name: _description_. Defaults to None. + indent: A positive integer to set the indentation used in the + resulting JSON file. (Default: None). + + Returns: + json_file: Path to JSON file. + """ + # create dictionary of the DynamicSchedule + dyn_sch_dict = self.to_dict(simplified=simplified) + + # set up name and folder for the JSON + file_name = file_name if file_name else 'dynamic_schedule' + if not file_name.endswith('.json'): + file_name += '.json' + folder = folder if folder is not None else folders.default_simulation_folder + json_file = os.path.join(folder, file_name) + + # write JSON + with open(json_file, 'w') as fp: + json.dump(dyn_sch_dict, fp, indent=indent) + return json_file
    + +
    [docs] def duplicate(self): + """Get a copy of this object.""" + return self.__copy__()
    + +
    [docs] def ToString(self): + """Overwrite .NET ToString.""" + return self.__repr__()
    + + def __copy__(self): + new_dyn_sch = DynamicSchedule(self.dynamic_schedule) + return new_dyn_sch + + def __repr__(self): + return '{}'.format(self.__class__.__name__)
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/electriclight.html b/docs/_modules/honeybee_radiance_postprocess/electriclight.html new file mode 100644 index 00000000..8330dd19 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/electriclight.html @@ -0,0 +1,568 @@ + + + + + + + honeybee_radiance_postprocess.electriclight — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.electriclight

    +"""Functions for post-processing daylight outputs into electric lighting schedules."""
    +from typing import List
    +import numpy as np
    +
    +
    [docs]def array_to_dimming_fraction( + array: np.ndarray, su_pattern: List[int], setpt: float, m_pow: float, + m_lgt: float, off_m: float) -> list: + """Compute hourly dimming fractions for a given result file.""" + fract_dim = (setpt - array) / (setpt - m_lgt) + par_dim = fract_dim + ((1 - fract_dim) * m_pow) + su_values = np.where(array > setpt, 0 if off_m else m_pow, + (np.where(array <= m_lgt, 1, par_dim))).sum(axis=0) + su_values = su_values / array.shape[0] + + dim_fract = np.ones(8760) + dim_fract[su_pattern] = su_values + + return dim_fract
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/en17037.html b/docs/_modules/honeybee_radiance_postprocess/en17037.html new file mode 100644 index 00000000..24f05e88 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/en17037.html @@ -0,0 +1,849 @@ + + + + + + + honeybee_radiance_postprocess.en17037 — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.en17037

    +"""Functions for EN 17037 post-processing."""
    +from typing import Union
    +from pathlib import Path
    +import json
    +import numpy as np
    +
    +from ladybug.color import Colorset
    +from ladybug.datatype.fraction import Fraction
    +from ladybug.legend import LegendParameters
    +
    +from .results.annual_daylight import AnnualDaylight
    +from .dynamic import DynamicSchedule
    +from .metrics import da_array2d
    +from .util import filter_array
    +
    +
    +
    [docs]def en17037_to_files( + array: np.ndarray, metrics_folder: Path, grid_info: dict) -> list: + """Compute annual EN 17037 metrics for a NumPy array and write the results + to a folder. + + This function generates 6 different files for daylight autonomy based on + the varying level of recommendation in EN 17037. + + Args: + array: A 2D NumPy array. + metrics_folder: An output folder where the results will be written to. + The folder will be created if it does not exist. + grid_info: A grid information dictionary. + + Returns: + tuple -- Tuple of lists of paths for da, sda, and compliance folders. + """ + recommendations = { + 'minimum_illuminance': { + 'minimum': 100, + 'medium': 300, + 'high': 500 + }, + 'target_illuminance': { + 'minimum': 300, + 'medium': 500, + 'high': 750 + } + } + compliance_value = { + 'minimum': 1, + 'medium': 2, + 'high': 3 + } + + grid_id = grid_info['full_id'] + grid_count = grid_info['count'] + + da_folders = [] + sda_folders = [] + compliance_folders = [] + da_folder = metrics_folder.joinpath('da') + sda_folder = metrics_folder.joinpath('sda') + compliance_folder = metrics_folder.joinpath('compliance_level') + + for target_type, thresholds in recommendations.items(): + compliance_level = None + for level, threshold in thresholds.items(): + # da + da_level_folder = \ + da_folder.joinpath('_'.join([target_type, str(threshold)])) + da_file = da_level_folder.joinpath(f'{grid_id}.da') + if not da_file.parent.is_dir(): + da_file.parent.mkdir(parents=True) + da = da_array2d(array, total_occ=4380, threshold=threshold) + np.savetxt(da_file, da, fmt='%.2f') + + # sda + sda_level_folder = \ + sda_folder.joinpath('_'.join([target_type, str(threshold)])) + sda_file = sda_level_folder.joinpath(f'{grid_id}.sda') + if not sda_file.parent.is_dir(): + sda_file.parent.mkdir(parents=True) + sda = (da >= 50).mean() * 100 + with open(sda_file, 'w') as sdaf: + sdaf.write(str(round(sda, 2))) + + space_target = 50 if target_type == 'target_illuminance' else 95 + if sda >= space_target: + compliance_level = np.full((grid_count), compliance_value[level], dtype=int) + + da_folders.append(da_file.parent) + sda_folders.append(sda_file.parent) + + if compliance_level is None: + compliance_level = np.zeros(grid_count, dtype=int) + compliance_level_folder = compliance_folder.joinpath(target_type) + compliance_level_file = compliance_level_folder.joinpath(f'{grid_id}.pf') + if not compliance_level_file.parent.is_dir(): + compliance_level_file.parent.mkdir(parents=True) + np.savetxt(compliance_level_file, compliance_level, fmt='%i') + compliance_folders.append(compliance_level_file.parent) + + return da_folders, sda_folders, compliance_folders
    + + +
    [docs]def en17037_to_folder( + results: Union[str, AnnualDaylight], schedule: list, + states: DynamicSchedule = None, grids_filter: str = '*', + sub_folder: str = 'en17037') -> Path: + """Compute annual EN 17037 metrics in a folder and write them in a subfolder. + + The results is an output folder of annual daylight recipe. + + Args: + results: Results folder. + schedule: An annual schedule for 8760 hours of the year as a list of + values. This should be a daylight hours schedule. + grids_filter: A pattern to filter the grids. By default all the grids + will be processed. + states: A dictionary of states. Defaults to None. + sub_folder: An optional relative path for subfolder to copy results + files. Default: en17037. + + Returns: + str -- Path to results folder. + """ + if not isinstance(results, AnnualDaylight): + results = AnnualDaylight(results, schedule=schedule) + else: + results.schedule = schedule + + total_occ = results.total_occ + occ_mask = results.occ_mask + + grids_info = results._filter_grids(grids_filter=grids_filter) + + if total_occ != 4380: + raise ValueError( + f'There are {total_occ} occupied hours in the schedule. According ' + 'to EN 17037 the schedule must consist of the daylight hours ' + 'which is defined as the half of the year with the largest ' + 'quantity of daylight') + + metrics_folder = Path(results.folder).parent.joinpath(sub_folder) + + for grid_info in grids_info: + array = results._array_from_states( + grid_info, states=states, res_type='total', zero_array=True) + if np.any(array): + array = np.apply_along_axis( + filter_array, 1, array, occ_mask) + da_folders, sda_folders, compliance_folders = en17037_to_files( + array, metrics_folder, grid_info) + + # copy grids_info.json to all results folders + for folder in da_folders + sda_folders + compliance_folders: + grids_info_file = Path(folder, 'grids_info.json') + with open(grids_info_file, 'w') as outf: + json.dump(grids_info, outf, indent=2) + + metric_info_dict = _annual_daylight_en17037_vis_metadata() + da_folder = metrics_folder.joinpath('da') + for metric, data in metric_info_dict.items(): + file_path = da_folder.joinpath(metric, 'vis_metadata.json') + with open(file_path, 'w') as fp: + json.dump(data, fp, indent=4) + + return metrics_folder
    + + +def _annual_daylight_en17037_vis_metadata(): + """Return visualization metadata for annual daylight.""" + da_lpar = LegendParameters(min=0, max=100, colors=Colorset.annual_comfort()) + + metric_info_dict = { + 'minimum_illuminance_100': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - minimum 100 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'minimum_illuminance_300': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - minimum 300 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'minimum_illuminance_500': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - minimum 500 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'target_illuminance_300': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - target 300 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'target_illuminance_500': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - target 500 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'target_illuminance_750': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy - target 750 lux').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + } + } + + return metric_info_dict + + +def _annual_daylight_en17037_config(): + """Return vtk-config for annual daylight EN 17037. """ + cfg = { + "data": [ + { + "identifier": "Daylight Autonomy - target 300 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "target_illuminance/minimum/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Daylight Autonomy - target 500 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "target_illuminance/medium/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Daylight Autonomy - target 750 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "target_illuminance/high/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Daylight Autonomy - minimum 100 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "minimum_illuminance/minimum/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Daylight Autonomy - minimum 300 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "minimum_illuminance/medium/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + { + "identifier": "Daylight Autonomy - minimum 500 lux", + "object_type": "grid", + "unit": "Percentage", + "path": "minimum_illuminance/high/da", + "hide": False, + "legend_parameters": { + "hide_legend": False, + "min": 0, + "max": 100, + "color_set": "nuanced", + }, + }, + ] + } + + return cfg +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/helper.html b/docs/_modules/honeybee_radiance_postprocess/helper.html new file mode 100644 index 00000000..c366e770 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/helper.html @@ -0,0 +1,799 @@ + + + + + + + honeybee_radiance_postprocess.helper — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.helper

    +"""Helper functions."""
    +import json
    +import numpy as np
    +from pathlib import Path
    +
    +from honeybee.model import Model
    +
    +
    +
    [docs]def model_grid_areas(model, grids_info): + if isinstance(model, Model): + hb_model = model + else: + hb_model = Model.from_file(model) + + full_ids = [grid_info['full_id'] for grid_info in grids_info] + sensor_grids = hb_model.properties.radiance.sensor_grids + grid_areas = [] + for s_grid in sensor_grids: + if s_grid.identifier in full_ids: + if s_grid.mesh is not None: + grid_areas.append(s_grid.mesh.face_areas) + grid_areas = [np.array(grid) for grid in grid_areas] + if not grid_areas: + grid_areas = [None] * len(full_ids) + + return grid_areas
    + + +
    [docs]def grid_summary( + folder: Path, grid_areas: list = None, + grids_info: list = None, name: str = 'grid_summary', + grid_metrics: list = None, sub_folder: bool = True + ): + """Calculate a grid summary for a single metric. + + Args: + folder: A folder with results. + grid_areas: A list of area of each sensor. + grids_info: Grid information as a dictionary. + name: Optional filename of grid summary. + grid_metrics: Additional customized metrics to calculate. + sub_folder: If set to True it will look for results in all sub-folders + in the folder input. Else it look for results directly in the folder + input. + """ + if sub_folder: + sub_folders = [sf for sf in folder.iterdir() if sf.is_dir()] + else: + sub_folders = [folder] + + # set up the default data types + dtype_sensor_grid = ('Sensor Grid', 'O') + dtype_base = [ + ('Mean', np.float32), + ('Minimum', np.float32), + ('Maximum', np.float32), + ('Uniformity Ratio', np.float32) + ] + dtype = [] + + # set up default format (for first column: str) + fmt = ['%s'] + + if grids_info is None: + for sf in sub_folders: + gi_file = sf.joinpath('grids_info.json') + if gi_file.exists(): + with open(gi_file) as gi: + grids_info = json.load(gi) + break + if grids_info is None: + # if it did not find grids_info.json in any folder + raise FileNotFoundError( + f'The file grids_info.json was not found in any folder.') + + if grid_areas is None: + grid_areas = [None] * len(grids_info) + + + dtype.append(dtype_sensor_grid) + for sf in sub_folders: + _dtype = [] + _fmt = [] + for dt_b in dtype_base: + col_name = dt_b[0] + if sub_folder: + col_name = '-'.join([sf.stem.upper(), col_name]) + _dtype.append((col_name, np.float32)) + _fmt.append('%.2f') + dtype.extend(_dtype) + fmt.extend(_fmt) + + if grid_metrics is not None: + for grid_metric in grid_metrics: + if len(grid_metric) == 1: + if 'allOf' in grid_metric: + _mname = [] + for gr_m in grid_metric['allOf']: + _mname.append(_get_grid_metric_name(gr_m)) + mname = ' and '.join(_mname) + elif 'anyOf' in grid_metric: + _mname = [] + for gr_m in grid_metric['anyOf']: + _mname.append(_get_grid_metric_name(gr_m)) + mname = ' or '.join(_mname) + else: + mname = _get_grid_metric_name(grid_metric) + elif len(grid_metric) == 2: + _mname = [] + for k, v in grid_metric.items(): + _mname.append(_get_grid_metric_name({k: v})) + mname = ' and '.join(_mname) + col_name = mname + if sub_folder: + col_name = '-'.join([sf.stem.upper(), col_name]) + dtype.append((col_name, np.float32)) + fmt.append('%.2f') + + arrays = [] + for grid_info, grid_area in zip(grids_info, grid_areas): + full_id = grid_info['full_id'] + data = [full_id] + for sf in sub_folders: + grid_files = list(sf.glob(f'{full_id}.*')) + assert len(grid_files) == 1 + + array = np.loadtxt(grid_files[0]) + _mean = array.mean() + _min = array.min() + _max = array.max() + _uniformity_ratio = _min / _mean * 100 + + data.extend([_mean, _min, _max, _uniformity_ratio]) + + if grid_metrics is not None: + # get grid metrics + grid_metrics_data = \ + _get_grid_metrics(array, grid_metrics, grid_info, grid_area) + data.extend(grid_metrics_data) + + arrays.append(tuple(data)) + + # create structured array + struct_array = np.array(arrays, dtype=dtype) + + header = [dt[0] for dt in dtype] + # write header to file + with open(folder.joinpath(f'{name}.csv'), 'w') as grid_summary_file: + grid_summary_file.write(','.join(header)) + # write structured array to grid_summary_file + with open(folder.joinpath(f'{name}.csv'), 'a') as grid_summary_file: + grid_summary_file.write('\n') + np.savetxt(grid_summary_file, struct_array, delimiter=',', fmt=fmt) + + return grid_summary_file
    + + +def _calculate_percentage(gr_metric_bool, grid_info, grid_area=None): + """Calculate percentage of floor area where True. + + Args: + gr_metric_bool: A NumPy array of booleans. + grid_info: Grid information. + grid_area: A NumPy array of area for each sensor. (Default: None). + + Returns: + The percentage of floor area where gr_metric_bool is True. + """ + if grid_area is not None: + gr_metric_pct = \ + grid_area[gr_metric_bool].sum() / grid_area.sum() * 100 + else: + gr_metric_pct = \ + gr_metric_bool.sum() / grid_info['count'] * 100 + return gr_metric_pct + + +def _logical_operator(keyword): + lg = { + 'minimum': '>', + 'exclusiveMinimum': '>=', + 'maximum': '<', + 'exclusiveMaximum': '<=' + } + return lg[keyword] + + +def _get_grid_metric_name(grid_metric): + if 'minimum' in grid_metric: + return f'{_logical_operator("minimum")}{grid_metric["minimum"]}' + elif 'exclusiveMinimum' in grid_metric: + return f'{_logical_operator("exclusiveMinimum")}{grid_metric["exclusiveMinimum"]}' + elif 'maximum' in grid_metric: + return f'{_logical_operator("maximum")}{grid_metric["maximum"]}' + elif 'exclusiveMaximum' in grid_metric: + return f'{_logical_operator("exclusiveMaximum")}{grid_metric["exclusiveMaximum"]}' + + +def _numeric_type(array, gr_metric): + if 'minimum' in gr_metric: + gr_metric_bool = array > gr_metric['minimum'] + elif 'exclusiveMinimum' in gr_metric: + gr_metric_bool = array >= gr_metric['minimum'] + elif 'maximum' in gr_metric: + gr_metric_bool = array < gr_metric['maximum'] + elif 'exclusiveMaximum' in gr_metric: + gr_metric_bool = array <= gr_metric['exclusiveMaximum'] + return gr_metric_bool + + +def _grid_summary_all_any(array, gr_metric, grid_info, grid_area, keyword): + gr_metric_arrays = [] + for gr_m in gr_metric[keyword]: + assert len(gr_m) == 1 + gr_metric_arrays.append(_numeric_type(array, gr_m)) + if keyword == 'allOf': + gr_metric_bool = np.all(gr_metric_arrays, axis=0) + else: + gr_metric_bool = np.any(gr_metric_arrays, axis=0) + gr_metric_pct = \ + _calculate_percentage(gr_metric_bool, grid_info, grid_area) + return gr_metric_pct + + +def _get_grid_metrics(array, grid_metrics, grid_info, grid_area): + grid_metrics_data = [] + for gr_metric in grid_metrics: + if len(gr_metric) == 1: + if 'allOf' in gr_metric: + gr_metric_pct = \ + _grid_summary_all_any( + array, gr_metric, grid_info, grid_area, 'allOf') + elif 'anyOf' in gr_metric: + gr_metric_pct = \ + _grid_summary_all_any( + array, gr_metric, grid_info, grid_area, 'anyOf') + else: + gr_metric_bool = _numeric_type(array, gr_metric) + gr_metric_pct = \ + _calculate_percentage(gr_metric_bool, grid_info, grid_area) + elif len(gr_metric) == 2: + gr_metric_arrays = [] + for k, threshold in gr_metric.items(): + gr_metric_arrays.append(_numeric_type(array, {k: threshold})) + gr_metric_bool = np.all(gr_metric_arrays, axis=0) + gr_metric_pct = \ + _calculate_percentage(gr_metric_bool, grid_info, grid_area) + grid_metrics_data.append(gr_metric_pct) + return grid_metrics_data +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/leed.html b/docs/_modules/honeybee_radiance_postprocess/leed.html new file mode 100644 index 00000000..b7a29852 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/leed.html @@ -0,0 +1,1303 @@ + + + + + + + honeybee_radiance_postprocess.leed — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.leed

    +"""Functions for LEED post-processing."""
    +from typing import Tuple, Union
    +from pathlib import Path
    +from collections import defaultdict
    +import json
    +import itertools
    +import numpy as np
    +
    +from ladybug.analysisperiod import AnalysisPeriod
    +from ladybug.datatype.generic import GenericType
    +from ladybug.color import Colorset
    +from ladybug.datacollection import HourlyContinuousCollection
    +from ladybug.datatype.fraction import Fraction
    +from ladybug.datatype.time import Time
    +from ladybug.legend import LegendParameters
    +from ladybug.header import Header
    +from honeybee.model import Model
    +from honeybee.units import conversion_factor_to_meters
    +from honeybee_radiance.writer import _filter_by_pattern
    +from honeybee_radiance.postprocess.annual import filter_schedule_by_hours
    +from .metrics import da_array2d, ase_array2d
    +from .annual import schedule_to_hoys, occupancy_schedule_8_to_6
    +from .results.annual_daylight import AnnualDaylight
    +from .util import filter_array, recursive_dict_merge
    +
    +
    +def _create_grid_summary(
    +    grid_name, sda_grid, ase_grid, pass_sda, pass_ase, total_floor,
    +    area_weighted=True):
    +    """Create a LEED summary for a single grid.
    +
    +    Args:
    +        grid_name: Name of grid.
    +        sda_grid: Spatial Daylight Autonomy.
    +        ase_grid: Annual Sunlight Exposure.
    +        pass_sda: The percentage of the sensor points or floor area that
    +            passes sDA.
    +        pass_ase: The percentage of the sensor points or floor area that
    +            passes ASE.
    +        total_floor: The number of sensor points or floor area.
    +        area_weighted: Boolean to determine if the results are area
    +            weighted. Defaults to True.
    +
    +    Returns:
    +        Tuple:
    +        -   summary_grid: Summary of each grid individually.
    +    """
    +    grid_summary = {
    +        grid_name: {}
    +    }
    +    if ase_grid > 10:
    +        ase_note = (
    +            'The Annual Sunlight Exposure is greater than 10% for space: '
    +            f'{grid_name}. Identify in writing how the space is designed to '
    +            'address glare.'
    +        )
    +        grid_summary[grid_name]['ase_note'] = ase_note
    +
    +    if area_weighted:
    +        _grid_summary = {
    +            grid_name: {
    +                'ase': round(ase_grid, 2),
    +                'sda': round(sda_grid, 2),
    +                'floor_area_passing_ase': round(pass_ase, 2),
    +                'floor_area_passing_sda': round(pass_sda, 2),
    +                'total_floor_area': total_floor
    +            }
    +        }
    +    else:
    +        _grid_summary = {
    +            grid_name: {
    +                'ase': round(ase_grid, 2),
    +                'sda': round(sda_grid, 2),
    +                'sensor_count_passing_ase': int(round(pass_ase, 2)),
    +                'sensor_count_passing_sda': int(round(pass_sda, 2)),
    +                'total_sensor_count': total_floor
    +            }
    +        }
    +
    +    recursive_dict_merge(grid_summary, _grid_summary)
    +
    +    return grid_summary
    +
    +
    +def _leed_summary(
    +    pass_ase_grids: list, pass_sda_grids: list, grids_info: list,
    +    grid_areas: list) -> Tuple[dict, dict]:
    +    """_summary_
    +
    +    Args:
    +        pass_ase_grids: A list where each sublist is a list of True/False that
    +            tells if each sensor point passes ASE.
    +        pass_sda_grids: A list where each sublist is a list of True/False that
    +            tells if each sensor point passes sDA.
    +        grids_info: A list of grid information.
    +        grid_areas: A list where each sublist is the area of each sensor point.
    +            The alternative is a list of None values for each grid information.
    +
    +    Returns:
    +        Tuple:
    +        -   summary: Summary of of all grids combined.
    +        -   summary_grid: Summary of each grid individually.
    +    """
    +    summary = {}
    +    summary_grid = {}
    +
    +    if all(grid_area is not None for grid_area in grid_areas):
    +        # weighted by mesh face area
    +        total_area = 0
    +        total_area_pass_ase = 0
    +        total_area_pass_sda = 0
    +        for (pass_ase, pass_sda, grid_area, grid_info) in \
    +            zip(pass_ase_grids, pass_sda_grids, grid_areas, grids_info):
    +            grid_name = grid_info['name']
    +            total_grid_area = grid_area.sum()
    +            area_pass_ase = grid_area[pass_ase].sum()
    +            area_pass_sda = grid_area[pass_sda].sum()
    +            ase_grid = (total_grid_area - area_pass_ase) / total_grid_area * 100
    +            sda_grid = area_pass_sda / total_grid_area * 100
    +            # grid summary
    +            grid_summary = \
    +                _create_grid_summary(
    +                    grid_name, sda_grid, ase_grid, area_pass_sda, area_pass_ase,
    +                    total_grid_area, area_weighted=True
    +                )
    +
    +            recursive_dict_merge(summary_grid, grid_summary)
    +
    +            total_area += total_grid_area
    +            total_area_pass_ase += area_pass_ase
    +            total_area_pass_sda += area_pass_sda
    +
    +        summary['ase'] = round((total_area - total_area_pass_ase) / total_area * 100, 2)
    +        summary['sda'] = round(total_area_pass_sda / total_area * 100, 2)
    +        summary['floor_area_passing_ase'] = total_area_pass_ase
    +        summary['floor_area_passing_sda'] = total_area_pass_sda
    +        summary['total_floor_area'] = total_area
    +    else:
    +        # assume all sensor points cover the same area
    +        total_sensor_count = 0
    +        total_sensor_count_pass_ase = 0
    +        total_sensor_count_pass_sda = 0
    +        for (pass_ase, pass_sda, grid_info) in \
    +            zip(pass_ase_grids, pass_sda_grids, grids_info):
    +            grid_name = grid_info['name']
    +            grid_count = grid_info['count']
    +            sensor_count_pass_ase = pass_ase.sum()
    +            sensor_count_pass_sda = pass_sda.sum()
    +            ase_grid = (grid_count - sensor_count_pass_ase) / grid_count * 100
    +            sda_grid = sensor_count_pass_sda / grid_count * 100
    +            # grid summary
    +            grid_summary = \
    +                _create_grid_summary(
    +                    grid_name, sda_grid, ase_grid, sensor_count_pass_sda,
    +                    sensor_count_pass_ase, grid_count, area_weighted=False
    +                )
    +
    +            recursive_dict_merge(summary_grid, grid_summary)
    +
    +            total_sensor_count += grid_count
    +            total_sensor_count_pass_ase += sensor_count_pass_ase
    +            total_sensor_count_pass_sda += sensor_count_pass_sda
    +
    +        summary['ase'] = round((total_sensor_count - total_sensor_count_pass_ase) /
    +            total_sensor_count * 100, 2
    +        )
    +        summary['sda'] = round(total_sensor_count_pass_sda / total_sensor_count * 100, 2)
    +        summary['sensor_count_passing_ase'] = int(total_sensor_count_pass_ase)
    +        summary['sensor_count_passing_sda'] = int(total_sensor_count_pass_sda)
    +        summary['total_sensor_count'] = total_sensor_count
    +
    +    return summary, summary_grid
    +
    +
    +def _ase_hourly_percentage(
    +    results: AnnualDaylight, array: np.ndarray, grid_info: dict,
    +    direct_threshold: float = 1000, grid_area: Union[None, np.ndarray] = None
    +    ) -> np.ndarray:
    +    """Calculate the percentage of floor area that receives greater than 1000
    +    direct lux for each hour.
    +
    +    Args:
    +        results: A Results object.
    +        array: A NumPy array of the grid to process.
    +        grid_info: Grid information of the grid to process..
    +        direct_threshold: Direct threshold.
    +        grid_area: Grid area as a NumPy array with a area value for each sensor
    +            point, or a None value if there is no area associated with the
    +            sensor point.
    +
    +    Returns:
    +        A hourly data collection of the percentage of floor area that receives
    +        greater than 1000 direct lux.
    +    """
    +    if grid_area is not None:
    +        grid_area_2d = np.array([grid_area] * array.shape[1]).transpose()
    +        area_above = \
    +            np.where((array > direct_threshold), grid_area_2d, 0).sum(axis=0)
    +        percentage_above = area_above / grid_area.sum() * 100
    +    else:
    +        percentage_above = \
    +            (array > direct_threshold).sum(axis=0) / grid_info['count'] * 100
    +
    +    occupancy_hoys = schedule_to_hoys(results.schedule, results.sun_up_hours)
    +    # map states to 8760 values
    +    percentage_above = results.values_to_annual(
    +        occupancy_hoys, percentage_above, results.timestep, results.study_hours)
    +    header = Header(Fraction('Percentage above 1000 direct lux'), '%',
    +                    AnalysisPeriod(results.timestep),
    +                    metadata={'SensorGrid': grid_info['name']})
    +    data_collection = HourlyContinuousCollection(header, percentage_above.tolist())
    +
    +    return data_collection
    +
    +
    [docs]def shade_transmittance_per_light_path( + light_paths: list, shade_transmittance: Union[float, dict], + shd_trans_dict: dict) -> dict: + """Filter shade_transmittance by light paths and add default multiplier. + + Args: + light_paths: A list of light paths. + shade_transmittance: A value to use as a multiplier in place of solar + shading. This input can be either a single value that will be used + for all aperture groups, or a dictionary where aperture groups are + keys, and the value for each key is the shade transmittance. Values + for shade transmittance must be 1 > value > 0. + shd_trans_dict: A dictionary used to store shade transmittance value + for each aperture group. + + Returns: + A dictionary with filtered light paths. + """ + shade_transmittances = {} + if isinstance(shade_transmittance, dict): + for light_path in light_paths: + # default multiplier + shade_transmittances[light_path] = [1] + # add custom shade transmittance + if light_path in shade_transmittance: + shade_transmittances[light_path].append( + shade_transmittance[light_path]) + shd_trans_dict[light_path] = shade_transmittance[light_path] + # add default shade transmittance (0.05) + elif light_path != '__static_apertures__': + shade_transmittances[light_path].append(0.05) + shd_trans_dict[light_path] = 0.05 + else: + shd_trans = float(shade_transmittance) + for light_path in light_paths: + # default multiplier + shade_transmittances[light_path] = [1] + # add custom shade transmittance + if light_path != '__static_apertures__': + shade_transmittances[light_path].append(shd_trans) + shd_trans_dict[light_path] = shd_trans + + return shade_transmittances
    + + +
    [docs]def leed_states_schedule( + results: Union[str, AnnualDaylight], grids_filter: str = '*', + shade_transmittance: Union[float, dict] = 0.05 + ) -> Tuple[dict, dict]: + """Calculate a schedule of each aperture group for LEED compliant sDA. + + This function calculates an annual shading schedule of each aperture + group. Hour by hour it will select the least shaded aperture group + configuration, so that no more than 2% of the sensors points receive + direct illuminance of 1000 lux or more. + + Args: + results: Path to results folder or a Results class object. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + shade_transmittance: A value to use as a multiplier in place of solar + shading. This input can be either a single value that will be used + for all aperture groups, or a dictionary where aperture groups are + keys, and the value for each key is the shade transmittance. Values + for shade transmittance must be 1 > value > 0. + Defaults to 0.05. + + Returns: + Tuple: A tuple with a dictionary of the annual schedule and a + dictionary of hours where no shading configuration comply with the + 2% rule. + """ + if not isinstance(results, AnnualDaylight): + results = AnnualDaylight(results) + + grids_info = results._filter_grids(grids_filter=grids_filter) + schedule = occupancy_schedule_8_to_6(as_list=True) + occ_pattern = \ + filter_schedule_by_hours(results.sun_up_hours, schedule=schedule)[0] + occ_mask = np.array(occ_pattern) + + states_schedule = defaultdict(list) + fail_to_comply = {} + shd_trans_dict = {} + + for grid_info in grids_info: + grid_id = grid_info['full_id'] + grid_count = grid_info['count'] + light_paths = [lp[0] for lp in grid_info['light_path']] + + shade_transmittances = shade_transmittance_per_light_path( + light_paths, shade_transmittance, shd_trans_dict) + + if len(light_paths) > 6: + full_direct = [] + full_thresh = [] + shd_trans_array = [] + for light_path in light_paths: + array = results._get_array(grid_info, light_path, res_type='direct') + array = np.apply_along_axis(filter_array, 1, array, occ_mask) + full_direct.append(array) + full_thresh.append((array >= 1000).sum(axis=0)) + shd_trans_array.append(shade_transmittances[light_path][1]) + + # sum the array element-wise + full_direct_sum = sum(full_direct) + + # create base list of shading combinations (all set to 1) + combinations = [ + {light_path: 1 for light_path in light_paths} \ + for i in range(full_direct_sum.shape[1]) + ] + + # find the percentage of floor area >= 1000 lux + direct_pct_above = (full_direct_sum >= 1000).sum(axis=0) / grid_count + + # find the indices where the percentage of floor area is > 2% + above_2_indices = np.where(direct_pct_above > 0.02)[0] + + # get an array of only the relevant hours + direct_sum = np.take(full_direct_sum, above_2_indices, axis=1) + + # get an array of only the relevant hours + direct = np.take(full_direct, above_2_indices, axis=2) + + # get an array of only the relevant hours + thresh = np.take(full_thresh, above_2_indices, axis=1) + + # sort and get indices. Negate the array to get descending order + sort_thresh = np.argsort(-thresh, axis=0).transpose() + + _combinations = [] + _combinations.insert(0, (np.arange(full_direct_sum.shape[1]), combinations)) + + if np.any(above_2_indices): + for idx in range(len(full_direct)): + # take column + sort_indices = np.take(sort_thresh, idx, axis=1) + + # map light path identifiers + light_path_ids = np.take(light_paths, sort_indices) + + # get a list of shade transmittances + shd_trans_array = np.take(shd_trans_array, sort_indices) + + # create combination for the subset + _subset_combination = [ + {light_path: _shd_trans} for light_path, _shd_trans in \ + zip(light_path_ids, shd_trans_array) + ] + _combinations.insert(0, (above_2_indices, _subset_combination)) + + # take the values from each array by indexing + direct_array = \ + direct[sort_indices, :, range(len(sort_indices))].transpose() + + # subtract the illuminance values + direct_sum = direct_sum - (direct_array * (1 - shd_trans_array)) + + # find the percentage of floor area >= 1000 lux + direct_pct_above = (direct_sum >= 1000).sum(axis=0) / grid_count + + # find the indices where the percentage of floor area is > 2% + above_2_indices = np.where(direct_pct_above > 0.02)[0] + + # break if there are no hours above 2% + if not np.any(above_2_indices): + break + + # update variables for the next iteration + direct_sum = np.take(direct_sum, above_2_indices, axis=1) + direct = np.take(direct, above_2_indices, axis=2) + thresh = np.take(thresh, above_2_indices, axis=1) + sort_thresh = np.take(sort_thresh, above_2_indices, axis=0) + shd_trans_array = np.take(shd_trans_array, above_2_indices) + + if np.any(above_2_indices): + # take column + sort_indices = np.take(sort_thresh, idx, axis=1) + + # map light path identifiers + light_path_ids = np.take(light_paths, sort_indices) + + # get a list of shade transmittances + shd_trans_array = np.take(shd_trans_array, sort_indices) + + # create combination for the subset + _subset_combination = [ + {light_path: _shd_trans} for light_path, _shd_trans in \ + zip(light_path_ids, shd_trans_array) + ] + _combinations.insert(0, (above_2_indices, _subset_combination)) + + # there are hours not complying with the 2% rule + previous_indices = [] + previous_combination = [] + grid_comply = [] + # merge the combinations from the iterations of the subsets + for i, subset in enumerate(_combinations): + if i == 0: + previous_indices = subset[0] + else: + _indices = subset[0] + grid_comply = [] + for _pr_idx in previous_indices: + grid_comply.append(_indices[_pr_idx]) + previous_indices = grid_comply + # convert indices to sun up hours indices + filter_indices = np.where(occ_mask.astype(bool))[0] + grid_comply = [filter_indices[_gc] for _gc in grid_comply] + grid_comply = np.array(results.sun_up_hours)[grid_comply] + fail_to_comply[grid_info['name']] = \ + [int(hoy) for hoy in grid_comply] + + previous_indices = None + previous_combination = None + # merge the combinations from the iterations of the subsets + for i, subset in enumerate(_combinations): + if i == 0: + previous_indices, previous_combination = subset + else: + _indices, _combination = subset + for _pr_idx, _pr_comb in \ + zip(previous_indices, previous_combination): + for light_path, _shd_trans in _pr_comb.items(): + _combination[_pr_idx][light_path] = _shd_trans + previous_indices = _indices + previous_combination = _combination + + combinations = _combination + + # merge the combinations of dicts + for combination in combinations: + for light_path, shd_trans in combination.items(): + if light_path != '__static_apertures__': + states_schedule[light_path].append(shd_trans) + + else: + keys, values = zip(*shade_transmittances.items()) + combinations = [dict(zip(keys, v)) for v in itertools.product(*values)] + + array_list_combinations = [] + for combination in combinations: + combination_arrays = [] + for light_path, shd_trans in combination.items(): + array = results._get_array( + grid_info, light_path, res_type='direct') + if shd_trans == 1: + combination_arrays.append(array) + else: + combination_arrays.append(array * shd_trans) + combination_array = sum(combination_arrays) + combination_percentage = \ + (combination_array >= 1000).sum(axis=0) / grid_count + array_list_combinations.append(combination_percentage) + array_combinations = np.array(array_list_combinations) + array_combinations[array_combinations > 0.02] = np.NINF + + grid_comply = np.where(np.all(array_combinations==np.NINF, axis=0))[0] + if grid_comply.size != 0: + grid_comply = np.array(results.sun_up_hours)[grid_comply] + fail_to_comply[grid_info['name']] = \ + [int(hoy) for hoy in grid_comply] + + array_combinations_filter = \ + np.apply_along_axis(filter_array, 1, array_combinations, occ_mask) + max_indices = array_combinations_filter.argmax(axis=0) + # select the combination for each hour + combinations = [combinations[idx] for idx in max_indices] + # merge the combinations of dicts + for combination in combinations: + for light_path, shd_trans in combination.items(): + if light_path != '__static_apertures__': + states_schedule[light_path].append(shd_trans) + + occupancy_hoys = schedule_to_hoys(schedule, results.sun_up_hours) + + # map states to 8760 values + for light_path, shd_trans in states_schedule.items(): + mapped_states = results.values_to_annual( + occupancy_hoys, shd_trans, results.timestep, results.study_hours) + states_schedule[light_path] = mapped_states + + return states_schedule, fail_to_comply, shd_trans_dict
    + + +
    [docs]def leed_option_one( + results: Union[str, AnnualDaylight], grids_filter: str = '*', + shade_transmittance: Union[float, dict] = 0.05, + states_schedule: dict = None, threshold: float = 300, + direct_threshold: float = 1000, occ_hours: int = 250, + target_time: float = 50, sub_folder: str = None): + """Calculate credits for LEED v4.1 Daylight Option 1. + + Args: + results: Path to results folder or a Results class object. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + shade_transmittance: A value to use as a multiplier in place of solar + shading. This input can be either a single value that will be used + for all aperture groups, or a dictionary where aperture groups are + keys, and the value for each key is the shade transmittance. Values + for shade transmittance must be 1 > value > 0. + Defaults to 0.05. + states_schedule: A custom dictionary of shading states. In case this is + left empty, the function will calculate a shading schedule by using + the shade_transmittance input. If a states schedule is provided it + will check that it is complying with the 2% rule. Defaults to None. + threshold: Threshold value for daylight autonomy. Default: 300. + direct_threshold: The threshold that determines if a sensor is overlit. + Defaults to 1000. + occ_hours: The number of occupied hours that cannot receive more than + the direct_threshold. Defaults to 250. + target_time: A minimum threshold of occupied time (eg. 50% of the + time), above which a given sensor passes and contributes to the + spatial daylight autonomy. Defaults to 50. + sub_folder: Relative path for a subfolder to write the output. If None, + the files will not be written. Defaults to None. + + Returns: + Tuple: + - summary: Summary of all grids combined. + - summary_grid: Summary of each grid individually. + - da_grids: List of daylight autonomy values for each grid. Each item + in the list is a NumPy array of DA values. + - hours_above: List of hours above 1000 direct illuminance (with + default states) for each grid. Each item in the list is a NumPy + array of hours above 1000 lux. + - states_schedule: A dictionary of annual shading schedules for each + aperture group. + - grids_info: Grid information. + """ + # use default leed occupancy schedule + schedule = occupancy_schedule_8_to_6(as_list=True) + + if not isinstance(results, AnnualDaylight): + results = AnnualDaylight(results, schedule=schedule) + else: + # set schedule to default leed schedule + results.schedule = schedule + + occ_mask = results.occ_mask + total_occ = results.total_occ + + grids_info = results._filter_grids(grids_filter=grids_filter) + + if not states_schedule: + states_schedule, fail_to_comply, shd_trans_dict = \ + leed_states_schedule(results, grids_filter=grids_filter, + shade_transmittance=shade_transmittance) + else: + raise NotImplementedError( + 'Custom input for argument states_schedule is not yet implemented.' + ) + + # check to see if there is a HBJSON with sensor grid meshes for areas + grid_areas, units_conversion = [], 1 + for base_file in Path(results.folder).parent.iterdir(): + if base_file.suffix in ('.hbjson', '.hbpkl'): + hb_model = Model.from_file(base_file) + units_conversion = conversion_factor_to_meters(hb_model.units) + filt_grids = _filter_by_pattern( + hb_model.properties.radiance.sensor_grids, filter=grids_filter) + for s_grid in filt_grids: + if s_grid.mesh is not None: + grid_areas.append(s_grid.mesh.face_areas) + grid_areas = [np.array(grid) for grid in grid_areas] + if not grid_areas: + grid_areas = [None] * len(grids_info) + + # annual sunlight exposure + ase_grids = [] + hours_above = [] + pass_ase_grids = [] + ase_hr_pct = [] + for (grid_info, grid_area) in zip(grids_info, grid_areas): + light_paths = [lp[0] for lp in grid_info['light_path']] + arrays = [] + # combine direct array for all light paths + for light_path in light_paths: + array = results._get_array( + grid_info, light_path, res_type='direct') + array_filter = np.apply_along_axis( + filter_array, 1, array, occ_mask) + arrays.append(array_filter) + array = sum(arrays) + # calculate ase per grid + ase_grid, h_above = ase_array2d( + array, occ_hours=occ_hours, direct_threshold=direct_threshold) + + # calculate the number of sensor points above 1000 lux for each hour + ase_hr_pct.append( + _ase_hourly_percentage( + results, array, grid_info, direct_threshold=direct_threshold, + grid_area=grid_area + ) + ) + + ase_grids.append(ase_grid) + hours_above.append(h_above) + pass_ase = h_above < occ_hours + pass_ase_grids.append(pass_ase) + + # spatial daylight autonomy + da_grids = [] + pass_sda_grids = [] + for grid_info in grids_info: + light_paths = [lp[0] for lp in grid_info['light_path']] + arrays = [] + # combine total array for all light paths + for light_path in light_paths: + array = results._get_array(grid_info, light_path, res_type='total') + array_filter = np.apply_along_axis( + filter_array, 1, array, occ_mask) + if light_path != '__static_apertures__': + sun_up_hours = np.array(results.sun_up_hours).astype(int) + shd_trans_array = states_schedule[light_path][sun_up_hours] + shd_trans_array = shd_trans_array[occ_mask.astype(bool)] + arrays.append(array_filter * shd_trans_array) + else: + arrays.append(array_filter) + array = sum(arrays) + # calculate da per grid + da_grid = da_array2d(array, total_occ=total_occ, threshold=threshold) + da_grids.append(da_grid) + # calculate sda per grid + pass_sda = da_grid >= target_time + pass_sda_grids.append(pass_sda) + + # create summaries for all grids and each grid individually + summary, summary_grid = _leed_summary( + pass_ase_grids, pass_sda_grids, grids_info, grid_areas=grid_areas) + + # credits + if not fail_to_comply: + if summary['sda'] >= 75: + summary['credits'] = 3 + elif summary['sda'] >= 55: + summary['credits'] = 2 + elif summary['sda'] >= 40: + summary['credits'] = 1 + else: + summary['credits'] = 0 + + if all(grid_summary['sda'] >= 55 for grid_summary in summary_grid.values()): + if summary['credits'] <= 2: + summary['credits'] += 1 + else: + summary['credits'] = 'Exemplary performance' + else: + summary['credits'] = 0 + fail_to_comply_rooms = ', '.join(list(fail_to_comply.keys())) + note = ( + '0 credits have been awarded. The following sensor grids have at ' + 'least one hour where 2% of the floor area receives direct ' + f'illuminance of 1000 lux or more: {fail_to_comply_rooms}.' + ) + summary['note'] = note + + # convert to datacollection + def to_datacollection(aperture_group: str, values: np.ndarray): + # convert values to 0 and 1 (0 = no shading, 1 = shading) + values[values == 1] = 0 + values[values == shd_trans_dict[aperture_group]] = 1 + header = Header(data_type=GenericType(aperture_group, ''), unit='', + analysis_period=AnalysisPeriod(), + metadata={'Shade Transmittance': shd_trans_dict[aperture_group]}) + hourly_data = HourlyContinuousCollection(header=header, values=values.tolist()) + return hourly_data.to_dict() + + states_schedule = {k:to_datacollection(k, v) for k, v in states_schedule.items()} + + if sub_folder: + folder = Path(sub_folder) + folder.mkdir(parents=True, exist_ok=True) + + summary_file = folder.joinpath('summary.json') + summary_file.write_text(json.dumps(summary, indent=2)) + summary_grid_file = folder.joinpath('summary_grid.json') + summary_grid_file.write_text(json.dumps(summary_grid, indent=2)) + states_schedule_file = folder.joinpath('states_schedule.json') + states_schedule_file.write_text(json.dumps(states_schedule)) + grids_info_file = folder.joinpath('grids_info.json') + grids_info_file.write_text(json.dumps(grids_info, indent=2)) + + for (da, h_above, ase_hr_p, grid_info) in \ + zip(da_grids, hours_above, ase_hr_pct, grids_info): + grid_id = grid_info['full_id'] + da_file = folder.joinpath('results', 'da', f'{grid_id}.da') + da_file.parent.mkdir(parents=True, exist_ok=True) + hours_above_file = folder.joinpath( + 'results', 'ase_hours_above', f'{grid_id}.res') + hours_above_file.parent.mkdir(parents=True, exist_ok=True) + ase_hr_p_file = folder.joinpath( + 'datacollections', 'ase_percentage_above', f'{grid_id}.json') + ase_hr_p_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(da_file, da, fmt='%.2f') + np.savetxt(hours_above_file, h_above, fmt='%.0f') + ase_hr_p_file.write_text(json.dumps(ase_hr_p.to_dict())) + + da_grids_info_file = folder.joinpath( + 'results', 'da', 'grids_info.json') + da_grids_info_file.write_text(json.dumps(grids_info, indent=2)) + ase_grids_info_file = folder.joinpath( + 'results', 'ase_hours_above', 'grids_info.json') + ase_grids_info_file.write_text(json.dumps(grids_info, indent=2)) + ase_hr_pct_info_file = folder.joinpath( + 'datacollections', 'ase_percentage_above', 'grids_info.json') + ase_hr_pct_info_file.write_text(json.dumps(grids_info, indent=2)) + + states_schedule_err_file = \ + folder.joinpath('states_schedule_err.json') + states_schedule_err_file.write_text(json.dumps(fail_to_comply)) + + return (summary, summary_grid, da_grids, hours_above, states_schedule, + fail_to_comply, grids_info)
    + + +def _leed_daylight_option_one_vis_metadata(): + """Return visualization metadata for leed daylight option one.""" + da_lpar = LegendParameters(min=0, max=100, colors=Colorset.annual_comfort()) + ase_hrs_lpar = LegendParameters(min=0, max=250, colors=Colorset.original()) + + metric_info_dict = { + 'da': { + 'type': 'VisualizationMetaData', + 'data_type': Fraction('Daylight Autonomy').to_dict(), + 'unit': '%', + 'legend_parameters': da_lpar.to_dict() + }, + 'ase_hours_above': { + 'type': 'VisualizationMetaData', + 'data_type': Time('Hours above direct threshold').to_dict(), + 'unit': 'hr', + 'legend_parameters': ase_hrs_lpar.to_dict() + } + } + + return metric_info_dict +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/metrics.html b/docs/_modules/honeybee_radiance_postprocess/metrics.html new file mode 100644 index 00000000..67a26dd0 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/metrics.html @@ -0,0 +1,964 @@ + + + + + + + honeybee_radiance_postprocess.metrics — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.metrics

    +"""Functions to calculate various metrics for 1D and 2D NumPy arrays."""
    +from typing import Tuple, Union
    +import numpy as np
    +
    +from .util import check_array_dim
    +
    +
    +
    [docs]def da_array2d( + array: np.ndarray, total_occ: int = None, + threshold: float = 300) -> np.ndarray: + """Calculate daylight autonomy for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not + given any input the number of occupied hours will be found by the + array shape, i.e., it is assumed that the array is filtered by + occupied hours. + threshold: Threshold value for daylight autonomy. Default: 300. + + Returns: + A 1-dimensional NumPy array with the daylight autonomy for each row in + the input array. + """ + check_array_dim(array, 2) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.shape[1] + + da = np.apply_along_axis( + da_array1d, 1, array, total_occ=total_occ, threshold=threshold) + + return da
    + + +
    [docs]def da_array1d( + array: np.ndarray, total_occ: int = None, + threshold: float = 300) -> np.float64: + """Calculate daylight autonomy for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + threshold: Threshold value for daylight autonomy. Default: 300. + + Returns: + A NumPy float of the daylight autonomy. + """ + check_array_dim(array, 1) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.size + + return np.float64((array >= threshold).sum() / total_occ * 100)
    + + +
    [docs]def cda_array2d( + array: np.ndarray, total_occ: int = None, + threshold: float = 300) -> np.ndarray: + """Calculate continuos daylight autonomy for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + threshold: Threshold value for continuos daylight autonomy. Default: 300. + + Returns: + A 1-dimensional NumPy array with the continuos daylight autonomy for + each row in the input array. + """ + check_array_dim(array, 2) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.shape[1] + + cda = np.apply_along_axis( + cda_array1d, 1, array, total_occ=total_occ, threshold=threshold) + + return cda
    + + +
    [docs]def cda_array1d( + array: np.ndarray, total_occ: int = None, + threshold: float = 300) -> np.float64: + """Calculate continuos daylight autonomy for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + threshold: Threshold value for continuos daylight autonomy. Default: 300. + + Returns: + A NumPy float of the continuos daylight autonomy. + """ + check_array_dim(array, 1) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.size + + return np.float64( + np.where(array >= threshold, 1, array / threshold).sum() / total_occ * 100)
    + + +
    [docs]def udi_array2d( + array: np.ndarray, total_occ: int = None, min_t: float = 100, + max_t: float = 3000) -> np.ndarray: + """Calculate useful daylight illuminance for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + max_t: Maximum threshold for useful daylight illuminance. Default: 3000. + + Returns: + A 1-dimensional NumPy array with the useful daylight illuminance for + each row in the input array. + """ + check_array_dim(array, 2) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.shape[1] + + udi = np.apply_along_axis( + udi_array1d, 1, array, total_occ=total_occ, min_t=min_t, max_t=max_t) + + return udi
    + + +
    [docs]def udi_array1d( + array: np.ndarray, total_occ: int = None, min_t: float = 100, + max_t: float = 3000) -> np.float64: + """Calculate useful daylight illuminance for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + max_t: Maximum threshold for useful daylight illuminance. Default: 3000. + + Returns: + A NumPy float of the useful daylight illuminance. + """ + check_array_dim(array, 1) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.size + + return np.float64(((array >= min_t) & (array <= max_t)).sum() / total_occ * 100)
    + + +
    [docs]def udi_lower_array2d( + array: np.ndarray, total_occ: int = None, min_t: float = 100, + sun_down_occ_hours: int = 0) -> np.ndarray: + """Calculate lower than useful daylight illuminance for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + sun_down_occ_hours: Number of occupied hours where the sun is down. + + Returns: + A 1-dimensional NumPy array with the lower than useful daylight + illuminance for each row in the input array. + """ + check_array_dim(array, 2) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.shape[1] + + udi = np.apply_along_axis( + udi_lower_array1d, 1, array, total_occ=total_occ, min_t=min_t, + sun_down_occ_hours=sun_down_occ_hours) + + return udi
    + + +
    [docs]def udi_lower_array1d( + array: np.ndarray, total_occ: int = None, min_t: float = 100, + sun_down_occ_hours: int = 0) -> np.float64: + """Calculate lower than useful daylight illuminance for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + min_t: Minimum threshold for useful daylight illuminance. Default: 100. + sun_down_occ_hours: Number of occupied hours where the sun is down. + + Returns: + A NumPy float of the lower than useful daylight illuminance. + """ + check_array_dim(array, 1) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.size + + if min_t == 0: + return np.float64(0) + + return np.float64(((array < min_t).sum() + sun_down_occ_hours) / total_occ * 100)
    + + +
    [docs]def udi_upper_array2d( + array: np.ndarray, total_occ: int = None, + max_t: float = 3000) -> np.ndarray: + """Calculate higher than useful daylight illuminance for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + max_t: Maximum threshold for useful daylight illuminance. Default: 3000. + + Returns: + A 1-dimensional NumPy array with the higher than useful daylight + illuminance for each row in the input array. + """ + check_array_dim(array, 2) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.shape[1] + + udi = np.apply_along_axis( + udi_upper_array1d, 1, array, total_occ=total_occ, max_t=max_t) + + return udi
    + + +
    [docs]def udi_upper_array1d( + array: np.ndarray, total_occ: int = None, + max_t: float = 3000) -> np.float64: + """Calculate higher than useful daylight illuminance for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + total_occ: Integer indicating the number of occupied hours. If not given any + input the number of occupied hours will be found by the array shape. + max_t: Maximum threshold for higher than useful daylight illuminance. + Default: 3000. + + Returns: + A NumPy float of the higher than useful daylight illuminance. + """ + check_array_dim(array, 1) + if total_occ is None: + # set total_occ to number of columns in array + total_occ = array.size + + return np.float64((array > max_t).sum() / total_occ * 100)
    + + +
    [docs]def sda_array2d( + array: np.ndarray, target_time: float = 50, threshold: float = 300, + total_occ: int = None) -> np.ndarray: + """Calculate spatial daylight autonomy for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + target_time: A minimum threshold of occupied time (eg. 50% of the + time), above which a given sensor passes and contributes to the + spatial daylight autonomy. Defaults to 50. + threshold: Threshold value for daylight autonomy. Default: 300. + total_occ: Integer indicating the number of occupied hours. If not + given any input the number of occupied hours will be found by the + array shape, i.e., it is assumed that the array is filtered by + occupied hours. + + Returns: + A NumPy float of the sDA as a percentage (decimal) + """ + da = da_array2d(array, total_occ=total_occ, threshold=threshold) + sda = (da >= target_time).mean() + + return sda
    + + +
    [docs]def ase_array2d( + array: np.ndarray, occ_hours: int = 250, + direct_threshold: float = 1000) -> Tuple[np.ndarray, np.ndarray]: + """Calculate annual sunlight exposure for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + occ_hours: The number of occupied hours that cannot receive more than + the direct_threshold. Defaults to 250. + direct_threshold: The threshold that determines if a sensor is overlit. + Defaults to 1000. + + Returns: + A NumPy float of the ASE as a percentage (decimal). + """ + check_array_dim(array, 2) + h_above = (array > direct_threshold).sum(axis=1) + ase = (h_above > occ_hours).sum() / array.shape[0] * 100 + + return ase, h_above
    + + +
    [docs]def average_values_array2d( + array: np.ndarray, full_length: int = 8760) -> np.ndarray: + """Calculate average values for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + full_length: Integer to use as divisor. + + Returns: + A 1-dimensional NumPy array with the average value for each row in the + input array. + """ + check_array_dim(array, 2) + + avg_values = array.sum(axis=1) / full_length + + return avg_values
    + + +
    [docs]def average_values_array1d( + array: np.ndarray, full_length: int = 8760) -> np.float64: + """Calculate average value for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + full_length: Integer to use as divisor. + + Returns: + A NumPy float of the average value. + """ + check_array_dim(array, 1) + + return array.sum() / full_length
    + + +
    [docs]def cumulative_values_array2d( + array: np.ndarray, timestep: int = 1, t_step_multiplier: float = 1 + ) -> np.ndarray: + """Calculate cumulative values for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + timestep: Integer for the timestep of the analysis. + t_step_multiplier: A value that will be multiplied with the timestep. + + Returns: + A 1-dimensional NumPy array with the cumulative value for each row in + the input array. + """ + check_array_dim(array, 2) + + cumulative_values = array.sum(axis=1) / (timestep * t_step_multiplier) + + return cumulative_values
    + + +
    [docs]def cumulative_values_array1d( + array: np.ndarray, timestep: int = 1, t_step_multiplier: float = 1 + ) -> np.float64: + """Calculate daylight autonomy for a 1D NumPy array. + + Args: + array: A 1D NumPy array. + timestep: Integer for the timestep of the analysis. + t_step_multiplier: A value that will be multiplied with the timestep. + + Returns: + A NumPy float of the cumulative value. + """ + check_array_dim(array, 1) + + return array.sum() / (timestep * t_step_multiplier)
    + + +
    [docs]def peak_values_array2d( + array: np.ndarray, coincident: bool = False + ) -> Tuple[np.ndarray, Union[int, None]]: + """Calculate peak values for a 2D NumPy array. + + Args: + array: A 2D NumPy array. + coincident: Boolean to indicate whether output values represent the + peak value for each sensor throughout the entire analysis (False) + or they represent the highest overall value across each sensor grid + at a particular timestep (True). + + Returns: + A 1-dimensional NumPy array with the peak value for each row in the + input array, and the index of the maximum value representing the + timestep in the array with the largest value. + """ + check_array_dim(array, 2) + + max_i = None + if coincident: + array_summed = array.sum(axis=0) + if np.any(array_summed): + max_i = np.argmax(array_summed) + peak_values = array[:, max_i] + else: + peak_values = np.zeros(array.shape[0]) + else: + if np.any(array): + peak_values = np.amax(array, axis=1) + else: + peak_values = np.zeros(array.shape[0]) + + return peak_values, max_i
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/reader.html b/docs/_modules/honeybee_radiance_postprocess/reader.html new file mode 100644 index 00000000..1d3f9eae --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/reader.html @@ -0,0 +1,618 @@ + + + + + + + honeybee_radiance_postprocess.reader — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.reader

    +"""Post-processing reader functions."""
    +import numpy as np
    +
    +from .util import binary_mtx_dimension
    +
    +
    +
    [docs]def binary_to_array( + binary_file: str, nrows: int = None, ncols: int = None, + ncomp: int = None, line_count: int = 0) -> np.ndarray: + """Read a Radiance binary file as a NumPy array. + + Args: + binary_file: Path to binary Radiance file. + nrows: Number of rows in the Radiance file. + ncols: Number of columns in the Radiance file. + ncomp: Number of components of each element in the Radiance file. + line_count: Number of lines to skip in the input file. Usually used to + skip the header. + + Returns: + A NumPy array. + """ + with open(binary_file, 'rb') as reader: + if (nrows or ncols or ncomp) is None: + # get nrows, ncols and header line count + nrows, ncols, ncomp, line_count = binary_mtx_dimension(binary_file) + # skip first n lines from reader + for i in range(line_count): + reader.readline() + + array = np.fromfile(reader, dtype=np.float32) + if ncomp != 1: + array = array.reshape(nrows, ncols, ncomp) + else: + array = array.reshape(nrows, ncols) + + return array
    + + +
    [docs]def ascii_to_array( + ascii_file: str, nrows: int = None, ncols: int = None, + ncomp: int = None, line_count: int = 0) -> np.ndarray: + """Read a Radiance ascii file as a NumPy array. + + Args: + ascii_file: Path to ascii Radiance file. + nrows: Number of rows in the Radiance file. + ncols: Number of columns in the Radiance file. + ncomp: Number of components of each element in the Radiance file. + line_count: Number of lines to skip in the input file. Usually used to + skip the header. + + Returns: + A NumPy array. + """ + with open(ascii_file, 'r') as reader: + if (nrows or ncols or ncomp) is None: + # get nrows, ncols and header line count + # we can reuse binary_mtx_dimension though the input file is ascii + nrows, ncols, ncomp, line_count = binary_mtx_dimension(ascii_file) + + array = np.loadtxt(reader, dtype=np.float32, skiprows=line_count) + if ncomp != 1: + array = array.reshape(nrows, ncols, ncomp) + else: + array = array.reshape(nrows, ncols) + + return array
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/results/annual_daylight.html b/docs/_modules/honeybee_radiance_postprocess/results/annual_daylight.html new file mode 100644 index 00000000..53c58ab3 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/annual_daylight.html @@ -0,0 +1,1234 @@ + + + + + + + honeybee_radiance_postprocess.results.annual_daylight — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.results.annual_daylight

    +import json
    +from pathlib import Path
    +from typing import Tuple, List
    +import numpy as np
    +
    +from ladybug.analysisperiod import AnalysisPeriod
    +from ladybug.datacollection import HourlyContinuousCollection
    +from ladybug.datatype.illuminance import Illuminance
    +from ladybug.datatype.fraction import Fraction
    +from ladybug.header import Header
    +
    +from ..annual import occupancy_schedule_8_to_6
    +from ..metrics import da_array2d, cda_array2d, udi_array2d, udi_lower_array2d, \
    +    udi_upper_array2d, ase_array2d
    +from ..util import filter_array
    +from ..annualdaylight import _annual_daylight_vis_metadata
    +from ..electriclight import array_to_dimming_fraction
    +from .. import type_hints
    +from ..dynamic import DynamicSchedule
    +from .results import Results
    +
    +
    +
    [docs]class AnnualDaylight(Results): + """Annual Daylight Results class. + + Args: + folder: Path to results folder. + schedule: 8760 values as a list. Values must be either 0 or 1. Values of 1 + indicates occupied hours. If no schedule is provided a default schedule + will be used. (Default: None). + load_arrays: Set to True to load all NumPy arrays. If False the arrays will be + loaded only once they are needed. In both cases the loaded array(s) will be + stored in a dictionary under the arrays property. (Default: False). + + Properties: + * schedule + * occ_pattern + * total_occ + * sun_down_occ_hours + * occ_mask + * arrays + * valid_states + * datatype + """ + def __init__(self, folder, schedule: list = None, load_arrays: bool = False): + """Initialize Results.""" + Results.__init__(self, folder, datatype=Illuminance('Illuminance'), + schedule=schedule, unit='lux', load_arrays=load_arrays) + +
    [docs] def daylight_autonomy( + self, threshold: float = 300, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_metric: + """Calculate daylight autonomy. + + Args: + threshold: Threshold value for daylight autonomy. Defaults to 300. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the daylight autonomy and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + da = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results = da_array2d( + array_filter, total_occ=self.total_occ, threshold=threshold) + else: + results = np.zeros(grid_info['count']) + da.append(results) + + return da, grids_info
    + +
    [docs] def continuous_daylight_autonomy( + self, threshold: float = 300, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_metric: + """Calculate continuous daylight autonomy. + + Args: + threshold: Threshold value for daylight autonomy. Defaults to 300. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the continuous daylight autonomy and grid + information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + cda = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results = cda_array2d( + array_filter, total_occ=self.total_occ, threshold=threshold) + else: + results = np.zeros(grid_info['count']) + cda.append(results) + + return cda, grids_info
    + +
    [docs] def useful_daylight_illuminance( + self, min_t: float = 100, max_t: float = 3000, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_metric: + """Calculate useful daylight illuminance. + + Args: + min_t: Minimum threshold for useful daylight illuminance. Defaults to 100. + max_t: Maximum threshold for useful daylight illuminance. Defaults to 3000. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the useful daylight illuminance and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + udi = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results = udi_array2d( + array_filter, total_occ=self.total_occ, min_t=min_t, max_t=max_t) + else: + results = np.zeros(grid_info['count']) + udi.append(results) + + return udi, grids_info
    + +
    [docs] def useful_daylight_illuminance_lower( + self, min_t: float = 100, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_metric: + """Calculate lower than useful daylight illuminance. + + Args: + min_t: Minimum threshold for useful daylight illuminance. Defaults to 100. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the lower than useful daylight illuminance and + grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + sun_down_occ_hours = self.sun_down_occ_hours + + udi_lower = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results = udi_lower_array2d( + array_filter, total_occ=self.total_occ, + min_t=min_t, sun_down_occ_hours=sun_down_occ_hours) + else: + results = np.zeros(grid_info['count']) + udi_lower.append(results) + + return udi_lower, grids_info
    + +
    [docs] def useful_daylight_illuminance_upper( + self, max_t: float = 3000, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_metric: + """Calculate higher than useful daylight illuminance. + + Args: + max_t: Maximum threshold for useful daylight illuminance. Defaults to 3000. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the higher than useful daylight illuminance and + grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + udi_upper = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results = udi_upper_array2d( + array_filter, total_occ=self.total_occ, max_t=max_t) + else: + results = np.zeros(grid_info['count']) + udi_upper.append(results) + + return udi_upper, grids_info
    + +
    [docs] def annual_metrics( + self, threshold: float = 300, min_t: float = 100, + max_t: float = 3000, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_daylight_metrics: + """Calculate multiple annual daylight metrics. + + This method will calculate the following metrics: + * Daylight autonomy + * Continuous daylight autonomy + * Useful daylight illuminance + * Lower than useful daylight illuminance + * Higher than useful daylight illuminance + + Args: + threshold: Threshold value for daylight autonomy. Defaults to 300. + min_t: Minimum threshold for useful daylight illuminance. Defaults to 100. + max_t: Maximum threshold for useful daylight illuminance. Defaults to 3000. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the five annual daylight metrics and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + sun_down_occ_hours = self.sun_down_occ_hours + + da = [] + cda = [] + udi = [] + udi_lower = [] + udi_upper = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + da_results = da_array2d( + array_filter, total_occ=self.total_occ, threshold=threshold) + cda_results = cda_array2d( + array_filter, total_occ=self.total_occ, threshold=threshold) + udi_results = udi_array2d( + array_filter, total_occ=self.total_occ, min_t=min_t, max_t=max_t) + udi_lower_results = udi_lower_array2d( + array_filter, total_occ=self.total_occ, min_t=min_t, + sun_down_occ_hours=sun_down_occ_hours) + udi_upper_results = udi_upper_array2d( + array_filter, total_occ=self.total_occ, max_t=max_t) + else: + da_results = cda_results = udi_results = udi_lower_results = \ + udi_upper_results = np.zeros(grid_info['count']) + da.append(da_results) + cda.append(cda_results) + udi.append(udi_results) + udi_lower.append(udi_lower_results) + udi_upper.append(udi_upper_results) + + return da, cda, udi, udi_lower, udi_upper, grids_info
    + +
    [docs] def annual_metrics_to_folder( + self, target_folder: str, threshold: float = 300, + min_t: float = 100, max_t: float = 3000, states: DynamicSchedule = None, + grids_filter: str = '*'): + """Calculate and write multiple annual daylight metrics to a folder. + + This method will calculate the following metrics: + * Daylight autonomy + * Continuous daylight autonomy + * Useful daylight illuminance + * Lower than useful daylight illuminance + * Higher than useful daylight illuminance + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + threshold: Threshold value for daylight autonomy. Defaults to 300. + min_t: Minimum threshold for useful daylight illuminance. Defaults to 100. + max_t: Maximum threshold for useful daylight illuminance. Defaults to 3000. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + da, cda, udi, udi_lower, udi_upper, grids_info = self.annual_metrics( + threshold=threshold, min_t=min_t, max_t=max_t, states=states, + grids_filter=grids_filter) + + pattern = { + 'da': da, 'cda': cda, 'udi_lower': udi_lower, 'udi': udi, + 'udi_upper': udi_upper + } + for metric, data in pattern.items(): + metric_folder = folder.joinpath(metric) + extension = metric.split('_')[0] + for count, grid_info in enumerate(grids_info): + d = data[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.{extension}') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + for metric in pattern.keys(): + info_file = folder.joinpath(metric, 'grids_info.json') + info_file.write_text(json.dumps(grids_info)) + + metric_info_dict = _annual_daylight_vis_metadata() + for metric, data in metric_info_dict.items(): + vis_metadata_file = folder.joinpath(metric, 'vis_metadata.json') + vis_metadata_file.write_text(json.dumps(data, indent=4))
    + +
    [docs] def spatial_daylight_autonomy( + self, threshold: float = 300, target_time: float = 50, + states: DynamicSchedule = None, grids_filter: str = '*' + ) -> type_hints.spatial_daylight_autonomy: + """Calculate spatial daylight autonomy. + + Note: This component will only output a LEED compliant sDA if you've + run the simulation with blinds and blinds schedules as per the + IES-LM-83-12. Use the states option to calculate a LEED compliant sDA. + + Args: + threshold: Threshold value for daylight autonomy. Defaults to 300. + target_time: A minimum threshold of occupied time (eg. 50% of the + time), above which a given sensor passes and contributes to the + spatial daylight autonomy. Defaults to 50. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the spatial daylight autonomy and grid + information. + """ + da, grids_info = self.daylight_autonomy( + threshold=threshold, states=states, grids_filter=grids_filter) + + sda = [] + for array in da: + sda.append((array >= target_time).mean()) + + return sda, grids_info
    + +
    [docs] def annual_sunlight_exposure( + self, direct_threshold: float = 1000, occ_hours: int = 250, + states: DynamicSchedule = None, grids_filter: str = '*' + ) -> type_hints.annual_sunlight_exposure: + """Calculate annual sunlight exposure. + + Args: + direct_threshold: The threshold that determines if a sensor is + overlit. Defaults to 1000. + occ_hours: The number of occupied hours that cannot receive more + than the direct_threshold. Defaults to 250. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the annual sunlight exposure, the number of + hours that exceeds the direct threshold for each sensor, and + grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + ase = [] + hours_above = [] + for grid_info in grids_info: + array = self._array_from_states( + grid_info, states=states, res_type='direct') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + results, h_above = ase_array2d( + array_filter, occ_hours=occ_hours, + direct_threshold=direct_threshold) + else: + results = np.float64(0) + h_above = np.zeros(grid_info['count']) + ase.append(results) + hours_above.append(h_above) + + return ase, hours_above, grids_info
    + +
    [docs] def annual_sunlight_exposure_to_folder( + self, target_folder: str, direct_threshold: float = 1000, + occ_hours: int = 250, states: DynamicSchedule = None, + grids_filter: str = '*'): + """Calculate and write annual sunlight exposure to a folder. + + Args: + direct_threshold: The threshold that determines if a sensor is + overlit. Defaults to 1000. + occ_hours: The number of occupied hours that cannot receive more + than the direct_threshold. Defaults to 250. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + ase, hours_above, grids_info = self.annual_sunlight_exposure( + direct_threshold=direct_threshold, occ_hours=occ_hours, + states=states, grids_filter=grids_filter + ) + + pattern = {'ase': ase, 'hours_above': hours_above} + for metric, data in pattern.items(): + metric_folder = folder.joinpath(metric) + if metric == 'hours_above': + extension = 'res' + else: + extension = 'ase' + for count, grid_info in enumerate(grids_info): + d = data[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.{extension}') + output_file.parent.mkdir(parents=True, exist_ok=True) + if metric == 'hours_above': + np.savetxt(output_file, d, fmt='%i') + elif metric == 'ase': + output_file.write_text('%.2f' % d) + + for metric in pattern.keys(): + info_file = folder.joinpath(metric, 'grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + +
    [docs] def daylight_control_schedules( + self, states: DynamicSchedule = None, grids_filter: str = '*', + base_schedule: list = None, ill_setpoint: float = 300, + min_power_in: float = 0.3, min_light_out: float = 0.2, + off_at_min: bool = False + ) -> Tuple[List[np.ndarray], List[dict]]: + """Generate electric lighting schedules from annual daylight results. + + Such controls will dim the lights according to whether the illuminance values + at the sensor locations are at a target illuminance setpoint. The results can be + used to account for daylight controls in energy simulations. + + This function will generate one schedule per sensor grid in the simulation. Each + grid should have sensors at the locations in space where daylight dimming sensors + are located. Grids with one, two, or more sensors can be used to model setups + where fractions of each room are controlled by different sensors. If the sensor + grids are distributed over the entire floor of the rooms, the resulting schedules + will be idealized, where light dimming has been optimized to supply the minimum + illuminance setpoint everywhere in the room. + + Args: + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + base_schedule: A list of 8760 fractional values for the lighting schedule + representing the usage of lights without any daylight controls. The + values of this schedule will be multiplied by the hourly dimming + fraction to yield the output lighting schedules. If None, a schedule + from 9AM to 5PM on weekdays will be used. (Default: None). + ill_setpoint: A number for the illuminance setpoint in lux beyond which + electric lights are dimmed if there is sufficient daylight. + Some common setpoints are listed below. (Default: 300 lux). + + * 50 lux - Corridors and hallways. + * 150 lux - Computer work spaces (screens provide illumination). + * 300 lux - Paper work spaces (reading from surfaces that need illumination). + * 500 lux - Retail spaces or museums illuminating merchandise/artifacts. + * 1000 lux - Operating rooms and workshops where light is needed for safety. + + min_power_in: A number between 0 and 1 for the the lowest power the lighting + system can dim down to, expressed as a fraction of maximum + input power. (Default: 0.3). + min_light_out: A number between 0 and 1 the lowest lighting output the lighting + system can dim down to, expressed as a fraction of maximum light + output. Note that setting this to 1 means lights aren't dimmed at + all until the illuminance setpoint is reached. This can be used to + approximate manual light-switching behavior when used in conjunction + with the off_at_min input below. (Default: 0.2). + off_at_min: Boolean to note whether lights should switch off completely when + they get to the minimum power input. (Default: False). + + Returns: + A tuple with two values. + + - schedules: A list of lists where each sub-list represents an electric + lighting dimming schedule for a sensor grid. + + - grids_info: A list of grid information. + """ + # process the base schedule input into a list of values + if base_schedule is None: + base_schedule = occupancy_schedule_8_to_6(timestep=self.timestep) + base_schedule = np.array(base_schedule) + + grids_info = self._filter_grids(grids_filter=grids_filter) + sun_up_hours = [int(h) for h in self.sun_up_hours] + + dim_fracts = [] + for grid_info in grids_info: + array = self._array_from_states( + grid_info, states=states, res_type='total') + if np.any(array): + fract_list = array_to_dimming_fraction( + array, sun_up_hours, ill_setpoint, min_power_in, + min_light_out, off_at_min + ) + else: + fract_list = np.ones(8760) + dim_fracts.append(fract_list) + + schedules = [] + for grid_info, dim_fract in zip(grids_info, dim_fracts): + sch_vals = base_schedule * dim_fract + schedules.append(sch_vals) + + return schedules, grids_info
    + +
    [docs] def daylight_control_schedules_to_folder( + self, target_folder: str, states: DynamicSchedule = None, + grids_filter: str = '*', base_schedule: list = None, + ill_setpoint: float = 300, min_power_in: float = 0.3, + min_light_out: float = 0.2, off_at_min: bool = False): + """Generate electric lighting schedules from annual daylight results and + write the schedules to a folder. + + Such controls will dim the lights according to whether the illuminance values + at the sensor locations are at a target illuminance setpoint. The results can be + used to account for daylight controls in energy simulations. + + This function will generate one schedule per sensor grid in the simulation. Each + grid should have sensors at the locations in space where daylight dimming sensors + are located. Grids with one, two, or more sensors can be used to model setups + where fractions of each room are controlled by different sensors. If the sensor + grids are distributed over the entire floor of the rooms, the resulting schedules + will be idealized, where light dimming has been optimized to supply the minimum + illuminance setpoint everywhere in the room. + + Args: + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + base_schedule: A list of 8760 fractional values for the lighting schedule + representing the usage of lights without any daylight controls. The + values of this schedule will be multiplied by the hourly dimming + fraction to yield the output lighting schedules. If None, a schedule + from 9AM to 5PM on weekdays will be used. (Default: None). + ill_setpoint: A number for the illuminance setpoint in lux beyond which + electric lights are dimmed if there is sufficient daylight. + Some common setpoints are listed below. (Default: 300 lux). + + * 50 lux - Corridors and hallways. + * 150 lux - Computer work spaces (screens provide illumination). + * 300 lux - Paper work spaces (reading from surfaces that need illumination). + * 500 lux - Retail spaces or museums illuminating merchandise/artifacts. + * 1000 lux - Operating rooms and workshops where light is needed for safety. + + min_power_in: A number between 0 and 1 for the the lowest power the lighting + system can dim down to, expressed as a fraction of maximum + input power. (Default: 0.3). + min_light_out: A number between 0 and 1 the lowest lighting output the lighting + system can dim down to, expressed as a fraction of maximum light + output. Note that setting this to 1 means lights aren't dimmed at + all until the illuminance setpoint is reached. This can be used to + approximate manual light-switching behavior when used in conjunction + with the off_at_min input below. (Default: 0.2). + off_at_min: Boolean to note whether lights should switch off completely when + they get to the minimum power input. (Default: False). + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + schedules, grids_info = self.daylight_control_schedules( + states=states, grids_filter=grids_filter, + base_schedule=base_schedule, ill_setpoint=ill_setpoint, + min_power_in=min_power_in, min_light_out=min_light_out, + off_at_min=off_at_min) + + schedule_folder = folder.joinpath('control_schedules') + + for count, grid_info in enumerate(grids_info): + d = schedules[count] + full_id = grid_info['full_id'] + output_file = schedule_folder.joinpath(f'{full_id}.txt') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + info_file = schedule_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + +
    [docs] def annual_uniformity_ratio( + self, threshold: float = 0.5, states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_uniformity_ratio: + """Calculate annual uniformity ratio. + + Args: + threshold: A threshold for the uniformity ratio. Defaults to 0.5. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the annual uniformity ratio, annual + data collections, and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + analysis_period = AnalysisPeriod(timestep=self.timestep) + + data_collections = [] + annual_uniformity_ratio = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + su_min_array = array.min(axis=0) + su_mean_array = array.mean(axis=0) + su_uniformity_ratio = su_min_array / su_mean_array + + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=self.occ_mask) + min_array = array_filter.min(axis=0) + mean_array = array_filter.mean(axis=0) + uniformity_ratio = min_array / mean_array + annual_uniformity_ratio.append( + np.float64( + (uniformity_ratio >= threshold).sum() / self.total_occ * 100 + ) + ) + else: + su_uniformity_ratio = np.zeros(len(self.sun_up_hours)) + annual_uniformity_ratio.append(np.float64(0)) + + annual_array = \ + self.values_to_annual( + self.sun_up_hours, su_uniformity_ratio, self.timestep) + header = Header(Fraction(), '%', analysis_period) + header.metadata['sensor grid'] = grid_info['full_id'] + data_collections.append( + HourlyContinuousCollection(header, annual_array.tolist())) + + return annual_uniformity_ratio, data_collections, grids_info
    + +
    [docs] def annual_uniformity_ratio_to_folder( + self, target_folder: str, threshold: float = 0.5, + states: DynamicSchedule = None, grids_filter: str = '*' + ): + """Calculate annual uniformity ratio and write it to a folder. + + Args: + target_folder: Folder path to write annual uniformity ratio in. + threshold: A threshold for the uniformity ratio. Defaults to 0.5. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the daylight autonomy and grid information. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + annual_uniformity_ratio, data_collections, grids_info = \ + self.annual_uniformity_ratio(threshold=threshold, states=states, + grids_filter=grids_filter) + + datacollection_folder = folder.joinpath('datacollections') + uniformity_ratio_folder = folder.joinpath('uniformity_ratio') + + for aur, data_collection, grid_info in \ + zip(annual_uniformity_ratio, data_collections, grids_info): + grid_id = grid_info['full_id'] + data_dict = data_collection.to_dict() + data_file = datacollection_folder.joinpath(f'{grid_id}.json') + data_file.parent.mkdir(parents=True, exist_ok=True) + data_file.write_text(json.dumps(data_dict)) + + aur_file = uniformity_ratio_folder.joinpath(f'{grid_id}.ur') + aur_file.parent.mkdir(parents=True, exist_ok=True) + aur_file.write_text(str(round(aur, 2))) + + info_file = uniformity_ratio_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/results/annual_irradiance.html b/docs/_modules/honeybee_radiance_postprocess/results/annual_irradiance.html new file mode 100644 index 00000000..9024639b --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/annual_irradiance.html @@ -0,0 +1,739 @@ + + + + + + + honeybee_radiance_postprocess.results.annual_irradiance — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.results.annual_irradiance

    +import json
    +from pathlib import Path
    +import numpy as np
    +
    +from ladybug.datatype.energyflux import EnergyFlux
    +
    +from ..metrics import (average_values_array2d, cumulative_values_array2d,
    +    peak_values_array2d)
    +from ..util import filter_array, hoys_mask
    +from ..annualirradiance import _annual_irradiance_vis_metadata
    +from .. import type_hints
    +from ..dynamic import DynamicSchedule
    +from .results import Results
    +
    +
    +
    [docs]class AnnualIrradiance(Results): + """Annual Daylight Results class. + + Args: + folder: Path to results folder. + schedule: 8760 values as a list. Values must be either 0 or 1. Values of 1 + indicates occupied hours. If no schedule is provided a default schedule + will be used. (Default: None). + load_arrays: Set to True to load all NumPy arrays. If False the arrays will be + loaded only once they are needed. In both cases the loaded array(s) will be + stored in a dictionary under the arrays property. (Default: False). + + Properties: + * schedule + * occ_pattern + * total_occ + * sun_down_occ_hours + * occ_mask + * arrays + * valid_states + * datatype + """ + def __init__(self, folder, schedule: list = None, load_arrays: bool = False): + """Initialize Results.""" + Results.__init__(self, folder, datatype=EnergyFlux('Irradiance'), + schedule=schedule, unit='W/m2', load_arrays=load_arrays) + +
    [docs] def cumulative_values( + self, hoys: list = [], states: DynamicSchedule = None, + t_step_multiplier: float = 1000, grids_filter: str = '*', + res_type: str = 'total') -> type_hints.cumulative_values: + """Get cumulative values for each sensor over a given period. + + The hoys input can be used to filter the data for a particular time + period. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + t_step_multiplier: A value that will be multiplied with the timestep. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with the cumulative value for each sensor and grid + information. + """ + cumulative_values, grids_info = \ + super(AnnualIrradiance, self).cumulative_values( + hoys=hoys, states=states, t_step_multiplier=t_step_multiplier, + grids_filter=grids_filter, res_type=res_type + ) + + return cumulative_values, grids_info
    + +
    [docs] def cumulative_values_to_folder( + self, target_folder: str, hoys: list = [], + states: DynamicSchedule = None, t_step_multiplier: float = 1000, + grids_filter: str = '*', res_type: str = 'total'): + """Get cumulative values for each sensor over a given period and write + the values to a folder. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + t_step_multiplier: A value that will be multiplied with the timestep. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + """ + super(AnnualIrradiance, self).cumulative_values_to_folder( + target_folder, hoys=hoys, states=states, + t_step_multiplier=t_step_multiplier, grids_filter=grids_filter, + res_type=res_type + )
    + +
    [docs] def annual_metrics( + self, hoys: list = [], states: DynamicSchedule = None, + grids_filter: str = '*') -> type_hints.annual_irradiance_metrics: + """Calculate multiple annual irradiance metrics. + + This method will calculate the following metrics: + * Average Irradiance (W/m2) + * Peak Irradiance (W/m2) + * Cumulative Radiation (kWh/m2) + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + Tuple: A tuple with the three annual irradiance metrics and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + mask = hoys_mask(self.sun_up_hours, hoys) + full_length = len(self.study_hours) + + average = [] + peak = [] + cumulative = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type='total') + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask) + average_results = average_values_array2d( + array_filter, full_length=full_length) + peak_results, max_i = peak_values_array2d( + array_filter) + cumulative_results = cumulative_values_array2d( + array_filter, self.timestep, 1000) + else: + average_results = peak_results = cumulative_results = \ + np.zeros(grid_info['count']) + average.append(average_results) + peak.append(peak_results) + cumulative.append(cumulative_results) + + return average, peak, cumulative, grids_info
    + +
    [docs] def annual_metrics_to_folder( + self, target_folder: str, hoys: list = [], + states: DynamicSchedule = None, grids_filter: str = '*'): + """Calculate and write multiple annual irradiance metrics to a folder. + + This command generates 3 files for each input grid. + * average_irradiance/{grid-name}.res -- Average Irradiance (W/m2) + * peak_irradiance/{grid-name}.res -- Peak Irradiance (W/m2) + * cumulative_radiation/{grid-name}.res -- Cumulative Radiation (kWh/m2) + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + average, peak, cumulative, grids_info = self.annual_metrics( + hoys=hoys, states=states, grids_filter=grids_filter) + + pattern = { + 'average_irradiance': average, 'peak_irradiance': peak, + 'cumulative_radiation': cumulative, + } + for metric, data in pattern.items(): + metric_folder = folder.joinpath(metric) + for count, grid_info in enumerate(grids_info): + d = data[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.res') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + for metric in pattern.keys(): + info_file = folder.joinpath(metric, 'grids_info.json') + info_file.write_text(json.dumps(grids_info)) + + metric_info_dict = _annual_irradiance_vis_metadata() + for metric, data in metric_info_dict.items(): + vis_metadata_file = folder.joinpath(metric, 'vis_metadata.json') + vis_metadata_file.write_text(json.dumps(data, indent=4))
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/results/results.html b/docs/_modules/honeybee_radiance_postprocess/results/results.html new file mode 100644 index 00000000..191acb7f --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/results.html @@ -0,0 +1,1887 @@ + + + + + + + honeybee_radiance_postprocess.results.results — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.results.results

    +"""Post-processing Results class."""
    +import json
    +from pathlib import Path
    +from itertools import islice, cycle
    +from typing import Tuple, Union, List
    +import numpy as np
    +
    +from ladybug.analysisperiod import AnalysisPeriod
    +from ladybug.datacollection import HourlyContinuousCollection
    +from ladybug.datatype.generic import GenericType
    +from ladybug.datatype.base import DataTypeBase
    +from ladybug.dt import DateTime
    +from ladybug.header import Header
    +
    +from ..annual import occupancy_schedule_8_to_6
    +from ..metrics import (average_values_array2d, cumulative_values_array2d,
    +    peak_values_array2d)
    +from ..util import filter_array, hoys_mask, check_array_dim, \
    +    _filter_grids_by_pattern
    +from .. import type_hints
    +from ..dynamic import DynamicSchedule, ApertureGroupSchedule
    +
    +
    +class _ResultsFolder(object):
    +    """Base class for ResultsFolder.
    +
    +    This class includes properties that are independent of the results.
    +
    +    Args:
    +        folder: Path to results folder.
    +
    +    Properties:
    +        * folder
    +        * grids_info
    +        * sun_up_hours
    +        * sun_down_hours
    +        * light_paths
    +        * default_states
    +        * grid_states
    +        * timestep
    +        * study_hours
    +
    +    """
    +    __slots__ = ('_folder', '_grids_info', '_sun_up_hours', '_sun_down_hours',
    +                 '_sun_up_hours_mask', '_sun_down_hours_mask', '_datetimes',
    +                 '_light_paths', '_default_states', '_grid_states', '_timestep',
    +                 '_study_hours')
    +
    +    def __init__(self, folder: Union[str, Path]):
    +        """Initialize ResultsFolder."""
    +        self._folder = Path(folder).absolute().as_posix()
    +        self._timestep, self._study_hours = self._get_study_info()
    +        self.grids_info = self._get_grids_info()
    +        self.sun_up_hours = self._get_sun_up_hours()
    +        self._sun_up_hours_mask = self._get_sun_up_hours_mask()
    +        self._sun_down_hours_mask = self._get_sun_down_hours_mask()
    +        self._datetimes = self._get_datetimes()
    +        self._light_paths = self._get_light_paths()
    +        self._default_states = self._get_default_states()
    +        self._grid_states = self._get_grid_states()
    +
    +    @property
    +    def folder(self):
    +        """Return full path to results folder as a string."""
    +        return self._folder
    +
    +    @property
    +    def grids_info(self):
    +        """Return grids information as list of dictionaries for each grid."""
    +        return self._grids_info
    +
    +    @grids_info.setter
    +    def grids_info(self, grids_info):
    +        assert isinstance(grids_info, list), \
    +            f'Grids information must be a list. Got object of type: {type(grids_info)}.'
    +        for grid_info in grids_info:
    +            assert isinstance(grid_info, dict), \
    +                'Object in grids information must be a dictionary. ' \
    +                f'Got object of type {type(grid_info)}.'
    +            if 'light_path' in grid_info.keys():
    +                _grid_info = []
    +                for light_path in grid_info['light_path']:
    +                    if Path(self.folder, light_path[0]).exists():
    +                        _grid_info.append((light_path))
    +                grid_info['light_path'] = _grid_info
    +                if not grid_info['light_path']:
    +                    # if light path is empty
    +                    grid_info['light_path'] = [['__static_apertures__']]
    +            else:
    +                # if light path key is nonexistent
    +                grid_info['light_path'] = [['__static_apertures__']]
    +        self._grids_info = grids_info
    +
    +    @property
    +    def sun_up_hours(self):
    +        """Return sun up hours."""
    +        return self._sun_up_hours
    +
    +    @sun_up_hours.setter
    +    def sun_up_hours(self, sun_up_hours):
    +        assert isinstance(sun_up_hours, list), \
    +            f'Sun up hours must be a list. Got object of type: {type(sun_up_hours)}'
    +        self._sun_up_hours = sun_up_hours
    +        self.sun_down_hours = np.setdiff1d(self.study_hours, sun_up_hours).tolist()
    +
    +    @property
    +    def sun_up_hours_mask(self):
    +        """Return sun up hours masking array."""
    +        return self._sun_up_hours_mask
    +
    +    @property
    +    def sun_down_hours(self):
    +        """Return sun down hours."""
    +        return self._sun_down_hours
    +
    +    @sun_down_hours.setter
    +    def sun_down_hours(self, sun_down_hours):
    +        assert isinstance(sun_down_hours, list), \
    +            f'Sun down hours must be a list. Got object of type: {type(sun_down_hours)}'
    +        self._sun_down_hours = sun_down_hours
    +
    +    @property
    +    def sun_down_hours_mask(self):
    +        """Return sun down hours masking array."""
    +        return self._sun_down_hours_mask
    +
    +    @property
    +    def datetimes(self):
    +        """Return DateTimes for sun up hours."""
    +        return self._datetimes
    +
    +    @property
    +    def light_paths(self):
    +        """Return the identifiers of the light paths."""
    +        return self._light_paths
    +
    +    @property
    +    def default_states(self):
    +        """Return default states as a dictionary."""
    +        return self._default_states
    +
    +    @property
    +    def grid_states(self):
    +        """Return grid states as a dictionary."""
    +        return self._grid_states
    +
    +    @property
    +    def timestep(self):
    +        """Return timestep as an integer."""
    +        return self._timestep
    +
    +    @property
    +    def study_hours(self):
    +        """Return study hours as a list."""
    +        return self._study_hours
    +
    +    def _get_light_paths(self) -> list:
    +        """Find all light paths in grids_info."""
    +        lp = []
    +        for grid_info in self.grids_info:
    +            try:
    +                light_paths = grid_info['light_path']
    +            except KeyError:
    +                grid_info['light_path'] = [['__static_apertures__']]
    +                light_paths = grid_info['light_path']
    +            for light_path in light_paths:
    +                light_path = light_path[0]
    +                if light_path in lp:
    +                    continue
    +                if light_path == '__static_apertures__':
    +                    lp.insert(0, light_path)
    +                else:
    +                    lp.append(light_path)
    +            if not light_paths and '__static_apertures__' not in lp:
    +                lp.insert(0, '__static_apertures__')
    +
    +        return lp
    +
    +    def _get_default_states(self) -> dict:
    +        """Set default state to 0 for all light paths."""
    +        default_states = {}
    +        for light_path in self.light_paths:
    +            default_states[light_path] = [0]
    +        return default_states
    +
    +    def _get_grid_states(self) -> dict:
    +        """Read grid_states.json if available."""
    +        info = Path(self.folder, 'grid_states.json')
    +        if info.is_file():
    +            with open(info) as data_f:
    +                data = json.load(data_f)
    +            return data
    +        else:
    +            # only static results
    +            return {}
    +
    +    def _get_study_info(self) -> Tuple[int, list]:
    +        """Read study info file."""
    +        study_info_file = Path(self.folder).joinpath('study_info.json')
    +        if study_info_file.exists():
    +            with open(study_info_file) as file:
    +                study_info = json.load(file)
    +            if study_info['timestep'] == 1:
    +                study_info['study_hours'] = \
    +                    list(map(int, study_info['study_hours']))
    +        else:
    +            study_info = {}
    +            study_info['timestep'] = 1
    +            study_info['study_hours'] = AnalysisPeriod().hoys
    +
    +        return study_info['timestep'], study_info['study_hours']
    +
    +    def _get_datetimes(self) -> List[DateTime]:
    +        """Get a list of DateTimes of the sun up hours."""
    +        datetimes = [
    +            DateTime.from_hoy(hoy) for hoy in list(map(float, self.sun_up_hours))
    +            ]
    +
    +        return datetimes
    +
    +    def _get_grids_info(self) -> List[dict]:
    +        """Get grids info from folder."""
    +        info = Path(self.folder, 'grids_info.json')
    +        with open(info) as data_f:
    +            grids = json.load(data_f)
    +
    +        return grids
    +
    +    def _get_sun_up_hours(self) -> List[float]:
    +        """Get sun up hours from folder."""
    +        suh_fp = Path(self.folder, 'sun-up-hours.txt')
    +        sun_up_hours = np.loadtxt(suh_fp, dtype=float).tolist()
    +        if self.timestep == 1:
    +            sun_up_hours = list(map(int, sun_up_hours))
    +
    +        return sun_up_hours
    +
    +    def _get_sun_up_hours_mask(self) -> List[int]:
    +        """Get a sun up hours masking array of the study hours."""
    +        sun_up_hours_mask = \
    +            np.where(np.isin(self.study_hours, self.sun_up_hours))[0]
    +
    +        return sun_up_hours_mask
    +
    +    def _get_sun_down_hours_mask(self) -> List[int]:
    +        """Get a sun down hours masking array of the study hours."""
    +        sun_down_hours_mask = \
    +            np.where(~np.isin(self.study_hours, self.sun_up_hours))[0]
    +
    +        return sun_down_hours_mask
    +
    +    def __repr__(self):
    +        return f'{self.__class__.__name__}: {self.folder}'
    +
    +
    +
    [docs]class Results(_ResultsFolder): + """Results class. + + Args: + folder: Path to results folder. + schedule: 8760 values as a list. Values must be either 0 or 1. Values of 1 + indicates occupied hours. If no schedule is provided a default schedule + will be used. (Default: None). + load_arrays: Set to True to load all NumPy arrays. If False the arrays will be + loaded only once they are needed. In both cases the loaded array(s) will be + stored in a dictionary under the arrays property. (Default: False). + + Properties: + * schedule + * occ_pattern + * total_occ + * sun_down_occ_hours + * occ_mask + * arrays + * valid_states + * datatype + * unit + """ + __slots__ = ('_schedule', '_occ_pattern', '_total_occ', '_sun_down_occ_hours', + '_occ_mask', '_arrays', '_valid_states', '_datatype', '_unit') + + def __init__(self, folder, datatype: DataTypeBase = None, + schedule: list = None, unit: str = None, + load_arrays: bool = False): + """Initialize Results.""" + _ResultsFolder.__init__(self, folder) + self.schedule = schedule + self._arrays = self._load_arrays() if load_arrays else {} + self._valid_states = self._get_valid_states() + self.datatype = datatype + self.unit = unit + + @property + def schedule(self): + """Return schedule.""" + return self._schedule + + @schedule.setter + def schedule(self, schedule): + self._schedule = schedule if schedule else \ + occupancy_schedule_8_to_6(timestep=self.timestep, as_list=True) + self._update_occ() + + @property + def occ_pattern(self): + """Return a filtered version of the annual schedule that only includes the + sun-up-hours.""" + return self._occ_pattern + + @property + def total_occ(self): + """Return an integer for the total occupied hours of the schedule.""" + return self._total_occ + + @property + def sun_down_occ_hours(self): + """Return an integer for the number of occupied hours where the sun is down and + there's no possibility of being daylit or experiencing glare.""" + return self._sun_down_occ_hours + + @property + def occ_mask(self): + """Return an occupancy mask as a NumPy array that can be used to mask the + results.""" + return self._occ_mask + + @property + def arrays(self): + """Return a dictionary of all the NumPy arrays that have been loaded.""" + return self._arrays + + @arrays.setter + def arrays(self, value): + self._arrays = value + + @property + def valid_states(self): + """Return a dictionary with valid states. Each light path is represented by a + key-value pair where the light path identifier is the key and the value is a list + of valid states, e.g., [0, 1, 2, ...].""" + return self._valid_states + + @property + def datatype(self): + """Return a Ladybug DataType object.""" + return self._datatype + + @datatype.setter + def datatype(self, value): + if value is not None: + assert isinstance(value, DataTypeBase), \ + f'data_type must be a Ladybug DataType. Got {type(value)}' + else: + value = GenericType('Generic', '') + self._datatype = value + + @property + def unit(self): + """Return unit of hourly values.""" + return self._unit + + @unit.setter + def unit(self, value): + self._unit = value + +
    [docs] def total( + self, hoys: list = [], states: DynamicSchedule = None, + grids_filter: str = '*', res_type: str = 'total' + ) -> type_hints.total: + """Get summed values for each sensor. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with total values and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + mask = hoys_mask(self.sun_up_hours, hoys) + + total = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type=res_type) + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask + ) + array_total = array_filter.sum(axis=1) + else: + array_total = np.zeros(grid_info['count']) + total.append(array_total) + + return total, grids_info
    + +
    [docs] def point_in_time( + self, datetime: Union[float, DateTime], states: DynamicSchedule = None, + grids_filter: str = '*', res_type: str = 'total' + ) -> type_hints.point_in_time: + """Get point in time values. + + Args: + datetime: Hour of the year as a float or DateTime object. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with point in time values and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + if isinstance(datetime, float): + dt = DateTime.from_hoy(datetime) + elif isinstance(datetime, DateTime): + dt = datetime + else: + error_message = ( + f'Input datetime must be of type {int} or {DateTime}. ' + f'Received {type(DateTime)}.' + ) + raise ValueError(error_message) + + idx = self._index_from_datetime(dt) + + pit_values = [] + for grid_info in grids_info: + if idx: + array = self._array_from_states( + grid_info, states=states, res_type=res_type) + pit_values.append(array[:, idx]) + else: + # datetime not in sun up hours, add zeros + pit_values.append(np.zeros(grid_info['count'])) + + return pit_values, grids_info
    + +
    [docs] def point_in_time_to_folder( + self, target_folder: str, datetime: Union[float, DateTime], + states: DynamicSchedule = None, grids_filter: str = '*', + res_type: str = 'total' + ) -> type_hints.point_in_time: + """Get point in time values and write the values to a folder. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + datetime: Hour of the year as a float or DateTime object. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with point in time values and grid information. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + pit_values, grids_info = self.point_in_time( + datetime=datetime, states=states, + grids_filter=grids_filter, res_type=res_type) + + metric_folder = folder.joinpath('point_in_time') + + for count, grid_info in enumerate(grids_info): + d = pit_values[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.pit') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + info_file = metric_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info)) + + return pit_values, grids_info
    + +
    [docs] def average_values( + self, hoys: list = [], states: DynamicSchedule = None, grids_filter: str = '*', + res_type: str = 'total') -> type_hints.average_values: + """Get average values for each sensor over a given period. + + The hoys input can be used to filter the data for a particular time + period. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with the average value for each sensor and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + full_length = len(self.study_hours) if len(hoys) == 0 else len(hoys) + mask = hoys_mask(self.sun_up_hours, hoys) + + average_values = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type=res_type) + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask) + results = average_values_array2d( + array_filter, full_length) + else: + results = np.zeros(grid_info['count']) + average_values.append(results) + + return average_values, grids_info
    + +
    [docs] def average_values_to_folder( + self, target_folder: str, hoys: list = [], states: DynamicSchedule = None, + grids_filter: str = '*', res_type: str = 'total'): + """Get average values for each sensor over a given period and write the + values to a folder. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + average_values, grids_info = self.average_values( + hoys=hoys, states=states, + grids_filter=grids_filter, res_type=res_type) + + metric_folder = folder.joinpath('average_values') + + for count, grid_info in enumerate(grids_info): + d = average_values[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.average') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + info_file = metric_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + +
    [docs] def median_values( + self, hoys: list = [], states: dict = None, grids_filter: str = '*', + res_type: str = 'total') -> type_hints.median_values: + """Get median values for each sensor over a given period. + + The hoys input can be used to filter the data for a particular time + period. If hoys is left empty the median values will likely be 0 since + there are likely more sun down hours than sun up hours. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with the median value for each sensor and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + mask = hoys_mask(self.sun_up_hours, hoys) + + median_values = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type=res_type) + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask) + if not hoys: + # concatenate zero array + zero_array = \ + np.zeros((grid_info['count'], len(self.sun_down_hours))) + array_filter = np.concatenate((array_filter, zero_array), axis=1) + else: + # find number of hoys that are sun down hours + sdh_hoys = \ + len(set(self.sun_down_hours).intersection(hoys)) + if sdh_hoys != 0: + # concatenate zero array + zero_array = np.zeros((grid_info['count'], sdh_hoys)) + array_filter = \ + np.concatenate((array_filter, zero_array), axis=1) + results = np.median(array_filter, axis=1) + else: + results = np.zeros(grid_info['count']) + median_values.append(results) + + return median_values, grids_info
    + +
    [docs] def median_values_to_folder( + self, target_folder: str, hoys: list = [], states: dict = None, + grids_filter: str = '*', res_type: str = 'total'): + """Get median values for each sensor over a given period and write the + values to a folder. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + median_values, grids_info = self.median_values( + hoys=hoys, states=states, + grids_filter=grids_filter, res_type=res_type) + + metric_folder = folder.joinpath('median_values') + + for count, grid_info in enumerate(grids_info): + d = median_values[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.median') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + info_file = metric_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + +
    [docs] def cumulative_values( + self, hoys: list = [], states: DynamicSchedule = None, + t_step_multiplier: float = 1, grids_filter: str = '*', + res_type: str = 'total') -> type_hints.cumulative_values: + """Get cumulative values for each sensor over a given period. + + The hoys input can be used to filter the data for a particular time + period. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + t_step_multiplier: A value that will be multiplied with the timestep. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with the cumulative value for each sensor and grid + information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + mask = hoys_mask(self.sun_up_hours, hoys) + + cumulative_values = [] + for grid_info in grids_info: + array = self._array_from_states(grid_info, states=states, res_type=res_type) + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask) + results = cumulative_values_array2d( + array_filter, self.timestep, t_step_multiplier) + else: + results = np.zeros(grid_info['count']) + cumulative_values.append(results) + + return cumulative_values, grids_info
    + +
    [docs] def cumulative_values_to_folder( + self, target_folder: str, hoys: list = [], + states: DynamicSchedule = None, t_step_multiplier: float = 1, + grids_filter: str = '*', res_type: str = 'total'): + """Get cumulative values for each sensor over a given period and write + the values to a folder. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + t_step_multiplier: A value that will be multiplied with the timestep. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + res_type: Type of results to load. Defaults to 'total'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + cumulative_values, grids_info = self.cumulative_values( + hoys=hoys, states=states, t_step_multiplier=t_step_multiplier, + grids_filter=grids_filter, res_type=res_type + ) + + metric_folder = folder.joinpath('cumulative_values') + + for count, grid_info in enumerate(grids_info): + d = cumulative_values[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.cumulative') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + info_file = metric_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + +
    [docs] def peak_values( + self, hoys: list = [], states: DynamicSchedule = None, grids_filter: str = '*', + coincident: bool = False, res_type: str = 'total' + ) -> type_hints.peak_values: + """Get peak values for each sensor over a given period. + + The hoys input can be used to filter the data for a particular time + period. + + Args: + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + coincident: Boolean to indicate whether output values represent the peak + value for each sensor throughout the entire analysis (False) or they + represent the highest overall value across each sensor grid at a + particular timestep (True). Defaults to False. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with the peak value for each sensor and grid information. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + mask = hoys_mask(self.sun_up_hours, hoys) + filt_suh = hoys if len(hoys) != 0 else self.sun_up_hours + + peak_values = [] + max_hoys = [] + for grid_info in grids_info: + max_i = None + array = self._array_from_states(grid_info, states=states, res_type=res_type) + if np.any(array): + array_filter = np.apply_along_axis( + filter_array, 1, array, mask=mask) + results, max_i = peak_values_array2d( + array_filter, coincident=coincident) + else: + results = np.zeros(grid_info['count']) + peak_values.append(results) + if max_i: + max_hoys.append(filt_suh[max_i]) + else: + max_hoys.append(None) + + return peak_values, max_hoys, grids_info
    + +
    [docs] def peak_values_to_folder( + self, target_folder: str, hoys: list = [], states: DynamicSchedule = None, + grids_filter: str = '*', coincident: bool = False, res_type='total'): + """Get peak values for each sensor over a given period and write the + values to a folder. + + Args: + target_folder: Folder path to write peak values in. Usually this + folder is called 'metrics'. + hoys: An optional numbers or list of numbers to select the hours of + the year (HOYs) for which results will be computed. Defaults to []. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + coincident: Boolean to indicate whether output values represent the peak + value for each sensor throughout the entire analysis (False) or they + represent the highest overall value across each sensor grid at a + particular timestep (True). Defaults to False. + res_type: Type of results to load. Defaults to 'total'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + peak_values, max_hoys, grids_info = self.peak_values( + hoys=hoys, states=states, grids_filter=grids_filter, + coincident=coincident, res_type=res_type) + + metric_folder = folder.joinpath('peak_values') + + for count, grid_info in enumerate(grids_info): + d = peak_values[count] + full_id = grid_info['full_id'] + output_file = metric_folder.joinpath(f'{full_id}.peak') + output_file.parent.mkdir(parents=True, exist_ok=True) + np.savetxt(output_file, d, fmt='%.2f') + + max_hoys_file = metric_folder.joinpath('max_hoys.txt') + max_hoys_file.write_text('\n'.join(str(h) for h in max_hoys)) + + info_file = metric_folder.joinpath('grids_info.json') + info_file.write_text(json.dumps(grids_info))
    + + def _array_to_annual_data( + self, grid_info, states: DynamicSchedule = None, + sensor_index: list = None, res_type: str = 'total' + ) -> Tuple[List[HourlyContinuousCollection], dict, list]: + """Get annual data for one or multiple sensors. + + Args: + grid_info: Grid information of the grid. + states: A dictionary of states. Defaults to None. + sensor_index: A list of sensor indices as integers. Defaults to None. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with Data Collections for each sensor, grid information, + and a list of the sensors. + """ + analysis_period = AnalysisPeriod(timestep=self.timestep) + + # if no sensor_index, create list with all sensors + if not sensor_index: + sensor_index = [range(grid_info['count'])] + + data_collections = [] + array = self._array_from_states(grid_info, states=states, res_type=res_type) + for idx in sensor_index: + if np.any(array): + values = array[idx, :] + else: + values = np.zeros(len(self.sun_up_hours)) + annual_array = Results.values_to_annual( + self.sun_up_hours, values, self.timestep, self.study_hours) + header = Header(self.datatype, self.unit, analysis_period) + header.metadata['sensor grid'] = grid_info['full_id'] + header.metadata['sensor index'] = idx + data_collections.append( + HourlyContinuousCollection(header, annual_array.tolist())) + + return data_collections, grid_info, sensor_index + +
    [docs] def annual_data( + self, states: DynamicSchedule = None, grids_filter: str = '*', + sensor_index: dict = None, res_type: str = 'total' + ) -> type_hints.annual_data: + """Get annual data for one or multiple sensors. + + Args: + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + sensor_index: A dictionary with grids as keys and a list of sensor + indices as values. Defaults to None. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + Tuple: A tuple with Data Collections for each sensor, grid information, + and a dictionary of the sensors. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + analysis_period = AnalysisPeriod(timestep=self.timestep) + + # if no sensor_index, create dict with all sensors + if not sensor_index: + sensor_index = {} + for grid_info in grids_info: + sensor_index[grid_info['full_id']] = \ + [i for i in range(grid_info['count'])] + + data_collections = [] + for grid_info in grids_info: + data_collections_grid = [] + grid_id = grid_info['full_id'] + array = self._array_from_states(grid_info, states=states, res_type=res_type) + indices = sensor_index[grid_id] + for idx in indices: + if np.any(array): + values = array[idx, :] + else: + values = np.zeros(len(self.sun_up_hours)) + annual_array = Results.values_to_annual( + self.sun_up_hours, values, self.timestep, self.study_hours) + header = Header(self.datatype, self.unit, analysis_period) + header.metadata['sensor grid'] = grid_id + header.metadata['sensor index'] = idx + data_collections_grid.append( + HourlyContinuousCollection(header, annual_array.tolist())) + data_collections.append(data_collections_grid) + + return data_collections, grids_info, sensor_index
    + +
    [docs] def annual_data_to_folder( + self, target_folder: str, states: DynamicSchedule = None, grids_filter: str = '*', + sensor_index: dict = None, res_type: str = 'total'): + """Get annual data for one or multiple sensors and write the data to a + folder as Data Collections. + + Args: + target_folder: Folder path to write annual metrics in. Usually this + folder is called 'metrics'. + states: A dictionary of states. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + sensor_index: A dictionary with grids as keys and a list of sensor + indices as values. Defaults to None. + res_type: Type of results to load. Defaults to 'total'. + """ + folder = Path(target_folder) + folder.mkdir(parents=True, exist_ok=True) + + data_collections, grids_info, sensor_index = self.annual_data( + states=states, grids_filter=grids_filter, sensor_index=sensor_index, + res_type=res_type) + + metric_folder = folder.joinpath('datacollections') + + for count, grid_info in enumerate(grids_info): + grid_collections = data_collections[count] + for data_collection in grid_collections: + grid_id = grid_info['full_id'] + sensor_id = data_collection.header.metadata['sensor index'] + data_dict = data_collection.to_dict() + data_file = metric_folder.joinpath(f'{grid_id}_{sensor_id}.json') + data_file.parent.mkdir(parents=True, exist_ok=True) + data_file.write_text(json.dumps(data_dict))
    + +
    [docs] @staticmethod + def values_to_annual( + hours: Union[List[float], np.ndarray], + values: Union[List[float], np.ndarray], + timestep: int, study_hours: list, base_value: int = 0) -> np.ndarray: + """Map a 1D NumPy array based on a set of hours to an annual array. + + This method creates an array with a base value of length 8760 and + replaces the base value with the input 'values' at the indices of the + input 'hours'. + + Args: + hours: A list of hours. This can be a regular list or a 1D NumPy + array. + values: A list of values to map to an annual array. This can be a + regular list or a 1D NumPy array. + timestep: Time step of the simulation. + study_hours: Study hours of the simulation. + base_value: A value that will be applied for all the base array. + + Returns: + A 1D NumPy array. + """ + values = np.array(values) + check_array_dim(values, 1) + hours = np.array(hours) + assert hours.shape == values.shape + full_ap = AnalysisPeriod(timestep=timestep) + indices = np.where(np.isin(full_ap.hoys, hours))[0] + annual_array = np.repeat(base_value, 8760 * timestep).astype(np.float32) + annual_array[indices] = values + + return annual_array
    + + def _index_from_datetime(self, datetime: DateTime) -> Union[int, None]: + """Returns the index of the input datetime in the list of datetimes + from the datetimes property. + + If the DateTime is not in the list, the function will return None. + + Args: + datetime: A DateTime object. + + Returns: + Index as an integer or None. + """ + assert isinstance(datetime, DateTime), \ + f'Expected DateTime object but received {type(datetime)}' + try: + index = self.datetimes.index(datetime) + except Exception: + # DateTime not in sun up hours + index = None + + return index + + def _get_array( + self, grid_info: dict, light_path: str, state: int = 0, + res_type: str = 'total', extension: str = '.npy') -> np.ndarray: + """Get an array for a given grid, light path, and state. + + The array will be fetched from the 'arrays' property if it has been + loaded already. + + Args: + grid_info: Grid information. + light_path: Identifier of the light path. + state: State as an integer. E.g., 0 for the default state. + Defaults to 0. + res_type: Type of results to load. Defaults to 'total'. + extension: File extension of the array to load. Defaults to '.npy'. + + Returns: + np.ndarray: A NumPy array of a given grid, light path, and state. + """ + grid_id = grid_info['full_id'] + + state_identifier = self._state_identifier(grid_id, light_path, state=state) + + try: + array = self.arrays[grid_id][light_path][state_identifier][res_type] + except Exception: + array = self._load_array( + grid_info, light_path, state=state, res_type=res_type, + extension=extension + ) + + return array + + def _load_array( + self, grid_info: dict, light_path: str, state: int = 0, + res_type: str = 'total', extension: str = '.npy') -> np.ndarray: + """Load a NumPy file to an array. + + This method will also update the arrays property value. + + Args: + grid_info: Grid information. + light_path: Identifier of the light path. + state: State as an integer. E.g., 0 for the default state. + Defaults to 0. + res_type: Which type of result to return a file for. E.g., 'total' for total + illuminance or 'direct' for direct illuminance. + extension: File extension of the array to load. Defaults to '.npy'. + + Returns: + np.ndarray: A NumPy array of a given grid, light path, and state + from a NumPy file. + """ + grid_id = grid_info['full_id'] + + def merge_dicts(array_dict, arrays): + for key, value in array_dict.items(): + if isinstance(value, dict): + node = arrays.setdefault(key, {}) + merge_dicts(value, node) + else: + arrays[key] = value + return arrays + + state_identifier = self._state_identifier(grid_id, light_path, state=state) + file = self._get_file(grid_id, light_path, state_identifier, res_type, + extension=extension) + array = np.load(file) + + array_dict = {grid_id: {light_path: {state_identifier: {res_type: array}}}} + arrays = merge_dicts(array_dict, self.arrays) + self.arrays = arrays + + return array + + def _state_identifier( + self, grid_id: str, light_path: str, state: int = 0) -> Union[str, None]: + """Get the state identifier from a light path and state integer. + + Args: + grid_id: Grid identifier. + light_path: Identifier of the light path. + state: State as an integer. E.g., 0 for the default state. + Defaults to 0. + + Returns: + State identifier. For static apertures the identifier is 'default', + and for other light paths it is the light path identifier preceded + by the state integer, e.g., '0_light_path'. If the state is -1 the + state identifier will be None. + """ + # TODO: Figure out if there is a better way to handle the states. + # I.e., state integer <--> state identifier. + valid_states = self.valid_states[light_path] + if state in valid_states: + if light_path == '__static_apertures__': + state_identifier = 'default' + else: + state_identifier = self.grid_states[grid_id][light_path][state] + return state_identifier + elif state == -1: + return None + else: + error_message = ( + f'State of {light_path} must be any of {valid_states} for on ' + f'or -1 for off. Received state {state}.' + ) + raise ValueError(error_message) + + def _get_file( + self, grid_id: str, light_path: str, state_identifier: str, + res_type: str = 'total', extension: str = '.npy') -> Path: + """Return the path of a results file. + + Args: + grid_id: Grid identifier. + light_path: Identifier of the light path. + state_identifier: State identifier. + res_type: Which type of result to return a file for. E.g., 'total' for total + illuminance or 'direct' for direct illuminance. + extension: File extension of the array to load. Defaults to '.npy'. + + Returns: + Path to a NumPy file. + """ + file = Path(self.folder, light_path, state_identifier, + res_type, grid_id + extension) + if not file.is_file(): + raise FileNotFoundError(f'File {file} not found in the results folder.') + + return file + + def _validate_dynamic_states(self, states: dict) -> dict: + """Validate dynamic states and return states dictionary. + + If all light paths in the dictionary have 8760 values, the states + dictionary is returned as is. If some light paths have less than 8760 + values, pattern of values will be repeated until it reaches a length of + 8760. + + Args: + states: A dictionary of states. + + Returns: + dict: A dictionary of states. + """ + if all(len(values) == 8760 for values in states.values()): + return states + for light_path, values in states.items(): + if len(values) < 8760: + states[light_path] = list(islice(cycle(values), 8760)) + elif len(values) > 8760: + error_message = ( + f'The light path {light_path} has {len(values)} values in ' + f'its states schedule. Maximum allowed number of values ' + f'is 8760.' + ) + raise ValueError(error_message) + + return states + + def _validate_states(self, states: dict) -> dict: + """Validate states and return states dictionary. + + If all light paths in the dictionary have integers only as values, the + states dictionary is returned as is. If some light paths have values + that are not integers, these values will be mapped as integers if + possible, e.g., if the values are strings ('0', '1', etc.) instead of + integers. + + Args: + states: A dictionary of states. + + Returns: + dict: A dictionary of states. + """ + if all(isinstance(v, int) for values in states.values() for v in values): + return states + for light_path, values in states.items(): + try: + states[light_path] = list(map(int, values)) + except ValueError as err: + error_message = ( + f'Failed to convert states schedule for light path ' + f'{light_path} to integers.' + ) + raise ValueError(error_message) from err + + return states + + def _filter_grid_states(self, grid_info, states: DynamicSchedule = None) -> DynamicSchedule: + """Filter a dictionary of states by grid. Only light paths relevant to + the given grid will be returned. + + Args: + grid_info: Grid information. + states: A dictionary of states. Light paths as keys and lists of + 8760 values for each key. The values should be integers + matching the states or -1 for off. Default to None. + + Returns: + dict: A filtered states dictionary. + """ + light_paths = [lp[0] for lp in grid_info['light_path']] + if states: + states = states.filter_by_identifiers(light_paths) + else: + default_states = self.default_states + states = DynamicSchedule() + for light_path in light_paths: + ap_group_schedule = ApertureGroupSchedule( + light_path, default_states[light_path], is_static=True) + states.add_aperture_group_schedule(ap_group_schedule) + + return states + + def _array_from_states( + self, grid_info, states: DynamicSchedule = None, + res_type: str = 'total', zero_array: bool = False + ) -> np.ndarray: + """Create an array for a given grid by the states settings. + + Args: + grid_info: Grid information of the grid. + states: A dictionary of states. Light paths as keys and lists of 8760 values + for each key. The values should be integers matching the states or -1 for + off. + res_type: Which type of result to create an array for. E.g., 'total' + for total illuminance or 'direct' for direct illuminance. + zero_array: Boolean to note if a 2D zero array should be created if + the array of the grid is zero. This is the case if the + illuminance of the grid is zero. (Default: False). + + Returns: + A NumPy array based on the states settings. + """ + grid_count = grid_info['count'] + # get states that are relevant for the grid + states = self._filter_grid_states(grid_info, states=states) + + arrays = [] + for light_path, gr_schedule in states.dynamic_schedule.items(): + if gr_schedule.is_static: + state = gr_schedule.schedule[0] + if state == -1: + continue + array = self._get_array( + grid_info, light_path, state=state, res_type=res_type) + arrays.append(array) + else: + # create default 0 array + array = np.zeros((grid_count, len(self.sun_up_hours))) + # slice states to match sun up hours + states_array = np.array(gr_schedule.schedule)[list(map(int, self.sun_up_hours))] + for state in set(states_array.tolist()): + if state == -1: + continue + _array = self._get_array( + grid_info, light_path, state=state, res_type=res_type) + conds = [states_array == state, states_array != state] + array = np.select(conds, [_array, array]) + arrays.append(array) + array = sum(arrays) + + if not np.any(array): + if zero_array: + array = np.zeros((grid_count, len(self.sun_up_hours))) + else: + array = np.array([]) + + return array + + def _update_occ(self): + """Set properties related to occupancy.""" + occ_mask = np.array(self.schedule, dtype=int)[self.sun_up_hours_mask] + sun_down_sch = \ + np.array(self.schedule, dtype=int)[self.sun_down_hours_mask].sum() + + self._occ_mask = occ_mask + self._total_occ = sum(self.schedule) + self._sun_down_occ_hours = sun_down_sch + + def _filter_grids(self, grids_filter: str = '*') -> list: + """Return grids information. + + Args: + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + + Returns: + list: List of grid information for filtered grids. + """ + if grids_filter != '*': + grids_info = \ + _filter_grids_by_pattern(self.grids_info, grids_filter) + else: + grids_info = self.grids_info + + return grids_info + + def _load_arrays(self) -> dict: + """Load all the NumPy arrays in the results folder.""" + arrays = {} + grids_info = self.grids_info + + for grid_info in grids_info: + grid_id = grid_info['full_id'] + light_paths = grid_info['light_path'] + arrays[grid_id] = {} + for light_path in light_paths: + light_path = light_path[0] + arrays[grid_id][light_path] = {} + light_path_folder = Path(self.folder, light_path) + for state_folder in Path(light_path_folder).iterdir(): + state = state_folder.name + arrays[grid_id][light_path][state] = {} + for res_type_folder in Path(state_folder).iterdir(): + res_type = res_type_folder.name + file = Path(res_type_folder, grid_id + '.npy') + array = np.load(file) + arrays[grid_id][light_path][state][res_type] = array + + return arrays + + def _get_valid_states(self) -> dict: + """Returns a dictionary with valid states for each light path. + + For each light path there will be a key (identifier of the light path) + and its value will be a list of valid states as integers. + + Example of output format: + { + '__static_apertures__': [0], + 'Room1_North': [0, 1], + 'Room1_South': [0, 1], + 'Room2_North1': [0, 1], + 'Room2_North2': [0, 1] + } + + Returns: + dict: Valid states integers for each light path. + """ + valid_states = {} + grid_states = self.grid_states + if '__static_apertures__' in self.light_paths: + valid_states['__static_apertures__'] = [0] + for light_paths in grid_states.values(): + for light_path, states in light_paths.items(): + if light_path not in valid_states: + valid_states[light_path] = list(range(len(states))) + + return valid_states
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/honeybee_radiance_postprocess/util.html b/docs/_modules/honeybee_radiance_postprocess/util.html new file mode 100644 index 00000000..96ce5f1e --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/util.html @@ -0,0 +1,719 @@ + + + + + + + honeybee_radiance_postprocess.util — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +

    Source code for honeybee_radiance_postprocess.util

    +"""Post-processing utility functions."""
    +from typing import Tuple
    +import numpy as np
    +
    +from honeybee_radiance.writer import _filter_by_pattern
    +
    +
    +
    [docs]def binary_mtx_dimension(filepath: str) -> Tuple[int, int, int, int]: + """Return binary Radiance matrix dimensions if exist. + + This function returns NROWS, NCOLS, NCOMP and number of header lines including the + white line after last header line. + + Args: + filepath: Full path to Radiance file. + + Returns: + nrows, ncols, ncomp, line_count + """ + try: + inf = open(filepath, 'rb', encoding='utf-8') + except Exception: + inf = open(filepath, 'rb') + try: + first_line = next(inf).rstrip().decode('utf-8') + if first_line[:10] != '#?RADIANCE': + error_message = ( + f'File with Radiance header must start with #?RADIANCE not ' + f'{first_line}.' + ) + raise ValueError(error_message) + + header_lines = [first_line] + nrows = ncols = ncomp = None + for line in inf: + line = line.rstrip().decode('utf-8') + header_lines.append(line) + if line[:6] == 'NROWS=': + nrows = int(line.split('=')[-1]) + if line[:6] == 'NCOLS=': + ncols = int(line.split('=')[-1]) + if line[:6] == 'NCOMP=': + ncomp = int(line.split('=')[-1]) + if line[:7] == 'FORMAT=': + break + + if not nrows or not ncols: + error_message = ( + f'NROWS or NCOLS was not found in the Radiance header. NROWS ' + f'is {nrows} and NCOLS is {ncols}. The header must have both ' + f'elements.' + ) + raise ValueError(error_message) + return nrows, ncols, ncomp, len(header_lines) + 1 + finally: + inf.close()
    + + +
    [docs]def check_array_dim(array: np.ndarray, dim: int): + """Check NumPy array dimension. + + Args: + array: A NumPy array. + dim: The dimension to check against. + """ + assert array.ndim == dim, \ + f'Expected {dim}-dimensional array. Dimension of array is {array.ndim}'
    + + +
    [docs]def filter_array(array: np.ndarray, mask: np.ndarray) -> np.ndarray: + """Filter a NumPy array by a masking array. The array will be passed as is + if the mask is None. + + Args: + array: A NumPy array to filter. + mask: A NumPy array of ones/zeros or True/False. + + Returns: + A filtered NumPy array. + """ + if mask is not None: + return array[mask.astype(bool)] + return array
    + + +
    [docs]def hoys_mask(sun_up_hours: list, hoys: list) -> np.ndarray: + """Create a NumPy masking array from a list of hoys. + + Args: + sun_up_hours: A list of sun up hours. + hoys: A list hoys to select. + + Returns: + A NumPy array of booleans. + """ + if len(hoys) != 0: + hoys_mask = np.where(np.isin(sun_up_hours, hoys), True, False) + return hoys_mask
    + + +
    [docs]def array_memory_size( + sensors: int, sun_up_hours: int, ncomp: int = None, + dtype: np.dtype = np.float32, gigabyte: bool = True) -> float: + """Calculate the memory size of an array before creating or loading an + array. + + Args: + sensors: Number of sensors in the array. + sun_up_hours: Number of sun up hours in the array. + ncomp: Optional number of components for each element in the array, + e.g., if the data is in RGB format then this value must be set + to 3. Defaults to None. + dtype: The data type of the array. Defaults to np.float32. + gigabyte: Boolean toggle to output the memory size in gigabytes. + Defaults to True. + + Returns: + float: The memory size of an array. + """ + # check if dtype is valid + dtypes = tuple(np.sctypes['float']) + if not isinstance(dtype, dtypes): + try: + dtype = dtype() + except TypeError as err: + error_message = ( + f'Unable to instantiate input dtype. Expected any of the ' + f'following: {dtypes}. Received: {type(dtype)}.' + ) + raise TypeError(error_message) from err + + # calculate memory size + size = sensors * sun_up_hours * dtype.itemsize + if ncomp: + size *= ncomp + if gigabyte: + size /= (1024 ** 3) + + return size
    + + +
    [docs]def recursive_dict_merge(dict_1: dict, dict_2: dict): + """Recursive merging of two dictionaries. + + Args: + dict_1: Original dictionary. + dict_2: Dictionary to merge with dict_1. + """ + for k in dict_2: + if (k in dict_1 and isinstance(dict_1[k], dict) and + isinstance(dict_2[k], dict)): + recursive_dict_merge(dict_1[k], dict_2[k]) + else: + dict_1[k] = dict_2[k]
    + + +def _filter_grids_by_pattern(grids_info, filter_pattern): + """Filter grids_info by a pattern. + + Args: + grids_info: Grid information. + filter_pattern: Pattern to filter grids by. + + Returns: + A list of filtered grids. + """ + grids = _filter_by_pattern(grids_info, filter=filter_pattern) + + return grids +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_modules/index.html b/docs/_modules/index.html new file mode 100644 index 00000000..4125d5bc --- /dev/null +++ b/docs/_modules/index.html @@ -0,0 +1,565 @@ + + + + + + + Overview: module code — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    + Back to top + +

    +

    + © Copyright 2023, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

    +
    +
    + + \ No newline at end of file diff --git a/docs/_sources/cli/grid.rst.txt b/docs/_sources/cli/grid.rst.txt new file mode 100644 index 00000000..14041523 --- /dev/null +++ b/docs/_sources/cli/grid.rst.txt @@ -0,0 +1,6 @@ +grid +==== + +.. click:: honeybee_radiance_postprocess.cli.grid:grid + :prog: honeybee-radiance-postprocess grid + :show-nested: diff --git a/docs/_sources/cli/index.rst.txt b/docs/_sources/cli/index.rst.txt new file mode 100644 index 00000000..b4a39769 --- /dev/null +++ b/docs/_sources/cli/index.rst.txt @@ -0,0 +1,17 @@ +CLI +=== + + +Commands +-------- +.. toctree:: + :maxdepth: 1 + + main + leed + two_phase + grid + postprocess + schedule + mtxop + translate diff --git a/docs/_sources/cli/leed.rst.txt b/docs/_sources/cli/leed.rst.txt new file mode 100644 index 00000000..f4c2e110 --- /dev/null +++ b/docs/_sources/cli/leed.rst.txt @@ -0,0 +1,6 @@ +leed +==== + +.. click:: honeybee_radiance_postprocess.cli.leed:leed + :prog: honeybee-radiance-postprocess leed + :show-nested: diff --git a/docs/_sources/cli/main.rst.txt b/docs/_sources/cli/main.rst.txt new file mode 100644 index 00000000..539de0d7 --- /dev/null +++ b/docs/_sources/cli/main.rst.txt @@ -0,0 +1,7 @@ +main +==== + +.. click:: honeybee_radiance_postprocess.cli.__init__:postprocess + :prog: honeybee-radiance-postprocess + :show-nested: + :commands: diff --git a/docs/_sources/cli/mtxop.rst.txt b/docs/_sources/cli/mtxop.rst.txt new file mode 100644 index 00000000..a7e94b82 --- /dev/null +++ b/docs/_sources/cli/mtxop.rst.txt @@ -0,0 +1,6 @@ +mtxop +===== + +.. click:: honeybee_radiance_postprocess.cli.mtxop:mtxop + :prog: honeybee-radiance-postprocess mtxop + :show-nested: diff --git a/docs/_sources/cli/postprocess.rst.txt b/docs/_sources/cli/postprocess.rst.txt new file mode 100644 index 00000000..69cbfeb9 --- /dev/null +++ b/docs/_sources/cli/postprocess.rst.txt @@ -0,0 +1,6 @@ +postprocess +=========== + +.. click:: honeybee_radiance_postprocess.cli.postprocess:post_process + :prog: honeybee-radiance-postprocess post-process + :show-nested: diff --git a/docs/_sources/cli/schedule.rst.txt b/docs/_sources/cli/schedule.rst.txt new file mode 100644 index 00000000..51bcc163 --- /dev/null +++ b/docs/_sources/cli/schedule.rst.txt @@ -0,0 +1,6 @@ +schedule +======== + +.. click:: honeybee_radiance_postprocess.cli.schedule:schedule + :prog: honeybee-radiance-postprocess schedule + :show-nested: diff --git a/docs/_sources/cli/translate.rst.txt b/docs/_sources/cli/translate.rst.txt new file mode 100644 index 00000000..744adc85 --- /dev/null +++ b/docs/_sources/cli/translate.rst.txt @@ -0,0 +1,6 @@ +translate +========= + +.. click:: honeybee_radiance_postprocess.cli.translate:translate + :prog: honeybee-radiance-postprocess translate + :show-nested: diff --git a/docs/_sources/cli/two_phase.rst.txt b/docs/_sources/cli/two_phase.rst.txt new file mode 100644 index 00000000..8752f601 --- /dev/null +++ b/docs/_sources/cli/two_phase.rst.txt @@ -0,0 +1,6 @@ +two_phase +========= + +.. click:: honeybee_radiance_postprocess.cli.two_phase:two_phase + :prog: honeybee-radiance-postprocess two_phase + :show-nested: diff --git a/docs/_sources/honeybee_radiance_postprocess.annual.rst.txt b/docs/_sources/honeybee_radiance_postprocess.annual.rst.txt new file mode 100644 index 00000000..1470f683 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.annual.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.annual module +============================================= + +.. automodule:: honeybee_radiance_postprocess.annual + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.annualdaylight.rst.txt b/docs/_sources/honeybee_radiance_postprocess.annualdaylight.rst.txt new file mode 100644 index 00000000..f9465aa8 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.annualdaylight.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.annualdaylight module +===================================================== + +.. automodule:: honeybee_radiance_postprocess.annualdaylight + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.annualirradiance.rst.txt b/docs/_sources/honeybee_radiance_postprocess.annualirradiance.rst.txt new file mode 100644 index 00000000..b2867798 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.annualirradiance.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.annualirradiance module +======================================================= + +.. automodule:: honeybee_radiance_postprocess.annualirradiance + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.grid.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.grid.rst.txt new file mode 100644 index 00000000..e9917eba --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.grid.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.grid module +=============================================== + +.. automodule:: honeybee_radiance_postprocess.cli.grid + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.leed.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.leed.rst.txt new file mode 100644 index 00000000..caff78ce --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.leed.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.leed module +=============================================== + +.. automodule:: honeybee_radiance_postprocess.cli.leed + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.mtxop.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.mtxop.rst.txt new file mode 100644 index 00000000..31dcf2c8 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.mtxop.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.mtxop module +================================================ + +.. automodule:: honeybee_radiance_postprocess.cli.mtxop + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.postprocess.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.postprocess.rst.txt new file mode 100644 index 00000000..8d3d9951 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.postprocess.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.postprocess module +====================================================== + +.. automodule:: honeybee_radiance_postprocess.cli.postprocess + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.rst.txt new file mode 100644 index 00000000..6d9a3f88 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.rst.txt @@ -0,0 +1,25 @@ +honeybee\_radiance\_postprocess.cli package +=========================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.cli.grid + honeybee_radiance_postprocess.cli.leed + honeybee_radiance_postprocess.cli.mtxop + honeybee_radiance_postprocess.cli.postprocess + honeybee_radiance_postprocess.cli.schedule + honeybee_radiance_postprocess.cli.translate + honeybee_radiance_postprocess.cli.two_phase + honeybee_radiance_postprocess.cli.util + +Module contents +--------------- + +.. automodule:: honeybee_radiance_postprocess.cli + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.schedule.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.schedule.rst.txt new file mode 100644 index 00000000..c36848bb --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.schedule.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.schedule module +=================================================== + +.. automodule:: honeybee_radiance_postprocess.cli.schedule + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.translate.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.translate.rst.txt new file mode 100644 index 00000000..88a9abbb --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.translate.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.translate module +==================================================== + +.. automodule:: honeybee_radiance_postprocess.cli.translate + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.two_phase.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.two_phase.rst.txt new file mode 100644 index 00000000..db290a1a --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.two_phase.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.two\_phase module +===================================================== + +.. automodule:: honeybee_radiance_postprocess.cli.two_phase + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.util.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.util.rst.txt new file mode 100644 index 00000000..b377af9b --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.util.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.util module +=============================================== + +.. automodule:: honeybee_radiance_postprocess.cli.util + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.dynamic.rst.txt b/docs/_sources/honeybee_radiance_postprocess.dynamic.rst.txt new file mode 100644 index 00000000..fdd4345d --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.dynamic.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.dynamic module +============================================== + +.. automodule:: honeybee_radiance_postprocess.dynamic + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.electriclight.rst.txt b/docs/_sources/honeybee_radiance_postprocess.electriclight.rst.txt new file mode 100644 index 00000000..b29986b2 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.electriclight.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.electriclight module +==================================================== + +.. automodule:: honeybee_radiance_postprocess.electriclight + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.en17037.rst.txt b/docs/_sources/honeybee_radiance_postprocess.en17037.rst.txt new file mode 100644 index 00000000..cb046c11 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.en17037.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.en17037 module +============================================== + +.. automodule:: honeybee_radiance_postprocess.en17037 + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.helper.rst.txt b/docs/_sources/honeybee_radiance_postprocess.helper.rst.txt new file mode 100644 index 00000000..bff2aecc --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.helper.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.helper module +============================================= + +.. automodule:: honeybee_radiance_postprocess.helper + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.leed.rst.txt b/docs/_sources/honeybee_radiance_postprocess.leed.rst.txt new file mode 100644 index 00000000..070e7cad --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.leed.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.leed module +=========================================== + +.. automodule:: honeybee_radiance_postprocess.leed + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.metrics.rst.txt b/docs/_sources/honeybee_radiance_postprocess.metrics.rst.txt new file mode 100644 index 00000000..35d23c07 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.metrics.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.metrics module +============================================== + +.. automodule:: honeybee_radiance_postprocess.metrics + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.reader.rst.txt b/docs/_sources/honeybee_radiance_postprocess.reader.rst.txt new file mode 100644 index 00000000..51418cdd --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.reader.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.reader module +============================================= + +.. automodule:: honeybee_radiance_postprocess.reader + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.results.annual_daylight.rst.txt b/docs/_sources/honeybee_radiance_postprocess.results.annual_daylight.rst.txt new file mode 100644 index 00000000..afb1ef85 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.results.annual_daylight.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.results.annual\_daylight module +=============================================================== + +.. automodule:: honeybee_radiance_postprocess.results.annual_daylight + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.results.annual_irradiance.rst.txt b/docs/_sources/honeybee_radiance_postprocess.results.annual_irradiance.rst.txt new file mode 100644 index 00000000..cd611c9a --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.results.annual_irradiance.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.results.annual\_irradiance module +================================================================= + +.. automodule:: honeybee_radiance_postprocess.results.annual_irradiance + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.results.results.rst.txt b/docs/_sources/honeybee_radiance_postprocess.results.results.rst.txt new file mode 100644 index 00000000..ef6e19e2 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.results.results.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.results.results module +====================================================== + +.. automodule:: honeybee_radiance_postprocess.results.results + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.results.rst.txt b/docs/_sources/honeybee_radiance_postprocess.results.rst.txt new file mode 100644 index 00000000..591fd302 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.results.rst.txt @@ -0,0 +1,20 @@ +honeybee\_radiance\_postprocess.results package +=============================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.results.annual_daylight + honeybee_radiance_postprocess.results.annual_irradiance + honeybee_radiance_postprocess.results.results + +Module contents +--------------- + +.. automodule:: honeybee_radiance_postprocess.results + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.rst.txt b/docs/_sources/honeybee_radiance_postprocess.rst.txt new file mode 100644 index 00000000..147138ca --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.rst.txt @@ -0,0 +1,38 @@ +honeybee\_radiance\_postprocess package +======================================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.cli + honeybee_radiance_postprocess.results + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.annual + honeybee_radiance_postprocess.annualdaylight + honeybee_radiance_postprocess.annualirradiance + honeybee_radiance_postprocess.dynamic + honeybee_radiance_postprocess.electriclight + honeybee_radiance_postprocess.en17037 + honeybee_radiance_postprocess.helper + honeybee_radiance_postprocess.leed + honeybee_radiance_postprocess.metrics + honeybee_radiance_postprocess.reader + honeybee_radiance_postprocess.type_hints + honeybee_radiance_postprocess.util + +Module contents +--------------- + +.. automodule:: honeybee_radiance_postprocess + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.type_hints.rst.txt b/docs/_sources/honeybee_radiance_postprocess.type_hints.rst.txt new file mode 100644 index 00000000..2fa33c3f --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.type_hints.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.type\_hints module +================================================== + +.. automodule:: honeybee_radiance_postprocess.type_hints + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.util.rst.txt b/docs/_sources/honeybee_radiance_postprocess.util.rst.txt new file mode 100644 index 00000000..e825aa86 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.util.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.util module +=========================================== + +.. automodule:: honeybee_radiance_postprocess.util + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt new file mode 100644 index 00000000..7f4ac0a0 --- /dev/null +++ b/docs/_sources/index.rst.txt @@ -0,0 +1,27 @@ +Welcome to honeybee-radiance-postprocess's documentation! +=================================== + +CLI Docs +======== + +For command line interface documentation and API documentation see the pages below. + +.. toctree:: + :maxdepth: 2 + + cli//index + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +.. include:: modules.rst + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/_sources/modules.rst.txt b/docs/_sources/modules.rst.txt new file mode 100644 index 00000000..1e1cbf50 --- /dev/null +++ b/docs/_sources/modules.rst.txt @@ -0,0 +1,7 @@ +honeybee_radiance_postprocess +============================= + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess diff --git a/docs/_static/_sphinx_javascript_frameworks_compat.js b/docs/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..8549469d --- /dev/null +++ b/docs/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return 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; +}; + +/** + * 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, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + 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); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/docs/_static/basic.css b/docs/_static/basic.css new file mode 100644 index 00000000..eeb0519a --- /dev/null +++ b/docs/_static/basic.css @@ -0,0 +1,899 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- 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%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +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 form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- 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 p.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%; + margin-left: auto; + margin-right: auto; +} + +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 ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +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; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + + +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, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +div.topic { + border: 1px solid #ccc; + padding: 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; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +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; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- 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; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} +dl.field-list > dt:after { + content: ":"; +} + + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.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; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + 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; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- 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/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css new file mode 100644 index 00000000..09e88ce3 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css @@ -0,0 +1,1109 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 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. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@-ms-viewport { + width: device-width; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css new file mode 100644 index 00000000..f4ede63f --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 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. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap.css b/docs/_static/bootstrap-2.3.2/css/bootstrap.css new file mode 100644 index 00000000..b725064a --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap.css @@ -0,0 +1,6167 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 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. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +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; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-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; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -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); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid: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-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -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); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -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); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -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); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -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 ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -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.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + 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; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -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); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -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; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css b/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css new file mode 100644 index 00000000..b6428e69 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 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. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}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}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-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)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid: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-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-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)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-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)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-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)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-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 ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-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.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-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}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;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;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-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)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-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;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png b/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png b/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/docs/_static/bootstrap-2.3.2/js/bootstrap.js b/docs/_static/bootstrap-2.3.2/js/bootstrap.js new file mode 100644 index 00000000..638bb187 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/js/bootstrap.js @@ -0,0 +1,2287 @@ +/* =================================================== + * bootstrap-transition.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 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"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.$jqTheme || window.jQuery); +/* ========================================================== + * bootstrap-alert.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 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"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.$jqTheme || window.jQuery); +/* ============================================================ + * bootstrap-button.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 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"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.$jqTheme || window.jQuery); +/* ========================================================== + * bootstrap-carousel.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 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"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.$jqTheme || window.jQuery); +/* ============================================================= + * bootstrap-collapse.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 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"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.$jqTheme || window.jQuery); +/* ============================================================ + * bootstrap-dropdown.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 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"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement) { + // if mobile we we use a backdrop because click events don't delegate + $('