From 5b1b40c0a3806c16abe5900d533bfeab61b00f7c Mon Sep 17 00:00:00 2001 From: mikkelkp Date: Mon, 30 Sep 2024 16:49:27 +0000 Subject: [PATCH] deploy: update docs --- .nojekyll | 1 + README.md | 1 + docs/.buildinfo | 4 + docs/.doctrees/cli/abnt.doctree | Bin 0 -> 16149 bytes docs/.doctrees/cli/datacollection.doctree | Bin 0 -> 18492 bytes docs/.doctrees/cli/grid.doctree | Bin 0 -> 25454 bytes docs/.doctrees/cli/index.doctree | Bin 0 -> 3165 bytes docs/.doctrees/cli/leed.doctree | Bin 0 -> 18768 bytes docs/.doctrees/cli/main.doctree | Bin 0 -> 408644 bytes docs/.doctrees/cli/merge.doctree | Bin 0 -> 20318 bytes docs/.doctrees/cli/mtxop.doctree | Bin 0 -> 31249 bytes docs/.doctrees/cli/postprocess.doctree | Bin 0 -> 274402 bytes docs/.doctrees/cli/schedule.doctree | Bin 0 -> 21497 bytes docs/.doctrees/cli/translate.doctree | Bin 0 -> 38579 bytes docs/.doctrees/cli/two_phase.doctree | Bin 0 -> 40908 bytes docs/.doctrees/cli/viewfactor.doctree | Bin 0 -> 15414 bytes docs/.doctrees/environment.pickle | Bin 0 -> 651576 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 ...ybee_radiance_postprocess.cli.abnt.doctree | Bin 0 -> 3470 bytes ...nce_postprocess.cli.datacollection.doctree | Bin 0 -> 3592 bytes .../honeybee_radiance_postprocess.cli.doctree | Bin 0 -> 4853 bytes ...ybee_radiance_postprocess.cli.grid.doctree | Bin 0 -> 22961 bytes ...ybee_radiance_postprocess.cli.leed.doctree | Bin 0 -> 3506 bytes ...bee_radiance_postprocess.cli.merge.doctree | Bin 0 -> 3496 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 ...adiance_postprocess.cli.viewfactor.doctree | Bin 0 -> 3556 bytes ...bee_radiance_postprocess.data_type.doctree | Bin 0 -> 32285 bytes .../honeybee_radiance_postprocess.doctree | Bin 0 -> 5331 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 -> 4360 bytes ...bee_radiance_postprocess.leed.leed.doctree | Bin 0 -> 55338 bytes ...nce_postprocess.leed.leed_schedule.doctree | Bin 0 -> 13465 bytes ...eybee_radiance_postprocess.metrics.doctree | Bin 0 -> 142745 bytes ...neybee_radiance_postprocess.reader.doctree | Bin 0 -> 27966 bytes ...ostprocess.results.annual_daylight.doctree | Bin 0 -> 434838 bytes ...tprocess.results.annual_irradiance.doctree | Bin 0 -> 252080 bytes ...eybee_radiance_postprocess.results.doctree | Bin 0 -> 4473 bytes ...diance_postprocess.results.results.doctree | Bin 0 -> 227988 bytes ...ee_radiance_postprocess.type_hints.doctree | Bin 0 -> 3511 bytes ...honeybee_radiance_postprocess.util.doctree | Bin 0 -> 38033 bytes ..._radiance_postprocess.vis_metadata.doctree | Bin 0 -> 3519 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 | 696 + .../annualdaylight.html | 914 ++ .../cli/grid.html | 920 ++ .../cli/util.html | 751 ++ .../data_type.html | 727 ++ .../dynamic.html | 903 ++ .../electriclight.html | 648 + .../en17037.html | 929 ++ .../honeybee_radiance_postprocess/helper.html | 882 ++ .../leed/leed.html | 1372 ++ .../leed/leed_schedule.html | 873 ++ .../metrics.html | 1044 ++ .../honeybee_radiance_postprocess/reader.html | 705 + .../results/annual_daylight.html | 1381 ++ .../results/annual_irradiance.html | 819 ++ .../results/results.html | 1995 +++ .../honeybee_radiance_postprocess/util.html | 813 ++ docs/_modules/index.html | 647 + docs/_sources/cli/abnt.rst.txt | 6 + docs/_sources/cli/datacollection.rst.txt | 6 + docs/_sources/cli/grid.rst.txt | 6 + docs/_sources/cli/index.rst.txt | 21 + docs/_sources/cli/leed.rst.txt | 6 + docs/_sources/cli/main.rst.txt | 7 + docs/_sources/cli/merge.rst.txt | 6 + 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 + docs/_sources/cli/viewfactor.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.abnt.rst.txt | 7 + ...nce_postprocess.cli.datacollection.rst.txt | 7 + ...ybee_radiance_postprocess.cli.grid.rst.txt | 7 + ...ybee_radiance_postprocess.cli.leed.rst.txt | 7 + ...bee_radiance_postprocess.cli.merge.rst.txt | 7 + ...bee_radiance_postprocess.cli.mtxop.rst.txt | 7 + ...diance_postprocess.cli.postprocess.rst.txt | 7 + .../honeybee_radiance_postprocess.cli.rst.txt | 29 + ..._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 + ...adiance_postprocess.cli.viewfactor.rst.txt | 7 + ...bee_radiance_postprocess.data_type.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 + ...bee_radiance_postprocess.leed.leed.rst.txt | 7 + ...nce_postprocess.leed.leed_schedule.rst.txt | 7 + ...honeybee_radiance_postprocess.leed.rst.txt | 19 + ...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 | 40 + ...ee_radiance_postprocess.type_hints.rst.txt | 7 + ...honeybee_radiance_postprocess.util.rst.txt | 7 + ..._radiance_postprocess.vis_metadata.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/abnt.html | 767 ++ docs/cli/datacollection.html | 798 ++ docs/cli/grid.html | 820 ++ docs/cli/index.html | 700 + docs/cli/leed.html | 779 ++ docs/cli/main.html | 3137 +++++ docs/cli/merge.html | 789 ++ docs/cli/mtxop.html | 876 ++ docs/cli/postprocess.html | 2148 +++ docs/cli/schedule.html | 794 ++ docs/cli/translate.html | 914 ++ docs/cli/two_phase.html | 899 ++ docs/cli/viewfactor.html | 773 ++ docs/genindex.html | 3965 ++++++ .../honeybee_radiance_postprocess.annual.html | 736 ++ ...e_radiance_postprocess.annualdaylight.html | 759 ++ ...radiance_postprocess.annualirradiance.html | 688 + ...oneybee_radiance_postprocess.cli.abnt.html | 704 + ...diance_postprocess.cli.datacollection.html | 704 + ...oneybee_radiance_postprocess.cli.grid.html | 764 ++ docs/honeybee_radiance_postprocess.cli.html | 736 ++ ...oneybee_radiance_postprocess.cli.leed.html | 704 + ...neybee_radiance_postprocess.cli.merge.html | 704 + ...neybee_radiance_postprocess.cli.mtxop.html | 704 + ..._radiance_postprocess.cli.postprocess.html | 704 + ...bee_radiance_postprocess.cli.schedule.html | 704 + ...ee_radiance_postprocess.cli.translate.html | 704 + ...ee_radiance_postprocess.cli.two_phase.html | 704 + ...oneybee_radiance_postprocess.cli.util.html | 740 ++ ...e_radiance_postprocess.cli.viewfactor.html | 704 + ...neybee_radiance_postprocess.data_type.html | 776 ++ ...honeybee_radiance_postprocess.dynamic.html | 933 ++ ...ee_radiance_postprocess.electriclight.html | 700 + ...honeybee_radiance_postprocess.en17037.html | 742 ++ .../honeybee_radiance_postprocess.helper.html | 721 + docs/honeybee_radiance_postprocess.html | 875 ++ docs/honeybee_radiance_postprocess.leed.html | 705 + ...neybee_radiance_postprocess.leed.leed.html | 821 ++ ...diance_postprocess.leed.leed_schedule.html | 702 + ...honeybee_radiance_postprocess.metrics.html | 1066 ++ .../honeybee_radiance_postprocess.reader.html | 739 ++ ...e_postprocess.results.annual_daylight.html | 1761 +++ ...postprocess.results.annual_irradiance.html | 1339 ++ ...honeybee_radiance_postprocess.results.html | 836 ++ ..._radiance_postprocess.results.results.html | 1279 ++ ...eybee_radiance_postprocess.type_hints.html | 688 + docs/honeybee_radiance_postprocess.util.html | 817 ++ ...bee_radiance_postprocess.vis_metadata.html | 683 + docs/index.html | 770 ++ docs/modules.html | 740 ++ docs/objects.inv | Bin 0 -> 6268 bytes docs/py-modindex.html | 815 ++ docs/search.html | 657 + docs/searchindex.js | 1 + 256 files changed, 102332 insertions(+) create mode 100644 .nojekyll create mode 100644 README.md create mode 100644 docs/.buildinfo create mode 100644 docs/.doctrees/cli/abnt.doctree create mode 100644 docs/.doctrees/cli/datacollection.doctree 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/merge.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/cli/viewfactor.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.abnt.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.cli.datacollection.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.merge.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.cli.viewfactor.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.data_type.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.leed.leed.doctree create mode 100644 docs/.doctrees/honeybee_radiance_postprocess.leed.leed_schedule.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/honeybee_radiance_postprocess.vis_metadata.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/data_type.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/leed.html create mode 100644 docs/_modules/honeybee_radiance_postprocess/leed/leed_schedule.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/abnt.rst.txt create mode 100644 docs/_sources/cli/datacollection.rst.txt 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/merge.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/cli/viewfactor.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.abnt.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.cli.datacollection.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.merge.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.cli.viewfactor.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.data_type.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.leed.rst.txt create mode 100644 docs/_sources/honeybee_radiance_postprocess.leed.leed_schedule.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/honeybee_radiance_postprocess.vis_metadata.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/abnt.html create mode 100644 docs/cli/datacollection.html 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/merge.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/cli/viewfactor.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.abnt.html create mode 100644 docs/honeybee_radiance_postprocess.cli.datacollection.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.merge.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.cli.viewfactor.html create mode 100644 docs/honeybee_radiance_postprocess.data_type.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.leed.leed.html create mode 100644 docs/honeybee_radiance_postprocess.leed.leed_schedule.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/honeybee_radiance_postprocess.vis_metadata.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..a89260fa --- /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: 3f79764f8680e3204fe25e4832747c4d +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/cli/abnt.doctree b/docs/.doctrees/cli/abnt.doctree new file mode 100644 index 0000000000000000000000000000000000000000..741f57a153ad050cd21f53e088c0ff9f2c560f28 GIT binary patch literal 16149 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 SRA$a1hnxB)iUZ>2^8W*&DVulz literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/datacollection.doctree b/docs/.doctrees/cli/datacollection.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8b0565289ff6088a9be9934fc85ffe953e10ae8f GIT binary patch literal 18492 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 Gx%R(t&ca#% literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/grid.doctree b/docs/.doctrees/cli/grid.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ac0651a657b0a4e626384f2cdb6377af2c786eed GIT binary patch literal 25454 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 i)w@--kj>pVlVXH4Uxki6|<^KRe6_*bH literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/index.doctree b/docs/.doctrees/cli/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dab148c85cbda3bb6535175921112474fa4850b4 GIT binary patch literal 3165 zcmai0U27Xh6m?=tmTXD>ND~T)Q%Xsb(8vm<51|jGU?>!~f~HAJDPcR>9cc#7&TMC9 zWBDPFKDfj%Z`uBh{>GlWyIRSDP=R3Q&Ye5=d%?bbifdmH61?72)xJwIkiqD{hG z5ju&9^OS2}ye}UARlF%4g|21i&g3@cMc9BwETl>-*Tt(M3`pHe<&Nv~+m6Rx8r>Wh zEzuU+uZl;a8(Lm^#aFh%=E)D=7qpGttrvVw*H*&IqP!i)Z-sWoaGx*4LFh(}gJLtZ zYrn=}OG(X(aXw*Thk0-1B=?Ai{NI#`BVV^;#hil>-!0A3>Z_CF*>W*q@tNgQ(#gZN zXEWL=#Gbe-dg7kg6i4BYkuWJA*<5RGN9V?#L7@4?g!7?giDWwF!^}9JSrc>T{%05A zxKXU+Na}>okF7(P_fK!;6R}(6f0@Ajg&=fJOqw!{xXRq!SrIJr_9dKtS~)!y_bD~v z6XZjDifn&|{{#FV;{O=2iZ99-hn2c`0vFnFp^IvpG&8wQR;pGNRBRwYCia%ERYBtX!5R73Y=7a>XWq;LxQDeiA>6m*Q9PoA_P45|Lm6ZiyKWos`WJo_SH6-T+Qn zR<;mOJyT{Bk1Tnop1|BPdCC&*lpb4=TaH{BAK|m z#%QRQYsWWNpo(t!Ft!_#5KkxtH^Ly!EzwETkVkJJsYoPr9QR)88Tjy^A-JhE+H*8Q zX#c`gj*>1IQtXXGcg8^njB1YsFv^{0X@CLbsm}-`-aKPshx$?~CZlTl)t%OhV8Lk_gGpms+XjsltNV?v# zm{U;2yD*SC%YDRkY!YY{p_}{Z@Y&EweBZmi8F6ckMO)}Z0evVOVvBtd_Dt@tTWOV6 zig2{Hvt~m48wQopr30;(FTNW-!{ygE)=q|f3IGl61oER0P!aly=~>QZ9O+K5zKMk~8$CsgNQX?K3~!2@7or^oEcYf_io#8>R_G^rnnexjkkwKk z0XVCfB7=LS1gX`IYQGd^j^~Mq<|*N6pU**TJX$?jLL~OlYw2W#&%G#-j!hH=QhT|* z=mzm5^bm{#{#ngJ{aP(rFj*L6Jc|$$cn7Z?`O+iF1VkMXu*1i~`^JB`=OlVoZB^M!eO3gklG<@gu>-c0r35(M1(!BU^xXkb z1=>N+&|ONV(icDOKMecsLVGrkgq#V5Kft@C4B@`#Qid-3Ge=W97`#=kt7W82%&JEs z9L0hmAQZl8Hk7iw3a8KV3_jAxRnmM-0(cW3k$MUYELh=?c*5nAH9eUUc$LAFLN3wF zbXEW}ct8^L?*&{CoO@hyJBHR-#PJ%d2-Bg(AXB=1P|tS&tD07vb`^S+h0?sk=}oR* z(<~M`6}O<70Zj}z63yZx&+s;bt1yQhz)3*OV}?Y!@mA8v77njTtLY44SerJBHnkK6 zAjr2#SbaYd@5H5eE8gUxOHzN4!EKs)-i^iEaV|ck?@J7GZ^SSU{Z%ZKw)(LIqR1K8 zuO!s53%$zeRY|3XP*D1GVpIdKQuU)XVWZu>X0f}twLElq%|4jddZPN<>$d70Jp162 z7(*IBQ-s~+aD)eC`=pk?M;0!N=V&er(`ZwSzYb`qE^KJ!ns~Pnmj&FdM-KpKMzz~X Oi1})gpw~E`9RCO0$KfFW literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/leed.doctree b/docs/.doctrees/cli/leed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4c6bf7fe7e2a4ec53698a85f4929323ac21f918e GIT binary patch literal 18768 zcmeHP>5m-8bzhQubGbZZGO<^r+728IWzLckY{j7zB@8Jk62+xLQ3f4>X!cCkY z_oxqY7l8l=hzv0<#17PQkl2osz(8!k$bkg8fFS=t5F|hjILi4UNPsAIfP6559KTo9 z)yGWFvAe^35`i67*ZJzzd#`@=>iEp;JI}r_Bmaq`QO|Mx?RCqx{lI2XDi-aaophNW zr*Efce=2<=ZHT4Nx)%jW*k-AiL5{ZLdUnYC^mZy%DSPaC(Rx;XA!6;=4g9>gGv~}Z z3%ApTvn1wXH}+U5Nz8hT*(s$XdG;pTrgpQ~H&fX@DtJiD_bjv+r_OP)WacC~hs1nF z*#-)^K1(-}mL-<0I1b%b5~D}dgF~(z5w#0#&x#^MB0T3?T@_lilV0)Bvf5iA>rkFV zEX39(C8f?$XU$o09(E2nr-gam3A*fjnD{;m&)*BeEkyWir^Q$^v~1V%+pO6OqPQ0Z zZ5BmiQqi60eA{!+6ED`o2)#UW^whH&?vZiYND(KtLM?r3#y+R z&KcsS^9Wezd>AA2efaw*{vO5OS+K|Xm}E=SIjyo{2$wKU)@Eq+obo6?c{%8IE#Hoe zP7oR|J^SnxgV@u|_~ZJUM$j>CWUMnn7A0OBtt+`WCH7jp=+%#+S3fd&ub#mmPsHIf zR}Y}(CdO(>9P!+kg_dWwyr8{R?*2352g`Wv`pY+8xW4hqZR7IwYu7GqTrpm|bmRF~ zZm+NBY}ju#1v_Yve|*%?ilyzYcQNW&r1OhC3I{Nj{&P zK&WaNs>Y%Nnaw+X%RVqO^J>J5*kMNGST<|Mq2)(iH;&1e8EQa`I4~j>8Wx^K&#ytl& z&KV7uoH;Rf2^R38HeT6RLCcpx%P&q&%Na56`p}6uy*h)EUxZ0L2hwIh);rpEX*zyE zM~D|YfoHSuqH#k_rw~i}CS`OHg)4d?4uXHn!E!`a{zT=*f_6Sv2d3DW&BBDYIs9+QmGO`;eEqU|O2P<<8qtflDd zAA|5e+Ff54QREMczK+IYDKRE#v5}ySGJSE9OeFX(=K}To-e#N;k7$^?g1}TA|x61Gxn??MJ!?`FBCVcR<0vPd>o^ zhU`EhxjxT`Ia2lQQmaa{hYqM%fMEz-xs+)%#B9%U!&F=!IaW>TvX@f5VZit`QTQx&SY;J~F+Q} z1VaCtxC~jI5wlq2mWNcE%^9p@kzz(J)_Vk9N&_H10@BYJ%}Nu-)3QNRHTaB_hz1&1 zlGVsHV`)A(Bs)*5+*3k^3xR>i^3z1ETwB(yxf)^-WHn`-Sf7JT8D!`>UHHfma!zdd%ELGkdt&=K< z%s_mVwoi?rZI4_lCXt5JCvk26CZMdOj2sGZ&Op*qu}tz7v^cy+X=QN5qUCucb>xw0 z@JEQxFA|@{vKa?$6Ap(sO3%VAL|;-ooq1A)lf;$N8pQDv8Iww?&<^~#?CB~TE&0kw zoVjH5;7wwoTrMbWmkR=^{ugy$T&Ytz*HLcO)u00#Mpewr5_tZ=^i;+Sj>i06>)Rl=%+?yU_%K6aR)NP zUHnwA5APy|lK+d6A3;YM4-h=dd-$z|IsZWka-QHJ<xsHYY%~H8ODAnB+c^Q=AC^QDRRG?I6 ze0~k3sOSASrEd`Xq12763u7qKP)ZN`uAr1w!#zPM{x=v9{w0vf-=)x(DfG8_=90AGv9hE3)6qq*{yVo-osI=aozuGmWWuG-mpfoT`0zg=#3M zV5Se%VkRX78JZiFr8*ej8bk3!=&6R{iYINY7Cn_j2qt`Fo+{1%GKS`faMU2pWgJDi zBtE@=TQImot;T6GF!cwZg1?KOv0&;qGnQb+9|TjS?elA}!k3InII|dSIi!R>;uR^U1iK#;hlS47%g-LhJ zi!NcC9fu+6+E5@;?|;+rfNWb`B>+7V^|i{Sj}_2|y?V1^81ZQ)l=d*_-AU;U{4c&a`!%`KP_P@D$R41FhGTObQwP_!i=!2kDVWJOF zNMa%xdeE4NO&4xp!Bq!2QgLhF#&KBHW$<+C0rV!usi`RCkC8O(9xgrFYz`rud`&V* zH9%8wqv}lh;Lx%fFOA5NtAhklpBSkN6FQzA&nuZSh#FJzXb|;MPSrj@R1F0c5VbNe zR=^J%*}@fKm-rWuUZoPv2n0Wi&&gF0M{TVU=)ChF^XF?ef>~GZw$BXWXsD zFO3p_IV9)Vj%RJEGkzYn;pku;P2K$`bt5N8JX`sUY7qgziv%p{j1A7iMY4C~Na_PX z>&C0{d|s9zt2yw!9Xd-FF(L!yGeY_fC6y2HWaoEmBeZr1Bek<5#W<RjTTNc z*k=_f(sd>ARh6C`cD&CHI=8uAxPJH>BuQ)hCo_SnUu5>p`xUIPU5MfXbe?^FH}q-e znV>?$oo6@0gbg~+zDk7#oM$?goM%+7;GmpdzP2m!GUwT^pwJjsRfW@E8J}M}!S zbe`SMx-fsrd9?=VD(qN83jGvtV2QPp;lOW`W%~g7Hx>u}b0)~+aG-eN2BTxq zcY*pWxUlH97RbuZio>sSFT@?E{J1!L)x{;Py%f!dia$lew8npMqhBr(U8Z*0B z@WyN7^J~08oY*Dacs}dG7>YFB&|;wNexau$@P<~8ec+8RfJ}uqevU#CZ^+Ojc;h|2 zOD~piZ$#d{&5xLuVhU~fd1A^Me<$OO?re3E>(`e4qvm@$LZwbn-I%8TD7zFe1q+I6 zhfRIOfIx^vJNVhz@9_tl=5^5l4-@}gVl<+mZaP;!7!uh3{>YJ-5N`ZVUdfc<#$d&T zS~U1?pxG%gKZAjjOka|x*0|Fwzm>71cH%1h7vlI0_Il#t$|kl{lmcnjUrkCrbo^UX z{Tl!4obh$8v3@-&pZWZYoW7B|r#;}hJNqy+-$skd(0qqN($L7z1cs&<^)a_chu#lK zEp0}})F5x5=l91-H%w5&qs8^{WgO?k?dcL>qpw{{!b(Jp&aJM&4>Xuv<5y!{YFfQT zQ1noL_tASufp2+b2eBoetj0lUGr3?D^=1SlVQGg}{n~FvW*WUijGR_V967HG{+9{uVx$v(F^- z@O6Yv%hOv2l#1r&)LC0`q7wwMAH=xnm?vI6Adb+p4t~-#w}A<}DPmS5+&b!+bYTcZ zBUHJjV&JutF(&PTn)<~Bw3rpho?zGzDFKEpxJ#RGjWh>8pZYn1fYaRrMA$%)NT^ zx#lNR@o+Vvudp~qeTcv)2P~pPcqv{N$S&N2<2Jqz;{6Tr5H2?cp>5i%2l+rVbPa4n z%){l`!KDgt#I;Ra;_0~CI6Na(tt1Z2B1#-|Ayh}~q}wxd!2@GugbSGqeaoW?kIEQ% zte1wri0VZwu>%v21t8Zkwhdn~Gs`8Vl(b{>t{b^ZM30)b8(A%np(7cU3tAzZb7BRZ ziJ$`VawaN0l4X;}8sx(rt3B2;(I;%EkAoenVW-_!J;fB&f4{CCx@M8YZQ)X_ z%i@k~16q6DiMt*eTZ*j~l)#Ri^y;EG4Uy`?qmgM>-T_m+vT$FVl61K~o?4)bsgOD1 zk_}Nlj0afqPpIB;vKG(?e-jGkxwxgDUOV=vI2P^rv9)dH?=a9qDglZ9N`%ElY`&gA zuOn3Wko;DkCSI$su#lrSQBJoVJl_GId#LmcLn)g=>8+%Pv-$Mgi+sZ+vjg`bJpr8U z9ms$-3@6A`VAa@{&+X#12sDOAK8PfGtz|2P%ye6{{E2r!g2PyhMozYoYs+M~P2ich zu7=kq=*^b5#PRHH83?P_QDzO-2UHER`Us^DG5;>T0wWfcd4WDdG~xUQJb)m^00<1` z3cWoJA|Yxq-md|>arS`TtPm$EvFhRxqETBX|ClG0!jm$HU!X`8=F8A|zJQ-dEKxMw zcc4r%VIy)r{06ozDcxC-7pmknJ>J3IiweC*Av)X5pTf?%3ek}nPN!=4ck|F=wD70B zDIVq_^1N~KQ}7Ff3uK6p9VhU||5S$(ailDQvI|GrE(Do)fNrT6G88(W;#E0Dqj`r@B#~LR$>3(T JNgcCZ|39f_DG~qx literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/main.doctree b/docs/.doctrees/cli/main.doctree new file mode 100644 index 0000000000000000000000000000000000000000..427016b035e287fa667e59e53578b751cfd6d83a GIT binary patch literal 408644 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 z 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 XI5raGutcu_2ldk9UmR;r)K~l$5b0Jk literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/merge.doctree b/docs/.doctrees/cli/merge.doctree new file mode 100644 index 0000000000000000000000000000000000000000..14557338b948c330f7db8bad2a8399b874644981 GIT binary patch literal 20318 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 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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
u#0XW47+IO)NtKpKbG2rI?C63 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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..efd6901e85bff6cc2dda9da82b7bc8157450c557 GIT binary patch literal 38579 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/cli/viewfactor.doctree b/docs/.doctrees/cli/viewfactor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d4ffa56294ab299a50926e9dc3b957d8ef766cd3 GIT binary patch literal 15414 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 Haed{#I8LIa literal 0 HcmV?d00001 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..97968133164f01382430b2eeb1986cab06f7182b GIT binary patch literal 651576 zcmeFa37i~9bw9q=eczU3%g6ebY|pM`NtSK-k}cU5k|kU6C0k;co$1|~)?A)L(qbG; z490>6#E&6_K;p!S373Nd0TTF!1OkD8gA)=UAt50l9N`Ry0fPs9yc zD4$RK`FK`+y?)2HUcGu%_4>gXZ=5}J(h&aVENj+_rRvcUt9rQ9s8uUgwbgN!T;DF0 z3)_9C-q2b1vd#mYwa)Zhz24dF%q!ILt%hY4N{xb8CmKMx#`)nxGYDo^`ZkRhy++wb?lcN)k#v+8W8VTQ%Un z({&OBvYMdj#h&`%PQ0(&Le7Rk)@NICBA;4KwpPay^)XX+plVuAVOtDodXIn+90xZuRtJPY~RwGvj z1jq}5;r*kvdJ6y!Z!5Gw5&2xcXpP=F396`$ZW!4-vVQaE(aScDmP=!!b#@j`jy6jz zXlA+mAvEl$Ybfz1_uV;XneT=08YVWj>;=`_;jvr;Oq**WF8JXv|C1?IQOCgh68ARH zomI%TY9PXlR-+A97P(gtSn$uzBhCs})#Xz4P!=3O3E$RnrsGv-31jU@u9Yu(dYRR( zf((U@vsAL}nbtXJL#OR5VazvMxmGDJ)HNHlj3>~z{5mvD5QVkPX%}9I7+6@Y<#UMa z5xk?5YdTBuA4RKN&yE3(syQ^wyz&_8yU8rP2vKx23pit@#D>0@pMuM6ehylDaieoq zPn?ecm5y^!&wGZqxgGed%3fGJySV=#+?3mS5?)>k zFDO;VYY0p~UwB*b{NmZp@SdtQ3`Veq!C~baC1&;E+W4^BQb#~Px0ITBs|-!qsQ#`l$3jD{q;#&4Z@dEcB&P>p5ZW4SRr!p60!P~IX|-roRU^}xve-n9qr2e1D? zhd($xVS&>-+REn2<=T<#c>BdKp3H(@t2UvbFwb(#neE=goU(1E#naaQLF z1>m*Hd_J_R26*bC)dV{|;!?#MDz!qpY-Ldm;sT&MpRJ8y@0Nv!8YOw@O!ZQ>Sp=nU z`iQ1Nt&%H2<7S3G9iFZL25YTqtz~5!);M%K5GZAv;KHrWF@DzqMuK;OP4{GR^KJ$S z@Z`{Sma+R3mIK?m61%TiD({hPj?pe&SiFeSS?qO>*)a%dAlz{2FFa&f_3V*cqY75= z-tH`Iw(IoFoKmTOD`aF{BcX?17-?A;5h5RF2A%fi{t?%nvlCH$N( zI(q=Fz=Z|iP?>Oh^Epm^urHN_{yud;J?27KwV7UqK@9xD} z+_!kggd{yhspT;3|y%Ha0}_7*aiFZyff;MOv8veRCqaMN{j*w|*snStlg??8mk z`Z5-N+0$X{!+!7z@77pg=IfQb%SEerw)bymJ|p5rq{Z{adCrw5cBeQjuJA4jUR^FV zp_79yJ8;S8_0JWT7PI$23{!2D#!J}k&2Co@RclA89dQrmr3rB%#4Yv;zeID`1N@mEYItxeDbVCw_^_krukLUYHk$90D*m}r%pdp>)lRKNx`#Gm5aGmi<)8a-~Q zicyc$8ovWt07NJly+7hH4`Dn4#1|d~l*+HWqa+y8H3HX{vgeOL90R@*`womIVdPSJ zF$}CAjPqVpyu5e?@6fL-ZsGs9x_FK29$EC#VgZ+PaqoC>*o*btfRXuEH#&ybw%oYQ zhzuXAxFZ+N+FZsOIO&?#IV@mj#&d^DpcMCH@xEe%%hW8k_&;7y+{r2MaSk;3M$QY| z`Gu1?X&72%+w}s3+|W0(7>0#Cw-nvZh~EYsGaE$Y%5FRikq8rgIite61vG965)A+{ z-!<&h>lTE3I2r+Ptl(Y6i07Jk1nVrv!32bM;MeO7x39;6;LF?>aXEa1+?T9i49N3Y zrWa@0$3Eab$YWC<_BeB{&FbY+%LU~z{{?gqSsoC1;_x>ynDYxLkauwt2ImMR+E^ys5hNM4p)v}uNgMko#4?J7JF5F{S zU>0uReYg802N?b@sbKz_4R=tfOm=__=WD%k(9v|UC2m+B5ghmjM3n*|D@$MLV zTQ3PPZDiPe*wro@)X1>PRe>uhzvzpnnBw?rJt^}LGJwNh%R&j)Dlh^CbTgL*Y)PYW zQL$UYaKtmjX-suExL{)oe8Q^Myp)2y9(+Ex7=JMf2_S^T^hLw#?HT2bS@cVA(nS_T zKdqt-PLw4`oGryxtKPhFbTnV6j@ZqDRW2QFj8v`GXtiD$b??1y!>HBVGzzxJR4V06 z9(jYCU8S)I1}O%0vdDXt>xr@ZpLSqv2Y%LdEY7}oxKL_Br$5PJglPxv#hVU#Hwi)j z2n>2$gLuzg3K3`6`3=GI-hjnL2cYmx7zHfx&g0044Z+`;&KyO((2O(o?l^4LFOj55H%XcMoJ*z)`!yCCqZ2a^oGlb`9^|ddv3VtG3^=b;qvj zwr<5i>8!E?KIT~{uR)EX1sGYi~2Ms))F zLT66B05LTf62S=r%R7sA@hEB@zt45@EU;R_PeINXaK&6I$iS|w;aAXy@PAccSPw3* z+^$qXP3#^wTY~pMexd+zH9vm}e*$txW$Un22FJkSOC0L$=69^%cPQ@MPuADZPpj5k zwwCh;*)s zGNdZo9`mcctNBI^hVUZoAe4@;XnDfti>9>eqLW3^>>6^$NV`MbuFjX;G4CiO$suXbYKbxI;(WGL$U<%%W+&P> zKn19>dzWDX82Y=gYfJK39%&x3CIN2+KJJ_iq2EL`hXS#G)y9E$$TXMX1oj7I%+t=r z?zvRO2*sI$vbOdsfiOtVJW*IR1GWeQV&JIRR|#36ToTh5DdIL5aVO~ z0>ctc=6TmnfvJg7Jqzi!Y7V5gAVHo#1R1?%(Ua&bKI@Q0*WRw)2YG57s1~xV$-0*@ zb7emn;16wurPQ zw5l0MSBu+L%iCNkURJ<4X}!E{k-Uu$UjzZ)dk&2O6d?(SGg)W!9F1ip^MkaT4yS&n;eaUXZ)Y$(C*4H-?zi`aX40}(H*y$|9A|I8F*y7=JC zy}+{4EK%$}vB15+;*5?nvs%MRHvZ5G|1~8_eKKVWp{o{YC&{}r+BwOcK{C`h8Y?@KPD1h3qW|52Jea- z*LY{yCGUWZ5@AI40T+GV`H6CE41nB(o~#Zrf*WWAuI6Djz3RJuvUlB^K;f-(=Q{Ry zvE&ZY7omaKSQdJ>GKNTeD9lb<7>4<#57?zu-l7IKmUHJ>Wc+$c@CI+DM&6>(V1VSY z0gDI~8udv&Ya?ka7OxQ#$y_tbd>2@5pF@MuRbQNifpta3)$#^5V2&IRU{kTr^}p2&6$_URBM@W za9KEy$zkU)#YbuGd-=7M-PeHSTm@%xy=;qk55}(O^joDmHdIDD1^Fg$mM5Lbzbaem_| z-h!O$M6Cux5$Rey=d)Ve0kJk@5CLY~1A8}|A#U(yP)jhc1qpSSiGrJfCFTpyQf`A8 zxWhQeiodg2xAG-$Ji$B96*Lh$xdKcSvYal?aY5Lg!$4d(K*>PJ%{X%^?mWL2S>HIv zm27F(?I07T$C%8^x~>2kA;IGM^zKUy>^{6pE4rR?#~t29X)wSY1eLf7j`eARdsuG6 z*I4lw+Ut|t`95jRd>cZ#iZ?zJvwHFcI8w^ys-PNo2A;FtZjU(&d5(;&mVuyo=Sj}; zt}}eh1TDgu1$h~4SG$X6Ig8vpxw}vS+{CT!`YvxZTyaiuE>7P&a{xJfzWjC2+C|)$ z^%eo*8X#{G;7A$fYhn5gR+5cE);}j#VRf8yy@)gXNeqo3n<~~V@cr{4oQjG zmPk?~*f_@_p^SODOL{YiqA~fhI6;TY2x1=rW=Dc*IIs6x3X`B~SoI{A7KJkpNd{P} zS%NpPg?2G!Vez!H7|r6dR>!%ZH#5k8#ezI%$BAJZLLEpILLld@pj+FUGKnwOZ@#BjB+o;RpBP$K^2@HXN}S0x5c2%s;=LB$%f6~ zA^F-Nz+H^#grk656SB?i&Hl;Px5W4*4k}m$=CU>Tmbf*ID7qlTL!`OeO1&T6-h6DNzX zq#1@}E$k#$1uvF(*NWG?mEPh(SRKD}j+k5aPIH$6_n#7=W#EcTG|5V^&7U!a~^NO~!!cCCj00W`{KE2*K z<}B+v4^yeI0ty!MxvarNf-?v7gR33*vY$mbmc>*pL^y0+^)&PV5FNuT4CEeR8vqVL zW?-@drrTJs%oj()!Whu=G3Vqw+;s>R071qYqQU}Tge}Q)7Sv%C8cvR~beRJ)%6z&K zPB%xmDsZ}M6jp@doxV_Sx3i!zp7%X_zV|G8Kmd0hW+FyPR%@IQfaqluv-(I0pX;Ku zs8sEmaxVUkvj`qwIkN0g9DbqFaMGaJ9_v24)SF6ZTIF#*@p}vwhrn`V$lbvN7)*sY zD_M#N014S;$ZW#YHVzL8uy%I2f2EbTa1$1BF5o(p3uKDZi%%Ydh0gA3e6S`gLMaYA z3mAc{x4x_G%z;b@8xepN*V_B04-MV4^`AfT{>SW_|HZyo936V;UG`3KRQ}f)_BG7Tdn5=S%M`?P(xIGXv@lkDx{XxRtK_9fzI#Rs?8*NdZ7m6E+d9G$l6 zpX`nD==r&4M!*M8N$N*rDL)JN@6 zadiEetL)3g(M{*P*4{6U3OnC#-y@D%uQ_7hERK#H{iuDVIC|CZeb?S3j$V7_z4i_A z=xe`iUm=cOcjz?xHhJ_rA89+Vq8BHlVd)1hzAcV8^W6*;%unNv4ZhY8{1WuO)6s*! zq4SE)Ucfmb28SgVkBo>7NTGejXcjUuFc!{&bLkvs*uv*7jD3#xX84q|Huh!=rP!?p zQrPTK=DTJ_bC9u~gw>NUJSx=+oPTT$$bUA)_b~SfgWu6{@S*6hm?U-zZ&3Pw|0o3H z!#JJ2?9x~b^P9ccf;~hq%k3!${sTUqh~gPlz5%kb7w@BZT~d`2$gA4LDg@;Z#Ksa5`Q7T6Q`#C*{}_{1Rx z@)-}UB1@e!CgX4R;V?dIag$$+^ld5ni6d5y(Y!hqWC276f|d=j&m-1+8C~{PLco}& zbM#grGalk~?++Q{&FTxHlevlH%`sjycaj4YahwgNlY2M4h|J5AYMP*nPaNhWpUD-p zUJJD%O-sdWJXoX;IL`7F>4-&nucN60FZs-&g4q=0^*SS01QCFR>xY>>(+n-t0lH?8 z?}bXoS!M_&Bk3@WAlM77Wzqz9`R1yHQMPIo{*m>#bm~TG?~W9s-{yj$ z%C325{!YwJ>b=t+PNZpBkp-co=+YdA8RvqM_0`!FaO|}X1QO25cW3`dI7;3%9%spI z1XH{t^hLeNyW}*$;JG%LWjW5W^Lh=7ji$OYMwraUhY9g&8gh7u@PWF|y=9tQ`%)rP znz~Ly27w?fnS|4z@=O8u_TvR23{2H(GP`=ByY)2N zvzl1b0HJSW<-}($MW#tCy<^ab?<0Jp;{L=NyNu8&Gq6w-v1?uuXKc~sCj$_n!!T9; zaWx8(MkPK-vBTbGyaM7=$N&d_}O%x>9ZH_TXP&#Q%O@_YNvXftwqGP zmF9awde@QI*&DgJ1%Y^+EsI3P^euXvEuO?@;^(#e`#+`z`2875rRfr7>gqUKc#4{w z@9y7Vg};x(f@yb;Bve#91~IYizz;4e6%U9FAIF={LMXq5l|gdlBe}_D=XJ0m6-G6D z&kcY4Rq(ho!(Fe6bevgi!8lt;&(>qJrR6vW(HyB_6$RKV#qQvR=x`gu+(zz*yJ;Bq z>&?j*p;|r^LxF9!c6J7mza1(V;Bwd*Y){E6I;?!ZU0~PvHj`QIMq7IfPPWH#&OBe0 z6@16^5-Xen#Zj;%IB)^0&S&!deekb2P{vUnV2Kb|FOT=Mo!PA%ln%kdlrLhW*{X6o z2mj_@5nyZ-*V-1G0fvk42PE!VZv=~WeH;fb+EsYOehK^l-*yfD;!5`W;4hGC@;`0< z=Lr8Z$^NwM`{A$06|QcN;c5okNYup(KgBtC6;MmU0j{Wz;b8g=yLNOdgPq~;|ILK& z$2I&h@1KDgm2L+3DbB&$5^{k12I4qiTcNsbz)o=v{v;s>xK|;DgPDA5Sr-fLInKk! z67qmMBw~4B+tC6%uydS;ze~si?#qbbVZLv9OgALDu5f<-Eg?U+GbDzeIo=|TZf4|Z z&dGNYa)P^3VmO&AmSA+V;ycfI`FTQKa8FDuFWyp!ATQ!P=Vi{!WZnyRjPrH;dd$uI{)zR6;?gmxSSTxU5GL z%8Gk6V`LRp=p`#g`=Jtwr+Z20f11nna6-9oIe!{*VGM6Bm;Y%lS0|xdxPLZAE>U8o zm%UhA9x9l4yqCec9_NxhmQXU>3!I8%7}+O~%>Ou-?8$_Z;U^!UG*^%ia4>CZ-L4I{`m(C8(dN`uQdV^*?JGcMSUk#T)o z3&dDzh^^%gl}|h$B_BS2pzC=q+p>hR;hORo*+iMFDEqmSprL|^ha&~!HPO6>xm3dm zrNSleF;WSK7bR8KVt9|eu4JAd5hYtF2`=GCLJ4tQevE`d^^p?t>Q|w%iH9R)>wcI^ zbyY&Cu=+`iR3aM^B^6&f9x9Z0HcF`OXSqx-NGKE5aEXyg)C`M~iN*7wsV?zolt^8V za*6IvC=o7QkC8|O^SvZu1s6jNB_8i3RoCNOvhjqH;R?+d$*zp^^r&#g+K^b#8Y-h8 z6f5Hag%Fpvl~7u&85AR}a05|xbeDgIN+=$Vk}&Wvm+IFON`%i-B;vnlnOGIi@GPEqI$Emkr@36elTa>PuNouQwQ=puTjt0! z=tH6|La6lwwHP_wocaNU8khUs3FXGBTQPEPrOK^lkGp~uK~Gn5l^&P9{%7fMHV&oCQev~}0RBK4o>J7D* zAQ2@PkT{@_;1d2Yp@dkWFGj*GcUfiFA8rk|YQr8hGhXrIj4yxppAWvd+5I)sv$|(2 zuh6A*fkKB%J2X4lh#e~s#z-4eeYOjcG52zw7bWAl?aV9J;IlyZEm^s&jIH$Ii?ML+ z6f5s(;~FMb+SA6>M69f*jjMWCNlzPB*RXP)Hm-4Dr95q1X~N2Q+PKDpmGHE2jRh;; zY2yk9R=U&1^#!bKr;T&_tN^2pv*WC!qK$LPtW>9sGq0>BosDyota6%-vwEyNr;YPq ztRj|;vqY>Ala2E#tR$z6GZCzwkd2vpRrJm1D1kuCnVvDaWrRc-XJY;CBG zzKN~)w6P7d1&B7{o0ZA58EW9m+VHgpQQMWT2b@3FE|)F-HB_;RFt84fEgYPS-%Dkm z8i}}Vt+UuIVhlxk-PMUp-Op*_hsbghja zdGH{|V$qbuupq&0Z_(EXOD=9s&IND%iMTjB2^Z}#-s?}D`w6bt_D4YWL&A%{pDa~) zGq@N+G+4jRz8@Rq#otSQmxAf{FcNf6V(i65ekk0F<2+7AZV?alH2+8zTT{i(NQ|cm za;JEizbCV%Smd+4Ewa{*>R3&k`zi2kF8E|nrd7+Jd{X(%Q0@PiETXRVZ>DJK9&uB_H4b*;B*PCCJm;+~xCMC(N`t(a~FnPbItOHD}x zO=r;G$&Q;hYy%RKi_e&1P;$W?ej+a3orDYMxY;hHsq47a9Z&Y_MR$EK85-f<3}uSz zuJ0zlOF{A-jKman*D-@GWiy#K8h9~TR!zOe4!RgiiWfOT=10+etGDjc@0b^`)tqiO z7upy97FjA?EngDj%~8vlF8&mizlqG8qVkR@3F$Il&#jhrpS!{@J1ByGmCrvW@LIy3 zlV#Ag(dASd2|g8DeTdAYVyh3Dk_g($pl_1h8*iirBqSI2nF=Dg;BGn*7kiU%0i7({ zh&y$itg@-sepK|aC(TVK=0uU=`q*EZs_h~OYIu(37mUOd_OWwr;8lma$6Jm(&G{Pc zml~b9=eTu`n;pe7oKAkL;u%h5B%&31A*dd9*u$si8kQB6KiA(9?}#!03^23dyT1+m zvev=Q+THx4lx(l{!=2s14~F8Yu+R76dHE4eJo0^>6A!yT-ic?F&&|rG*bZkrl;7bL zM=WEEM}hBm;;G=LVju2U&H}fN1Ac3dNoel?W!pRP=NA0ggFm<7&p!OQ1Ap$qpZ)lA zFa8|FpDg@XP}d=M6uw4=-)KAuiX`Of_$4fO^^A#f4L<7a%qo@&@S!sJ*FyKj;=~;I zEcY1HiGa^CLL=qVbhT=E67HP`l^vuJTzG7O7s6*7YwboJzQy?>SYT7JMjP!a6u%rj zQfnL%D{eybL@`(4GltDktS!wxQ^|^6un#rDN6u&S#&kKno;E4q@-3Y_hjk(+zbZKw z+*>8$;%BBl6LkSy4Xe2@bzO~GzrlV&^fkXh)@XRNg)+tUHE$rlOL2|I8Hs4u7!|e} zr(a{nbGSG&bfocqvaFhVjUCT1mR!Zj3C#DB`B8NL9z)%m=2@3}yR>KV?cndU1||ME>*L$+_TuAQ2a@ zNx}tqaaOlx3ca{e1IPZb@ZzV;qxR0>EdXVT^WrPX?^2MwoROG9FD@2bg$75VPUUj4 zn3^he&gkt_)FH(tGAoM4FYT@I=vO%_a7$C=(b4ouvsD!+rwnWFN& zrYbk>FNyP#N68}UD*q;u@+s4jZ8Fb_SsJD!WG`CdmW_%vP3=dSmV66Y3SHxEqZvnR?6l?tCxHvxiOd9w5u4tK>Lm$vN}$=W0u4%l4C*QxtxuDG3SveWoO2 z1LS5uK^q{O*a^eNtI2}vVk5QzGM*GXJVItj!NV&UiO2?+e!Q}glvV6al@q@vdkC4AE|{J=d)zib&V72 zAiIqN{3)jS44FB_G@mjh5j2f~casj1H%kK&l8b&tC<}0lY^L6*<*jD-QU@+$bpc^8LnVlqz;+I zyc&y`YYpu&%VZ7cVrB~oGu3K4SC*_Qcqx(jRPZuxNd$%cx zzT0f6Ycp9~Db!$}Ckvo!u&WIW=3`c|*5}BaD%N`1ltkaHwc52-vt2EhCW@_$brd4J zb|bu%{fsP!uF>M=_`1VR-kqsDE4F)v%&=m+ADWWryX_XawsUv=hBmV`3;Q)txYD4R zd7LVCT1{qCvD3+>B>HYAFaBs(OXIahrPP{)H9xQ{JJev;kj2n#VkYs2!m?tyEo6Qb z%Uy0tqVJYllsgRRzzHjJI9G1N>in>bWsc0fuEA(6teaECPA??0so3dWQxbi*6O?+Y zg8VJqLO%u{O>azwn(F0b0d!48iaAtf6>GhW%&B6nUo#~!1=ea;+GX&7hkG`xKO_s# zA8RShD%Sb~GN+2Qe$SLd->tQzP-V`^L*Z4i)hEe} zDz^H#DT%(@Y608R-E3DXQ7-ViWZre{6t~!SUs$mUrChaF=$|FauM3+iD4kw6qlz~@K;}}x%6?N45-WYm?a!}UxkJ5d z^y_5Sb!`;46R)eo^RuZ~=%r*H6$`z@ltkYxw6I=-61SOBHPb3p!qbY6lbP4G5vd(@ zGpbnWF*28ml^!)Ep=~AOsAMjDS}w!B3Ku$b{uG&WT@!7hxH`$CVxCWsIaJK^F-9UX zK1qK;+{sX_I@7Q!H5dsu4^3t&IjD1SG}Hj!B#WnOfSpDL$b_@5nB{9^z7@0lrzr{9 zYW|&DHtiL2%Ni47m~$$X%k2u}ovKg>BP>Tae{sJ8`?!LeU7e6F0rT?AhcgJ8jyg3WOQ_Hxip@gQxZYb81ziCbK}j@fP~~?(o_)11$WJfxVR??7tqCCHnm;sd|VR}R>Q~sn&@BW zE=woKMA72<*IDFuDS)2NNK9e>dSTD6#t-{f-Grur){ ziV4O{NyuI-Yf3`)VjKvGda-L67pX%=t4z|H$QsbaOuA)~I%GZ-yu99&gv3jqEajCc z5FZcfRVL{}WHEFt7Po+++p~5Twu&y3^g%Meisk;qltkYxr(Y)N%VZgJ&DMu9Nnau} ztJv&|rX>1qGtDwdL(BUVh&!Z`1@2ml%#K!eYuK9V4@;*y&+Y5`DLm zW|^e-kOj~+6)EP>D3kPVGN+2Q-eF2&3aq769t!h>pCb#!^#K5a@u+e*e!Nlclf zACWoNHBnk+lKzLxp<HYSQkkUvWHEHj*Y7e(cak|*Y`D*qM9_u? zLB1R(aMx@=LUO?)Py-T@3%&%`BwWDC-W^lBvNya2l>H;I ztoI#ckcPKVlq+so@7u`lQrgt-GZK-3Mr1!_9NnGYds(knT`6=)@2AM}YU-lIdzYZY<=1K&Qmk*T`Hd`u|T;64ICcyD16jOF0S>`O?2g z&IR`eiMaUPBwT<;zh!DYdPMy&`=pt$pT3HI{ol)GWlH!oR={Y zCr}g{s$Z|B$7Zs?;r>NYZhRCgzA2(Om5pSk6f3OnZH4rsSi(HiU1afeb$(6n@?07D zkq6B$blgs6Rk6fvrX-|e-OY`ecI>J<_4H!01iJQ$+kq$@a>4uG zL|iOR!Ucp-Tc$RInuq0EL(2Esr;8ZsKgbe=Hwct0E{6Iy^1Bo~{|h5Ag)!8+-kCsD za5hB4UKBO7I-L+zQLmGzK=Sj+E%9?hOPEga^em7(+&4AH6-Lu4kbF9sJq7runv#$% zbd@Oy=|Z{D6S>fznnF)qt`57u&g67m z;j?ECktNjBrnBIjrjHL-FEXe0Ao<0LY9HvWTKlTGLqqFc*6~&Nv|z&UV8^b(A3S>> zKWy?pZT{y7|1-({IJ4@xhE;8KSSxX6!#^7(tJyi&S-aag%j-`Cko`Cw$(Ku=hdaBS zvwPphcG2K{=k>m?VKv+3Ruf2C&Vo`kUv3vH{9qqr#(pR0!hSdY{1NR47K%-%1GUWOau zaH*LEc5`SDxIfHIKLgOVe~LfP;?FPe=Xw1375~g7PHFD+78#o7{4%z6u7vzKREwd`eU*L5l0OOqWl)x;~|LGDXlP9~vgI7e2H4e!D@ zu0|qdR=v#2=)5j(9xBzdO^7aFOp@iJjm{$q9)68X*(D*H{r!wYWE^e)oJW9SG+34i zhyXx}waI1#Mm}IFn#9Qa$Ru{S=5Ba6J*K}&@kv!WWU56mH`O~ z&;zD|AQ#Xt-7&TO(k3qi>D@1RBc9Oy=_b)XJwp~g9KxuCxc=#fB5KoM?c)v45&)D>E~nH6Lbnl^IeGLBwu#)HyGP-NBJETyxm>24O0DJ$+~ zJ|i)8J<)Q%zG`I{7e`=Zo2hIPBU{NNbTOhAu7qNQ$*h9p8al6KiONa=}sUrtaMKxirv=X5fA`*gniiubKjSE zelGf6%sc06WlY=SWFJ1I@rH>;si1qWn5&GLl0eS+S8|aFotxRW5AkM^`ihp*H-o5? zmPcm1!7967c#!B1F5c2qo0wFBKMlEm{6>i=!UmEdFZpyA+E*VoE|<{1v7o zT#MgmWO3s`f>zVU@G{iUuMvj+GqTv>hDPz@4E+J}yA(sekC8AKjTyMm-g)3NVNGDG z*08d*Mroo{&6Tr-QWKWTj6rZ&t41XJ{>4-SGU4}6WD=SNbGD1UebKQwB5I_kSA*e;_!%)qs>A(B=XhFOo$F6=F$ z3%iL9j5)CU&}x9w?mXhmYFOj#MyX??^l@F-HuAfaE^MnQ32EnROi8$Q-aMst7TL32 z(J9MVg&O)D!q5$}*x|kl#g8*|jr=af&}CB+($FPS60V_dIspxh*~U;qe^40ux5;9M z8ydxrGxTqf-=!G(O{OHIp*yA|TtiLR$MeQxdMVw;Nfz zzd1vk8x1w|^TNXoYLaJc+b2@XHVE7Q3^1#8cw3w?F$}qVAJ9Tp~%@E-z{>M}@ ziHYx$N$6rietRzl69HLOXnc##qb4-IL8d%#Xe@46mD*w0Ld|wuM*!pWGpLcbE0+Yu zsbmtmz>r^)ivdQLq$(^{(K*zF#R@Xz2v``T^D#E$%Yk^{Vn9N6Vuwue?MA4V7)7Y2 zGXh%U5xF2QG)$d8%TwP0vJt}pj5>%5Q}>hK`~rECZTC1N0zw_?@#aT9i2x_Wc)3e^1zX?QXpfzT+8+L9@EcE9FGo> zN$BF^>X?O3A^7k~tfJ(3vMn7=l>D4bdEh8nEl`4ME+(u-&tB#dvXNZ@r60+VN$BDv zZbxhgPP$}Pk#ZrOS52f`K&Bjl6ocW19KrBF$AE;4X@AWW@@`DKVQOPqQDZJ@v5Q*- zE;OLMKm@ckviZV6jMB#iv}N+UT&T#gONo&%2xv{l4!svxp1c)OX03L^x~WlX*Z1X% z7M5%btrqlpQ^BRPc`ccQrk$Lt;yNW>OmHMzT-QQ!6VI#ZjB0wCM@(&RkR|AC`r%Mr zjND$^2a9T}6A=TO50f>cbUA-YCZUUhxHZ|XHwj09kX-F}-cRRP6AtesQ&u{j_b?Ju zH^ezB95>^QS_KyM=UWlL`KGC)(tUi5OhOkpHzsi(BSLf)IsZv#Sra+`PNqC?)$Nw z)i%7|R8Z+|t|gPuh0RTgVB?eAHI58iuA=j-iJU9Qln0KS2!8{$kDIMr3rb6e0jFjv zrvy%!OhOkp$@(cNxPqG!on=kjjFTx395-i#_fy`Q-B8%P)l^Ign>Uk5=)xvhTrA{P zQ1csfjx|y91~TOc)EHz_WI~1y)(l9nC2*3Xei z=%O{Qs;f7O3ks^h^JzMZn(%yzQ8vinq&|v2HJ}ACij5eC{fev;SFO_W&yh*!T0S;q z>}GMIWL6{TXX(6ZLf|K4%8G~j5hD@l8&bzgCa5>~>TEXWCIGV&m;n@(!z18x@mYyS zW9!Hybm6mCGpr`4K}FR0boMn7bq<;Gz!9}3sLDdSUM}Txt*CVo`%Pt(?&nT230?fi zkI6=?i->SPLTD8&`{>MSqUBaH<$VCsY9{iXNmhu8E=t$dm_;BE{#3^lL<)^*&P>C32o5lh8$usm~EYt7v(G&a5U{ z-btoBaI~DS_#B+4=#F)wT+UZa#g)MMGMR)faCVxyoDlg{41I~twEWC6rEPGns@g zR^q;VQHY3$BWJcY(pl9+%6c;86A~#syvl^Bgc2zQGKncbO1MwS(OK0*$_vSq2ac5C zpigldo=De(&PjAk1(kq#J(+|qV07m|VQSasvnE>?{#_R{qk;?O0lo5YgUe+`7h`!Yx=;Sktr)a@EKDQ()(~cCh|UCNWujar@wV-y-(~?dH0*< zp?>EE;dibhH-~U6qx5lp=W6o16u)yNBN6F$)=r({S?20D?n{Parb5f0D@!J!X(K0Y zZ=WmUNKjVQ!5pCTsOez#lPN0>=1xXp>aelgudiO8Fnpb^Ax=v?VrB<-Y zFqH+sfC_oJs9CJj&rLi4I+aX97Z!1A{ajcCMOC4(iq4`YG**x)M?k}%yO2E&cSQyy zWRLR+Q;fSk&PCIww8s%&8;t64*vAg)x%{ErME8zWJ1aVz17zccBNt_l>u~my-=%ao zcQO(N9gcCoPWXK4{bczxbs6*d)T8A0Dtc}A)@!<-Pi0u?{(Nf8cSRA&BjSst;tLSr ztI)*FGWj3=sm;egX!{S~XFwm$oSgCxXEN0&U(S4kDSo8)<@ibDeH$EtQGvO^Vqfzw zXMUWl5#5%2q28A>8P?raDkp9}N@h!G=pQj9A-hR#C<9wdxNtXaKtgh{&r}e%v)((k zowe{;y*g{=;zCD=713coPnJ6znkauPG1 zwpNW=fPLn9iAMvckx6KpD7IL(==vCve8Q^Zfm7&AYK{k1k}12Wk&SyfBQbSD#gz;j zxark`y{~SOmxwIFE>rPj7GVdOgf2khYL5i~5|CI$$&GYQHBoW{nexCY*3*vi&(tzrabCQXHvm^n-)p^KTgg|ZSe@$#z(YSQ`EL{Obf zIRZfjafl3Mcn4=dLVCL&n|8BqD6@WQLzye%>g)=@3<+Nv8r0k`f|@@in=%~SsEN3s z=KbV%DM8J98Hp1is5!G)EO3V;RGlqY&Ae4DM3<=glBouyH~J!(gr>oqJu!K30WKl% zNKYN89_b(HylZ--zb8{xJknhmc; zh0aNI#xw9T=e> z4MyqXIlld>p#xh8AA*C~IasoIX(1wbE}F_KyDN)KBHZC9=82uQb>TDO z6H|37V|4a3-Aa~BS?Q4uFcMSOBdyLIhL03YSlPq5avO%@3>@pD!0|>?0VO#8ADM(M zIO0a*0vw?dciL|p8ainR|FiF(0Y5Sk{5m?znt*Z0lut~+M0%5tnF=TY^A}_iQvsMu z3#w!J|LB}*;^fcBln0KJh514*#+!WKR4NIM?~qC8f+KE)kmpT&VycMvZ#sLLi1<30 z@(F~9NOy7C1&K#Hr;thX4H02JVkMnDO++jwQyw@X*5uojb{T44!WZ$h;*TAsGD?qe zBbkIQKH_$=3y%>cwCX=@pfjt9mg~rrPgt}>dXvMZGD@^G$t0!-En&W;PG?pVEfq55 zfum(XZ20l}rb0=0{4SYWTOh`6f9_$i%D zO@#cIOnKl4S=jWPYa}u*T$^~jasioyE;4jSus$(WM4U@!PZJSmktq)z5$!@LCZ}@Z2iH?6Eljt)#!hFX+(V5gl$LGnEPYiUl>$u3Zx9^z0E^*vBhfJa$=;#tw^&K?F-oQ!fewSkU2=UGUpHhxLaqRfN@Nvt-TI6@RNRh?t?qeiQ zgymsNa?O0Hge9d|_Y<)~?9HYkOZV~{WD=SdayG`K!#IFoftX)Vwc~jMok304a-2+A zaV@W5B&KeS*wV3573#di;o`4NC6l=LD>4aPTx`->sY$)MMnirOCMlI7FXWlU|4v&ipN^m+y(5vkX7YkM%Pbl3LSMAtK9^lF880Cp8ESBaO&oGHGeWJ*GI zzT8#@=9Y-zJ%a%W$;ERCLxBBL8v!1bC#!fl4`Q+l5W3Eob&XE<0<9dRMS zp4P1d8LG5$5gCaeleOY1Rzl$iWD>eixGi?%$%YqF zOdgR1pdc@|a_Xq`dvxwKVexG;WmmPbGx#PWk!JYN+j*QHjUQGmy;nu-vo4|z;uIvE zK_;P#qZBOnKm#Ix`$o?lgFWTiR_Zr*um@$s}~abbG2`auuPX z=w`YAnkd>%raW*It?P***%%}6bib*@5>H3TBy{og!hYaMszgOrn=XnbvKnN{Cn~a< z?JBR9WgV^8n(anZ8NRohN-UA}IGMy?kfo?ZMb=|ID0GHGJ%d@|*MV@(+=cGa7Sa9syX<&?eSeliJNV5K!y>{5h^qC4pVXrgEznexC< zq>L52lqVZw1fGtWN-Xj8Fqwodp3)jCMyNzZ)j1-m7)t3OPlF3Xkuw2 znexD~bWy-p3H@O#(WsS05%s8#W7?)NOHfUaN$7&=Md`SzXr-v=D$s?|L|2YXdEn^U zq>V1={38ObHP|(8ZbEZ=6Z>sEB(#T`Wz+y_QV*#6#RLih2=P+G#4J^h`ICN$6rJrFF?ZEvWd} zPUl_|Ki88f4;(+ib;&->#d@Wqrs7H@waFxOk(AQ9r=?{QNxC6*o|lhDOdO7T*c9#jlHO6Ok_LvJNh9yo@A@lu!WVm;I6 zOa+!`dYVi^7fmU}OA#7TarG2k5=~tF4Vm)5adlx}EZ2lj_Lh8m&f_xdzcLkBBI`La z30-7m(;3%A>O{rXvvgTBvGo%&<$+^sWdK{PS}RwMh{7)(O+2DoM<$_*qqxsO>unSr zVe+e(IiJqACT7kdQyw^Gf-}kOrZwJ{B`~t3a=BfBN=H!9A_7VKO@)>o=}s~UT_mM6 zliWiqD!%s7rP0LKtz^mr$5(KTaSu)M0>Kd|d)QQTiL!^tBy>@h(i-Df-Kbc5kS>!Z z)*c{J{$GVPR%0~+Ywt4^U1IG?GKmuiYfLvP)}Eltq=~h6k|_@yYi9*wE%!@pSS6BG z>4<>VS4<_9(E2i&gf6u1OecH~szOE5m*^sBBI%1{$^%Ez$pIv>Dx=L#Sap|$mn06_ z=aEV1q9^XV_nJYwE52(MSxIU(opDXf%pg-9IA&G_FjL62a;?d_6^fcGP34n5XET|E zE^2nC<8y=p6x?j2v#yDo^<>He$IWULHx?$v!`;nuaPMa96hImpr;8d0mf^gUT4kv#N(^g zWD>gIxiy`D2f^d2K*7$*bmld&vy4o6;MfUz9$qsFrfZAg(ellvB1+G*olHU(JSlk| zzYY}iTuj(uXxcM78>zcUvYcl15<0j~Jnyq$WGFz;*8{x6e zbEYCn=sZg%p$naqypCT73VMD*=Ux*%KO$2eIC_G)L8$bYE!2)wdjM$NrHMyc=aWh3 z0w|^2U_cEDhR&f2poyVjGUb6|C|Gf#TY1r;^PQ%mN>8+pOhOk(`_mb+hv`B=)2(zV zG|_YmnexEV6kMGlG>D;Obhq}9siYE250Xjfg6Zy*!6a3oVCez65SmzeF`4qfv9upf8Pq^XP&MNg1P=%Q$EdMFY~Q1J6kI{TXV`9m`0f#YYm2Y#aawJ)0rDnaxm zG6`J}rBq4D-;%f{6eN9-E`uhL{*g?1;7AIN?%B$XmQ@c;49(k+IKrMyCZP+Ult%YL z0Sazr&{@~S%}Hd+1IJBp)eqYjlZF026gZnr1(cp=BbkIQa8g?JBQ>BPXFZ*FP2`M_ zDGwYu%L9EE6xeTtf~H_9n*>dcOhOklFGwfmVZtkTc_E!`O}yMoraW-G1Y>1b3f_CU z#_LUGl(=~Ka=0(V)&xj z@V)dZeEr-00wZxEe86`J?@f2eZ^Vaf^7y5x$kHYLf=oiwLe36aS1K{(e!0~ryW$Cd zM(0}76F$=$0#o=IU$-=kRD=H$wh?>A)^1EZk~@z~LKhHsqy`ATCe$rsXVWFn1jm_V z%1SqR8Y3}vAMsQQIXaAqrSgxDyf9jOUWd3Aw`@x(STIshkai{7eW(DlVr*R$C6w4JrYZ@QATup z?=h8GqUzmb61u1&eo#jrRZ=aguX+bv98G+^jZAsq_zLk=UEjWnK-IsRN-9zH&tww1 zs7ljUbtyx|(iiALXkzIf$dm_;r4V1$r9RmxBTzMWQ{o_f7MX-Ds?zjT5o%HKHJvVw zCccKqln0KlbAvqTS|y4bSP%Pc6^lA2Lbc91TSCd%$1Qyw_V+{G)t7{04aeuU3D zZYrq6)oaKkba6#oywb~Ob?HJy(yQn)Xd>yAWXc0al3VyT3Q4j>MqujCO+}WN`Vg6f zE~bcOCbcmowW6ZygLG*$(e)=}$^%E2npgJ~&W}LUw@k&9i24SZgf5~|%&Yq}p`z%& z=n`n6=s(Dm2aX~&ukO>GY>N?iT6J0CA>ax!30*v;m{$+giHfYHbXhc!wTMi4;K)+r zsIKz)5s2DmDyZ~OTgfDJ5tU*b)ujs+N!QS2&_vP}GUb6INsXhrv={58?lToxVya3e zp^K>$g9-{iX;D!&b%gazE7q+aOAi}-+ags)q%s- zTb{Q$@v!Y|G6`Mm5SO6$!j4daYam%#`%F6fn&>%=OnKnwaZ90eqo+ratSqU7k3O zo=zsA3n5}juU>&ruL8dnO3?%P^`Kzr zKj;!@V(8zHKQoXnMRi~U2#R?(b!Tl30)Yam{AODL51~U0GNV0I)l^mq zsY7HEx{x~12S`bED2OW31<^#5MW#G(M7f_6@MRtmQKH&#SkUwqQz<2uev?c>7fZy? zs`tu0b}2$Z(HrR^Xrk!JaE*gk#tur;xNba5>qK9dM3#vbkUPyB;BP5#rGVh zi=c_3CYf>siVSKQ%W}xPAS#K(8y63qG=%@z_hVIES)KWZv?TM>q9pSt$*2l%a;Sy4lFT0`zst3^EXn*)M&d*$ z$vk^6*Kg=Y4gT9yQt1o7P9~vg80Rw043!I@5l>LX*L{`FqNcC=N^dhyVcF%AUFrQb zVI#JqE#Hzj@?JtFp=HHREeB7kxA$xM|b0WgNI&TWHOTLLXOmdilGjj zcTEhvo=kb*7+T|DNU3rd0iI8q$|%9}aWV;A@Z43ekcHIejfGUb6IX_behu4Jv(3==bP2AaWeuHSO|+~gQyw^4&I(0~Y-|y@*=;JR^f^1pBy@43JE;-$ zIbFDsDo_!0Go5u!1Z^i%9yo$TF2`4gFakCAn@T59bCgU%7d5829G}=KQrdKOHIdRF zQyw@{L@vjtGTF=`F!Od(IVENuCzH^{jAQ~@e_9-}j^iJnKvln0I;5!ZB85{y92 z=S}64sQDb3gf41KN$BF`D#P(pM0w41bVfDNaXy*yz|nE4 zhmK$w$%qc=fT@VGL)uR!p$n9o41p4qUG*q;(s|az%sw*Zfn#QohnXIgGmn{yC2{gF znS?G*t~SI;RGG|&=$vYz<3Tdzfum!IhYnE~GHgBI2TTQ%_;??ggf2d=HN=OI*foMI zh500%S51UGL8d%#ge>(Tq(=qJubN6GA@UV630;U>XAY65a+hDGGpmV_FOew^93v|Q zMy&B1tW?Z4Te+6i3|&vR6~h!VfaKxbDICpj|Zf#YPEA16I3QohMlGzpUqnS?G(wi*T|y~ zT0m|EEsxSU)4_>+SB~XR744z=g1^*G#}>obB)lZzm*{+IBIAo>$^%D+h+ex20ERh`g>~h z_>kFjel?LYgG@OBDF#IXWt~A@kj#LDtakWiaOv8&JD0{4J8VtXt)XnORE;Qf_+?S(@NP1W z!dnz7Ag<8i9prbprj~^c_nMNBfZJnA0s#l6-ehFzwWhYdD9+aHR;e6X&GOsA$PbZ4 z4mUE29%tkS$?sB(`~V{nSuCC$Au~Ib$ps2KtW(%c?Rc)4P)d+Na z&Qv^!j;F~abkT9S4m!ewRRQu8ok>lA{0*7%zyY!}U$pXvvbTRAKQfoj*-j{De$-;ILRUUMjb&2FFDNCN91{@knVMnS?GTF44h+Uq}@Y z=hKvg28i?D!$shT#xK6~rYwzE6Ia zix-*E`i?0HY3%K{Lcs9+#D{{ppvXrg-y^fzCNpK8?-$eGIDkmGNShBH&7$yaHFFt;*5SO`CW?9 zSDBKKMqj~5MCLn;^Nn+E*tKJLTP@$cpaED)L(u z)nCE&c2-1!eXV`f+=!ff4S`L9a?XNMHD7MSp7&Cj-C&Oce>rDPC3m!7)mz2R&S}odd{NR&9Y^npbvGRWQ@HXFL1lC^G-bmQcCfgp*t`i~Wi*==){(z!7dh zqW{k2bPrEi&);W#{=Un(J2Cfibv?>(l(PwKa}LakS&eG0+<2q3-Ihf#oiDHDk)$)e`1lDz!oz zJe<$P%;3=Yps77%OXBwEXG=1Tn3wIS!f?=P4(F_F(nc7a0aGzW9HkYgX4}0BGQk_Vw$Gk^!CXj zDqg-Vov0Xvjf;wxkl&@4bs-}Wt<_Yc1twEhWEP|2Q1^E^usk65_rg9zYmv@$ovC%D zGv(GbXmPU9&P&2Yd#vp&Zq@Qxh>x>g6pZowK0x=*>Gs9=XNJ9#|G5VLOtbg!Yq#T{ z5&H%FXgB_uVPA%SPO*3JlegfXS@t&kGt=I}Pu`1vX4qHrqdWMY>+sJ>_6R@P%8xGP ze{SR_ck!dm{LfAN&$ax|o&3*T{LkI|&vyJX)4qfsUC)m;;GgC8M*K6)z7_vWw=?|D zMf}fR{4>K|&yTLcKg;YC;qML{ob1G(TkvNO z{@jK?`|#%u{J9H%_T$gJ_;V0{vhZWssC^{z&ed@0-T3oI`11_@{1ktl#h+i`&-3{6 zEBra>6!@8rKQr-XHvY`TpZWN+5PmFXIwbt#Q{mK4@aJdv^K<-p4u5`$KSOKaXBz&@ zz@J(8GY5a>!H;F51(3*N=fbH!fFH|7jpM1E7s9Dq@MjPFSWK~a9><0@MqCzCGOQD0 z{-^CMVZ%o(j@_`v+NE-VDG`{BedCd4#}`M~EPKgiw-4h$(r5;F3p(GI@k> zlSha>-$-f8x>ehq(IGoyTzYTw#xlHCgjXiY`bWzKy)XPv`@>USO(u6Y$yfa%H6L4(5 zojv*v_KOLe-S#`--^c8C!7uoqC)giY6^UsuSI*)_k9`qdA&1z_9_*}L>&&R5 z0xuU3I=;^2#;Ps;Qypt$)^FOhdDAdtjVn0d0h?OGHI@_GGMt$xcbseTl>$GJA(KS{ z#kIRzz~iSu9On))g$Twn6OCFMMnYxlumwnc3W)pPlbQk=`Gg7p0)EDBPfY>PQY)D} zv@xsEvH!kb@=xSd;_1nN_2K$2LvuW#4S|5)hWk>pVY5A!ajR|GUkaG;mXzLdc{uB3eWh%sI*HvB;M$bHa@dNYk( zVkTcJm!W@wi2>I>nN}@>SLB6egl9su-L5Nx_RBH>43_#UM8=QIuLqC`iQFDD7fekF z6zJjgK>9k2K=F8A<=M9N_O035_umT8&h|$n`38U6JV2AGTA$R%I6(YXQ(3}al<9V{ z6MbYpQ){>C?N$cIbshT$0dSA?@6Ee!-S7Iids9{(0$Wh`gMipn!)+7p=p^bKZ$xo3yH|^cAExUW`EznN;A&(^Qc1oBGlbzDdy>3Nzrig{5Q9 z?2q`lRwD7?aliPxQxZSd%(OuEjy*3Rb zx9Pxs``x#1-@R|gp4}birevH-N`5Y>7|p=a&PFL8HCn+AW1BgjF7aT;aW~QMF--b9 zkTU|lBxQX}q@xcY<2Ty=l=Xq_u<7=w=L8gz?z_6$wzD@mQm_qn5%ufoo>cYJ-PE0Z z=`i0-m2q#mb82i#Q^s_AdP`HbtO5*{Ct3CTjGJMFk#$6GHvxk#?cOAcb_S>r6dpw; zf<;KmA};v`wT^vB0Ga9P1C~9epbwzp*GDc@lVzI4T*1n;8o6o{cA&Lz5q8Jk6i`cy z2P4{`*#ewsd-N#c86@LZOiYd>icS z*`CZY36K?pf(%}?_kZbdT#mA3xI6#kXpcd{bNAiU{4V(a(&5#Z^^U4Wr#>D2%78D4 zNhU?I91#uv?@Na}0fqcuI^0{#+uhXrm=1Txj4`ncckZr>#~u0+5UjyqN_%QwA)0~5 z{a!6552QRF!BqDs=}iI5r6f5idQ~_N&dJ4i2IcuE$$g7C-r66zE4f4#hsXUEkC`yn zmYd(0J6eKV>+khPa8lT=FrJ~UVo{!tGPt^m}P1JSd{0Z#22er-W8BK zCT!P!0c{nFLYA$9@dG}!hHkKmMdi*YY*)yH8>ed?S%2ZULY<{mx`_Gp850OA)WUg{ zt2y-7g(##Mqmq)J%b1-tP)fO0he>7&He$hyWD$0ShVz+mZ>lvikpAyDH|u8OLf+6# zs?XfEj?~iP7D@TJjoI)KB6*Z<^R=os)uO*4BZNMzuNQ>;oW@N0g;0v(lvkzhIM*k! zze~i=VO(p{$7!yaFF|>kPXyfZj^1f~eHFm`nfBVk5UQDK7lvZC^MnwHvJBfjX@5E( zc3f|ytyhe3{~}`aN9@+_+=!zT306+c*}aXks=bCY%w))_kC>m=w6uEr%{%tGtR~i~q~+(7=KGG+ zqS_blBx|sZ*3|bMsfnJi%LmZx9?hZ8`RgzB3D_NY^pWxFk>;tQx%7IF>kJzaa2V2m z>>|07XztwJ@#9^ z7%NbYY|8FVFSp0|Za{WgED|NV^znqqUeQ2wZ;_5)^SO89m>ybWkDelC*9;aT%(&HO zi4_R6=Q!ft5iCa#Gie@2E(&(twF!O}KwW?IgoO&y(^H^oLCmrbQ$2N+FnE4S)P(g6 zf^X`RbZoB0E6@;pXMaF|d(YDYL149J%)WV35cpSZ&bqOCcVNtZ0JB$mi|4dgAI80g zIYs{}PIm(2g}poOII`j1#aG?Hxl1?1h2z(?614#xDw-K4A4cCIWoHH1r$Y37TB zOiiyBFj9VINr2H}7GGgu8PtxwG=R>SxujlAQN`si_Aj^;tdb zI;5ce>KX34dT^sqI_L>(7K+)v&1ZXerHs_;>9r}0q~x}; z3;V7c45QM~O(2AdsmWr57+(pg(ST-RQm^#ad7+c`;`Uyzhzgq$^i~4R5b0_w;3;BuG4#YvZ$k$*qFyy+ zIz!KquFe7;q(B){5E0fM%X-D=wgxnoz^V5Jw&zg{hce+3MtPRLHP3xF+`N6;9az0? zzuAziha7^oKQfD1)!4J?VBM=I2Z=g`*86!`zhH)9zEQ6Qfb70K@&+=P5aA078!|yQcc=7TX zKEo{Qvkc6EWyZh)yZ7Gs-G~?QUc8qt8ynoGPi0j`#QnvM8#iv;h?tX{(61^{PL5MG zHx*@Tvu#IE^O?cL6}r*a^kfeQu`LOn4cDvr$m`PO3-!wv>t|LkuU*=YKLs4eg9V)P zQechT8L1c60`ndPxT6ztd<+;A2_LFJ48cGP5X>B?v7@IMd8O&Z2hia+J&5LAGq{*xd6sKtebdlqDf&A}FxT&6W_~;QSg# zJ_V-BEQD%B{rD`7w?PtGOFx}I5HX$(#9e3Y>oBONqtsRCOynmpC9G)1#mGLRlK>j9 zZp@f|!0GM+wmTMU3v6oio!n9ERRJWQDX-11$Kk9RJWoI2OVkhEIMEFu=uxuh03;V( zfv8<Zyk4@voasH|&itq` zA2Mn7EdOmcPHZ^Ymn=4C&d<2oY9_JqssB41p%sXQM(Vfn0HUunjN&om2o%VIk#DI4 zlnqVGOj$4zyt_0g5DHEw6cC6#xsN$rTe?Wlc$6X%$7B?6;xa^H8;Xz5TQFm|uDKM! z03beLmoJzxJOKb_D&fh!_VxYl4?BV>5QWI-h{BAS#oJPE8pX%8(4j48^Ns zTxSZ1XgcU@4o7fx@-94N2-hElW(?f6oXJaY5hd1(xlRg*Jw6v^fOxiC{CTIB3k0(w zk-`)^Q&+oas`gT`!0OtC7?KtqU6+ZczwC&sKq^cmR&+^bO6zd(xV}k&(3}f0BrxTq z{MrqZ7J4h?O3QIu3hZUZO3U_Ne*K2Y4A(j3%FJ2j6bM1Y%8ajae#?1~0XO`Kq83VnMIkVWwR3g#{>NJhq3slz0oLAO67U z*<6d97-Tc7`z-LTZO!GYT986gQ6}}%^A^br>pqJS_t}qJ%Nq+)NF=u1{9{Kjxt2Fk z_-0$)SSaAxOI#{(SG9bVQOlb@b0ky#C@LN*u%+V6AGw?>3sOjB__XmEM=ZJ4Hxby> zY*EnZwJ?Mxi98Y#S1-VZhq~h+B&2?4(CJV6McwrTo~i=K)qOsc!&Q0ZQZ4~<%JT$K z6S4@&yfbL_rtof0zj1v({>dvV5|O|Kfgb~O?i{qQ8)V&=p0*Fw&R1p~$Y?8;f0QCK z0D9wO2FSVx9hv3vtP*^L^sG7T@AP(yCR``bzav>2VQgl|8W`R$-#)FT3)vDI!8cxrnOj9c=JlJbeIGN_ZpTw zTd)aWf&SESO?fBFmpLNJvtW$GDQ= zHn@r`OEyjGMtT6OHTk|G1ypGx!{pOj)lMR$|tlu6ETMu8a@3+ zXCPlX+wVT*h^SoMRIW-fXO}Y*iiGFM^a(wU91s+)Wr}6`gb=xVV|mi3LofrxJJ*u5 zoNk_@*l>AVve*D59}t5ar$h3J>CPez)UDFOLhAlYsFAw62(EAHoDd20MWea+=a! z+qR5%2xv&{Jo2NX_50m{BgD}hsi4Q|w;QmrG8r`nW60{8GzLw0Vx(QjISmP+8p6Z1 zHBZui2vJDdgkNTcj~)5WbBLF38J%_dJcY()?e29)Xn8iQ@^zM)3X7eT2;mA%i+P;C ze!B&aqGl!$6?6V9;7%|&k2_|;2@MAp2>!=T$L2|^iou1mT(Pt&3%VNs&Xc`j0Sbvk z1%JPG&hkKKsSJ5ILEk(^EJ_~eQ=0o7Kj26uPc$9;zamnTS+jS1(1VnHGX+novW=obSMRAuQUe*0V{fwREu zl5pmLJi|Id67~%6-Htr+#6KdCN&8>y+#rMRvHm41h_d}3a|DuS1B($H(!=HuveP=P z_5j9Av1<((5=cYR(D;%okJrG!g=iiO2OLxPW3X^)wv!M z78`ElG}j1^=r$)@`qPe7@~jIixMhBug+j#{NPW*t=Gg_x03YH>zCigY zM_2QlG%to3w$F>@gJhs{UOev2UoFUD%UtW<{`(`xqt@{1&tHx*(MRMg{JtZ|Jcs!+ zG$b$-FqNxVT6P9LH?wOve^CzYCrAI#5oTxJ6s)hVpFAg?gx;8ovBU|>AmQ^sciy}$ zt*k9SDxc#o@gEm7g{lh@wg`0}ct(-n1+3d}mO$#08H_vXL;divP0nTr= z)9X#)q#^F_`kAe&Nq4W<-dh?*1)6h{=lX***dcD@Wd7&QaL==KSpY4}5&^Bpd3$|E1C`{|owSSjkx94# zCfwBQo6gwB1M^%qlV65rCf%!-FUjy+U2J_5D^xax?maUfwipU-=XVPEAUXN6=FGj$ zTp6@*aZbxJEUAyIsCD<#9EICbELh?Cx!@__-}0k_C46<P z+2l+iH{T{_7*I&Oe3SD*#{y(*a^^*rdy_MaAe8)=anO*CiNMV$uvh53nmX9ol~Klk zpwKyt9`-SKT$eCo{Tu@_K)UM)o^rZ5hZdH#z6i7Xbli0g8dnld((c0Awdjn_&?HKmz2+W!>YB z>SZJ==fiEUoM0 z`XnG3(B230Yp((8sBW}c83+Nwq~5;E>8Z1&agIv+&`hiY1a4KL?O-$>}MRqG|N6{8L6G1_XZQ!~-M)Wu}AVR!57W=ClA(Yqs#m1>&pjvR8 z8VDf~uyOi6hyCbrnuTTk%6jo}YJk%?)v)+D%{X20Y^VKPb+gf&!24emM(u2b#4&2@ zLX{~V#ECw*>j4k1B`G+Z&J6qN0TiaQRo!Wf8hwbfN1vnezz0G#AWmt9BkzHfO=-0^ zY+h@_P>4?3_Ml+|D|nplj8jJ*fFZg!#r?SPOC%3$b)gWaFk>0(ffAySvPI+lKo4Z$ zuFr$I)koLYmX~MLP0XHgXPA^?jE!<(0&F3tq*Xfpch{LxZ9@Z*|6aP!I11 z{GaB-cfTy`|>E5yh`47#9 zeOTnq!ag+T>}Q0dqSWDzMnFM`6U8l@8-d7}Dx&E!K7IVX0}0?& z1BG`^IfGJMj;l62qIV3EMB>bA0pqlmqe#nF*1=I&S-r5oce;3ABcTQoQQ7WZu%_LN z^R)fR_2Eu+xC5`-!Hyh0!x>EN7nNYO16SJRxTM*GLE@93xNzq{E#!rjMJ5dZC^X=lp)dVLNMDN)i}=kB)cr{*Z@k*Y(agI`4rHAWS>o^6i=5 zaU_s60me$;)XLf=d44N8GVI}k)=CBzwo7m#PZaE%Mpoij3$;i6e~wrKv^;XR)(66$PY<8!$92??N!Zy@pU zSdLv|<~{!5m4u+ZGex_5ueB7(h(K8PlQcHq{wMk|*cerh-E+@<_XIR-tCu6rnuVhZ z(722tJ;Gn7vZ6im#^4o6XzqRQL{`r0W>bBJZ}odcWrev9QLbC zxWNv0{9k!P#I)5+Vww|o^ytEkd z<5NYDiXFoDa3);-)pJYBYu2dANct^CJ#6VLpOZV|(Mi8qsE7jwnUDR9N!bQ%r+f#x z9CFTcgly6f;3+Ii{iim(mCiNCraU(Hrw=;H!3UJR@a44N`zm z3MG!WVM)HW-`rm1vQ44h9cxP%`jV4+k<2G z9lh(mfUwXKlta42;~uBZNB|VP)%#xOE zG0xpEnW5z~jFeiJq4wp~$w_R~$RNJtsM#Usa-<9H(k-D$3So*BwF4X9gEHfvv^vL1)k4Vt*1m z8?IOLkr!N=SigL+erEMDo>zEhxjb0FIWGm)$ej@!fP#lUgV!WefIB)f$JYr4MIyvq zAckO|1^hndK>ZU(Pcu?B(}@qD!*zIcHc&bScLiQx10X^=a_#+fH$XPH>Mlz*&U(AR zbdW6@d!_yLH$Xx-7nCI-XCf%D%*~b%-{Ab`j(iGCmstqain`d-=h7!KNJ4Arj4RZ9 zqjo$Uh&$5S*P(biN?nD{M1BHO!iwg3A4AF{0W@IUm@)kpr@IT-?pUlXu&EbknKKiJ zssNJDl-JU8!-jFy=Srho5^6By3xB@4`%-ZO5un`wO7v;6npII-bmU$WSoIX};} z*STi`wgCJ=M`#6Np^^HnJb+?1mWOx@IRXW;VBlWBR%6l#STr;(GiAX@@b1!}Kqxq! zP(UE|nOwWW&$jYlaWaZE-5CoV%IwxRf`c?)I?hvrKW3;^O2cKL!C!~JG(BC<1R zwXg4Yf7TI9fha^qN62?kXIdz!fh1sY`IJAF)XS*9=tw5x@QiO(OP34`rRZCFQlMAu zD*+35_UUBmV{dfl#IHJ1DG-%OMW?2W3$v^sl)6yNFqsZpKt$6)XLC4$E8%wG3ZF?Q zbasp4Z8LcZE~3PGG1o}}vB&4a3`}=yx%erkmkR{5B9X!rJ5yJ?XsY&7vB2uug&2|+ zTO$6pBd!9eFp*f%C7CI$!^PwJCIv!sF36C;l#}xNH%waSt&}S*$89OFml-Q9+kg4P z8zwVc=aefmXPHwV1Q9DU9^m{VM`8scs&Q!5j5Sl@kc%p`#>wS`z&+#*xa;cKMsFIt z<_aQC1)UHJdesgy<(e-nKq2F?J=`7BF8qG?|8aUY*CHnd*$nGG3%qMvbNQ+kq>xmU zN&Sm?i)4m%pT&s#%uTN4jRh$r65DS6jU$*`%bO^Cvn_8d6mSXeq+y>6Enj8S^5(^l z*@r>PA4SDO1-4Y2`6HKeWkCw544*b$=7=TN`X&OKnk@=Cy%vVhB#}o#;tmG7|5;pi z5E2r+$mTms~j=Lw=FWD$~iXVC0TTX0)tpmXP-ecd4IzTO#I^OYICAyvA}0O*aA86fL^xg)bYo>ijnLweR6_IG-_ zMH8+QXy9@%g2yE_mytb!dkscoc=YfeIa11VR5(F?KuVxaX9@+S5(u38Rq~`>Bwz)I zl~0+x*^x`0*(??n-n>#QxSPP>Uc-`S=QRN=BpK&Umcx#S@~jghaf&M*&!1dhTe-5o zS8Sb_Kt+?k1(^@GTmxX*pTaw7ooBO`iUkLNi@;ee=2-+ZU09)RW(&q+P8a7I1(Eo0 z%~)_0xES1JV=j~L0t<;ptsL*Y0kXlxV_C9s0&sc4mC>qWFCpLVNGMOfbTmr2iY%5{ zp1|T+NX|ux)LQakM?`ZOU?nP%v!cvp@}mbB%eYu}j6%LR53u)xNb} z%;T1EFri-U58Ope1R*EAQ&kg`Oj#a&=R=D#e^#&P*r(o+rVl*KW5U z33OK+2pR4`a?b!?9ta2u*D}Qtd_suaEwMb=(;=7v;^96}w2^S;oG!YYINdx)vElN# zWU&EAKAjA5916)Rw()iYqVV+kCZvE(@WADMch`|#9v3Pn0pkg1T`|u-gb9KScHSUd z5;th?ZnWF@Mjf3gt>RR^Ga5GA<1zhSReywlhSbg@Ke?Cxm5vZcbEINAZdW~&?C-S; zxp^TWR6}^Uw&uz84Tl6iCRPsbKqtMAkafS)kx8ETP6RSFJruhL%|Z~G6EdElu%bCT z?Z&mt86o<;t`KNvKFE^+mrWoj7XuSiW$7jU ztGP-7XMx!z;miSfhIND_>>1!k9C_r4e?%aY_P^M1K?dJr{YzF5W&8iNBal2BSd8G1 z9yW)Nl-6m%`x`}XGh|30`$$9MORhX#0|OVLc>rM|hN=5gj)+ROCZ&uaXKF0D7x@zE zXB}ze$u724f42p7NC$$t98Mz zIK5Z4Jc_RiEH>Q8X|53-(QQt+^nY`tl4o6D(H#>1OzQ#*gJ)(aU0KxJ@F_jGOWfkcmzd-2TbllyzcE+R~li@^BI zzMUgz3{NXpceWc43U0Jo)ls`YgtW);wOz=uhyB6pp`oeXlDt|dRGfj-_e^n~U7!r` zA)e$5l>e8bt9cHX7sCwO=f(0tGSE4B)xG(v1zBvFYyF@8{>bsDHN5)sm!nMd5jhKg z>IgE=8U73n2@C~H>AErlumm4e|3b}nKuRNtLrDvi6@~q=3*>y!ZJws zJkXstZ%Zp{%a6*Zxtnuij$z^4<=LRkP)q+Xka*#O;&Usf&qy|V^JddR$N9~(+h_P4 zZEb+_TkZ6EQ#fFlay7D=boYwwy`^DPpgA{rZaqkY?eDs3RZiwFIcuNl&9ik`04>bq z#U8Ir!{tol#Vl659`HH*mcI|;vuE#OMloJ|*3|ulj{NduGN-9TK#seH-l`c2MQFUw0v!wqxx99$lf zrk&AVEG&~83Te#9wfF6g9Lw?@(@^8&Q|ytoG%HOQ-5KcJB^i}8cHC*`4o9RnV7Q-O zzarlgpLKB+P$Jsz(OAfswYw`f9XRmx{^DZy7ncqk*vp7}!Ud1*))Wi}oX4JwhCO{} z;y5t7Z;W$9ufx!*0EZjjj38YYP=L(p28Kj+GaSwP-MbwXC|fqUw#77U3CZW&77GIk z$wqC9y=~6&$h9pNW+UgeSQt=99(JW7<~)y4!d<~Ud!Mgvo_hR5kH-6rPQ?Mxvz-)?6ZP)NLdw{z9802#ZTd6DJb z?F=JGBz&~H=dI~K4uEz?WyZV~ zfD#gdv$?nJNFyUpH5W3yOo~6m9Dwgxb;%+3SgZm|>pHnU2}lOC_rd(yYrs0H8?9Cb zLVz%#w;#Ugz>5yxzwVCHWoJth0c!6ccZh z0YPvvL=UQLF#u?IdpmF;uG`V4uo(bt*7-bWf9--cY43!M%z)Vp#A z?xRl6W+e4zkRLz>CNAC#r?cZ&yNvvvV&sCohIa_$it9T+*92szzhq>f6cmt^^zyxq zgfdQA6hnz~MRfjr1`2oD$kS@Xq8GZ6e}D!e_RB^SL7z zdrpfsJn?d|CbXY(1e3M)&99m`o1M;Yp_BZ$Q(3e>lmr#fZFe5~B}X_J_Z6k7yB{N) z#G;=sNy8%62KrP6w>i#yXXHIf?y-Gwf!VF4NG#Ojgbe@5zVE+FMRBqiH0| zb=vPZ0-C`GO2dYhJNn|*Y()ZaT!}LBUo+wP$92`U;eX)BYCa>+?4U)TcFkmvjJXC( zqHA~GZUuTW+`DHx?dR&7jphX2fTvWt&PGUTqsA^&nc}T1(YLsHz{7>23J&k<46nii zC`@Ooy3-gn`jBfG?T32ca(c$==KM!PKN9RG^>Z9vx%gZzBCVCJO5T~)M z(SB+9!ll)<`suZmr5sbBPmD+?hsLSRh?{%B`TP6)>e9-omF2ZdIRdL5;KG_}SVU>N zdsUcIkq>?wJh1@z-fyp{E$X_u9=Xo0N8aCiv#1C6%ZXc*{nZFVqkF+I?5@+RG1=ug>M;4HTf(w0gB1R&re$7Q~brpQ^IQ2)hH@GVHL z&eHPEZM8UZ6%ESbp5v;Oqet=X^E^FD^`#o!$8o+jUY+~x(H6|1lFIa{p2Q&R#_Zzd^tf>Us3ytLIEy}x%X+HB}H68Aee zZaFWvk@Coh?z*dQx8W_DqJ-QXNr;6@nfjxAI7Ir^*b%sJ69KDO-`Z&< z2gD=RfQYpF=!n!OyF1Z#-!$Mu;tU*MtdIK*@P)>cdJ6&O(FF|@M#b^;KG0QbNtBjC zER{n}hHf%)Ebc8*9@C_3_J)lazo(wi*OlPV(SK(79!H7+!qxR|1aJq9z9)zzfHhYcnxB{Vr z47m#mK!M*LRk7wpXZ6qO`tTC?;Daq3N;3ehfM2{ljPS^%Sp1~b6g3u&Pi&5ceON3s zC$kbMm52pj6ZN=qxl!Vk`h$6El&$*a2(m?TM!7Bc;ACZZFIM$h zkOC#Ai9!fIN`2*9^Y z)~s%hjGZBXn!p&hXJQ)g&R)i^A%u!Hs1E5BdHP#Jgf7oebzPN6X85d*e~gF`H^S+e zq$ouhp(=+W2dPEY6?)jZPFoOgww#_QufrIt)2vY6X-u|@5}Dy!86vYuP?~$p(x%7_ zWsOLSJ$6Ic(~|4gQ{(NHker5GZ?(tG_MjzWOR?4^i3rqA-zDPrO_ObEsq|Rg{-mQ5 zWzwCoRPoVG&q?}(s5<@utK%alZg2*{y@A}$xY(tt&b#;_xZM)$G&nYQw(^Vv2`hWP zkQHkTkJV9+HQ)lL##X!jY@;`Aj|DBq3eu8cHZ(0>l-Xnz710c2-Kh`pQ?|uJ%~oSJ z5oJv8N<<8gB^N_LQDNjIz>&cD=CnVBi{?7dmZLHmt4=MC5LQb%A>xY4YBu5=$vrr$ z>Ksk?43(%18cQ}BeNkcLMDK8a8eg}xj7(8F-WDeY4?asC4~> zENn^1u;Lpa84H^rrrmw3<)cNe=wS&AStYS6dRd!$Xea5M9|l&aC-OLH0vh;eccq&w zQ4d_SW~ZYOSzYjmIM=8P3sI4gBO|GBFe%~RFN81F^pXBC@GESX$c#hXApo5>XETI8E9Cu>9F+W zsyLGY{7)LFD_QzS{p1SGL0}^C`ml_D;TT7+!8U1Fw6_`U6wlN_#B#aNhv&-T!Vqim z^DfDcoQBHp4t-v+3`QiC76*{MH<&_Zxhyk$md}em@LD1-hF&jMY@)@Bq1WQ7 zhX?OFgXwTO*1l7{F`Wzt!#-_il`#^GBhe@WTrG`ei@Qc5c2$07={xpj8chj8Ek3R# zicNQx&yl{Uuw0G|$rf)7<+9IF?aJw+1fdomU0qCfSqyu6_aP#=D9(d6%m ztxjVg4T#KixERtP*kCd~PXCzv*w^_kFd!wAS zyq8#upQq`qw|Zw#pLF_jSSXe=J}e?F`nRm2dG<&-<0C+>#ZzYtNhBRS_%0)IbMzea zgHkiuuOPt|Uzh1h(DFxoM%qlA?@=S-EPAg^$L-B2>jrqta0+>vaHq>0MoKweX$r{} zZ|_d2D0Z;Q@27Is<(Y)X^GTaBpNo7F;TE4;GTQ}rbttx38e8&k6@*H~!99I#|4bIc zCD&r+3EG$%mlWk^N#q%cR*{xMP-jtm1@|TJsB!r;pD$@CB=2ow%tSVo76(ncY)%7KUy(hNk@S#i@v@;S;0T$MLcOCDe=JF<#mQ4x z4kyg##KYsI@t|n5sBduU=cG~PY#)^6DWBw(Qgj_@v#5OvR17uMNpp(G0~D?52D2IRYsl6+^yE#h%TH;Wu}D zFNFZZQ@;F_6p#*2hHj^ytQ?;C@KjfCW;N?^WjWCw-dDh%Eg%>-QuxfZN<-rt9(v)8dnyv79ZEFBE#%_ILfyR z7tN6&+u{xG4bW!@=fh8VJ_IAx;-SL|44d=eraT|QOSHvT!`iB!4?pFNAB$Lvk84)Z zynCp;@e?51;!P}d=hHX&mbz({z>`_vZhw}_g1cj@-_4wP?s3VsI^&&%c5PDxS7AH1 z`F2@SfQl=x?7PFC!u3yq-P;s2oc4Tc`4pfvMW-eAr{UW|ySOQsIQjWfxKe;3`GQc3 z{tbJdG-m`T1s`XkyhVUbt;NYZ3+?Jga!}p~@a*o2>$M66vm(ha&k+gj^1jRLq0UE# z^6kZ>$b~LD6Z_GY{;(^g^6rGCVB^D}yj}?H`aXqQF9mjeBN-^qmMS{!9>8yl?fynG zP+ku(QY{{yQoF4483pC_fTGi)9wO>RcY|+u4=_?K9?U*uk^Q?!Hp-jP^j;)UYjLt= zm(6it=S#0nkx|V2;(wYY%0 zH4GPX)U@(~j0u7*ex6dhv-9bZ^6app)1v-qy-7PC^2=LQXhJReuN2r#PElL#MCHqc zN +>?%LQcWmb)`0_?Fr&Y+l-92ONE=RtCr;>r?=l)*YD|l`*zLWg$nz*Vb_Xe^A z3fsmRR|Y%SYZ9TQgy-1)YJ7-CL6#8BuFuK14PmFf+KR*AfkoXDjJhImK?jeaGcpO; zY0v3269SVg0_|sVNv%4D=-X{KxaW)>m|pc_=2?oQv#(0_0%H6qVS4URH{@9 z>S=%=i|SM4ua+RsjK}@d7*d~V+$VRVuDIJe#ffvbo-$s1Q?#j1MWaiQCBW19_L&^m z+>w8v*zDvv|F@!cW@3Hz6sj^_EmJMk=bE(ViULbkkLfL!5(s;!n7A|v7Gqbb9-HagW_mT^_4{gcekA8Fzm;+O3Z}@5%M<9D;*r z{oUz&VlDaFCBtLurhF)%Ke>(%a>9LxIbY(Gl-w6Vi4T=U%)`y?cJrEep#iDEC3)=I zXp)XQBj|9jSR|Z~Pa#w96u|%12>cv{h5W&-_5_|->viB7?DnVt_M;KlEgTklurIq~ zntKYMJ`#ai!?(~bkKm-uXpB!$wK~lS42jWJk--q7f<9D&n0EJ3ZhP*Gvpvtk%lB}C z4X(R|ZKl0rQKv$!Hq!pQjc|7#r;q7$@5SBm{`32b-5*#waNzmf;x>DD4+W*e^^;p4-1-guS@;##B|_-+TRd2d10rwbroT z=nTfSo!tqv*x!4_>P8pdN?smJM!WkTg5E=!bzge!z=6G+MF;M`Fxmg={k=D*B9L2x z``zEWaNxjV7e(H^1%PyaAO02qGW;g7#aRPSc)A1k_QCW5Ca*Q^wd?m|!1!JZ^ed6R zmv2r7^a!)0Fk>57BG6y~D2{Cl?yG%pGpvMwt8Rc);85MVud^kP@o={d2)2FbiARc- zcY1A2C_(-bAE8kaR)kvc#q-6o^9aG0`w-M(bikxhC|Tg3>wbkTi#Mf%f|t8hYaFcI zLw4)iGh5dh8-s}gfg`_7bJ>#1Mx&l%vG}>$ zhb}@e_-LvEga){Kzb%-BY>H|2RWQ(ecOS?PV{(1CqhO%%?>=n9$nejxgWwUD2^@uK zw#Rz3;snxNvLU@CnxnQa9J=dkX%{BWKd)^}jG)^KnZ z>|V6tMD#T}yowZ@Lc8lWhzxfKWsD$d=npoB{T+B_ypFSg1@j#MGokkxKCT6sPYXol zJADxE%@#k=3QridU=|y~i+T+hxfZEU`v7MwkTj_yScZZBxh=Ss;>hx$h-MJ(kIScN4k-nEUdkrv^!avNI08>HN)`yp1 z5*%z2)>L$ZS2;K25VP~aD8hMS3zFz5iR!zO@H1AZAy#}Q>wC(Co}m3>N$8OVamgOoHOZ5IWPCrOaSdXI z-`&Rb;-~}u)Yi71DKIY7{ht9En@cn1A`6a;h?AiE@Up=cyafb~8e8%ah94$+ow!KG ztlu6SyYJ{-_bH2jv8(Qn*_38DR1!i>ekLLo1oFpyq-FT~KEPI}f*}8-4{}DhYP;P7 z!>D-1NL}}5Y@Uy$&#wXiEy?TSX}{lq@R^)S3EI#3h{~9IBuogqwR_^6H>__O+9(j* zU+}>_luj#OVPiP5`zto984f)*uW=X{%6q`f#8Z2?X<#KISr< zZU?eB8J`%<1pZS#@EO+IfFEzebKZ4YQNvcp1m6~cTY*OGD7aDpLiU?JWEnvxjVwVw zMvl9`V~afFj6o7uZM@wQ3~2bUb2DzX2QB706RO|$QJ*ns`w-Hlo0-`DqYqn#*;04# z$w7xf_3o!_0c8wf2>~8IZ;S1_J9Qk2p#71Lstj$^Fs)-J0{k%>{GXHz-l6_aec&S{ z(rh)nB>#CCFdaHS%}xgTJ5*m=2w<^1;lQ50zYz z&ff4jm_~e>``Yp#J2bz3M#%K8k(cH#Ef2Co^Ba7SGyFX8pIXMxdn-;7{|LY^FZ{0b z0U!Xt9MSA_(6Oa%QWHJFJLDrPBZe!X%H$F+*xP(yGv-8@ho#8F&E@W4o81f-RAq9B zy-5A8or3rzLaf>lGvYP@i1NzjCHZikh2SW%ZpBwFW_8jS9vK?f9I720rWo=bq}xCY z-G%t8H?SwC2^MY&bPRuTH*|F z{J@;CLn5fi+;3lp?Kp@*Tf9G%#J*LgZY8h>r0__Rj;G3`1M(*~ha*_0?822Mu-3AK zu$)A`IZxyP8JtOyQIhUk&bP(-*(A=Abl<`m;P^rkd!rP=r@lkaP2J;33i4fT8nQPD zSKJc&dJ=8E`$wbE1|%6$d?I?+|oW8YC2Kb#Ok-w`H`x1U9nh)yhN%R@v)VS4veBzm- zdT$a{IWtJgE5%kne`S(@a-60V0z_!QBIB$7F31qC81wFUUy_W=r6^wFLIIBT{Yk7D zG3iKsqgB1$XrYza2N0LL^%r^DM8-N46M1+h6XE-MAHIwbewLn zGw>YcM|~*E860>N7H=iCg!(Ui_{w1s@yUCHEtKEoLs<@sZn6@M|L^hPD~CmXx}5jo z$9yQuu>g1+*SxlB3HJMaSm*cbC};Rz`B1;3lzB@tY>sks%s=GA{CH`Y)gf_9&_C+K zSTFfV=*?1>pw{%EziC&qye7)G>N{vzP2K57T15CL|a~8 zTWAA(ez6Nn*~oXij6)4)2f!I{@d>6XBhFZdDpa zH^f6YZ}Q>H7oX0+X@_|T>CHZ*<;{@(P!D0g#fQ1PPPM~5gz*b}7|XMbo{$freU%Sw zzIAk3zb3;zg!Q#PtmQH53H=b-*Za_xH*nnW58?b$AI|bv^@M;3?Hhb(%VX6I0};-z z@Zl_vRZl30(7wrswmd7Lqa)(sB5wHK?8BUI2Q6*z*qE(Y1u?$hLqFH|fH?DS@nO%m zk&?x{3e#BgeAS1yyv0K>JVYWt>O)@MuyR90g!3*R&hn<-M3{(>-s?k}FAkR0yF64x z_}=EjSDrTc!bODl0UzFK+(Wwl4}COwUWdYnS-0aWrZ0miJeO#iClQ3Bk}X};guJ? z=m7rft|sxGF4k3vFoMP3S`tsB33B;M;PJEAy`03DaZiB4q(0ZY4}!?~gjC~75=W%H zNyQQ1=xP#M!C}P$09G%(D~X}tuwobj+%%H73igk+u($YWC2&G_9M2opAtL!Bn3Lb|~Y6(DajN9w=rG>=*z6-$CGRibuv(4vKp9skm?# z{DffaLy&Q{O#xP)41vA6Ck)T}Fch2({7ZR4v+F}sup{hsJAwaiec%h463-%?aD0^y z$HT>RDY+si6kp>*QIHMK@|$pctq(^*opsmRgy8FZ2nsUcSy&T}f9AtckO_AcO$h!w zAA*8Rc$UnB;~RZA3JyJcm1<2H`#v<0d(Ey5vC&wIVPfflX&H=ktT{_aoaS8fy0L7M|85eBuYYp$g=09XNzdM}jI~yT1a! zjAl=}pM<~hBI$pR-~SF`dd2x6-n;C%5_)@adyy{d>;6ZqeSXcl>)Dk4XH!a-3BL~R zM=+&-WlHtUz^3$XOsT&4*OVSu)p+%#zNYjhQ+g-zinsKd(wj}GzJS-1zQ&a5TWC$` z>rAP>U)GdLVESX25&Q>rg{HKi3(s;_P}rMH?=eIctUz1@`RyH-u< z+f1px6vRa2()`%J06l*yF-s43O= z7@5*fm{Pid2X81crN3ZG^<_Gy^pmDk-y~y7-*8cDoxVcAl-_Pi^@)2^df1dwo-dxB zH>H1JN-30z`EjQ7Lyv2`G{IqD)Rf*1!%vPuJ!hHH!=_YENv8CSDb-d%mx}x4_ih@E zC+xa@af$y;<4Fs@+8?>su_Ooq&otvtorf&Retnn+W z)zNU+ufoMf@Faz|3Lp-)#noMU+wrCb`kM^z7gVd`=|)v9a1~p;#?7Zz&n+#l>DIr? zS|2>Wy0m<*ero01vM&D*RKBNOR=;R5_E0q!l}iGulVKH0OaZ(#b5m8&jxQ{9|4?B6 zUr^u)+7mSx?Ns(hto1ERC)ZEb*Ppydq*L*q2-5X}D30{O&aRj47gtH-1o=+|;-5vb zp{s|}$a3!KE1ZGRKIZYykYFG1!LNq@iRtB zME8;_eE`|FI!GbDYtcQhOv?VhBNMNvLdkei?F=@D-U>HWhr}DTd?{=BTFrj@`b4~g zqXF=GH&q)GU2u>AxTRWcjH?r9?Ja(3wYu3iMXzElk!bbmi*EZ`R^ba)E?m64UN;&~ z)W4q9c;)Klbx)NqWmRrjzOuf2;nK?L1&!kkRJ^A>t4R4*Rr;#k4__gWeJ0osyaHGa z(}TCNmN0rKCS-S^Rl_TdMFt}vjXMOp_oiD{yn78s`!0ozs=_Q+@p?Tpu{3n>1(ohm zf$!iYWn$q#5sn;bCKGkQTu|>*!9A?;>%r9FeRx&tK0NHBMAer73`4@sU@8%ip^A}H6pBvF)S zSa?$X5511&JthNS5P<(mbP z^C?X5Dr$D1w%^Lyy0b%~!cEnFLu=EwvzE}|g1pA{&e&T+O)LcSyIIq~#FD6|CKf9A z7z1EWEQw+>u~5;+Sxa|fp$b39DkLTrs_`SNhCORg@sCk)mXiuE$_;nGeBx6LVB5Aw zZLpx=i>k*P$fT-)`{M%Rb!kj>oyl`Fixb+PWOblB;I*v?6 zXo5b;U>v-({OIb1C9C{Xto)YsGb?L$@o!S`Ue>s?`v`=+chK~ZrsdxYT>nB^K9A&o zkJU&@{tsAbLh`(jOa9ZWkt=y#W=Z~!S)-ujc_okJ|BS)#N&df3`JRqQ`%N{j*Q)XX zoAd=6X~SO#q(3ePfV*Hz)KLpID)<}L7;L<=U`td{3${c7v~?D2i7INEr-GYLk>gE7 z`)5R6!<`Xd!CE^DHiG_zRKBOf<}q@nThp}jw!a4sQ*&GE@oNOe-$EgSp6l%{WrcY8 zi>u_V5hY*D+JQ+$TQ=T?3+OapUg4%{&$N64Yx$aLm9D4swCB}ss!mP&irtnvY{aV3mxLR>HwcgYF8Tos? zs%~KiA40g?MDKlqtXtNh^OK_BrIsijV9i3J;B_ofoMerKDC*8Ez-zdoIK^7O{L-Um zmX|Jzcn0yaLZy3p->QJ1Xr1qjk#hp+ArzBujPP=tGr2yNkrGG5&8ZS`+D*d{mkm+wM%;Z?of?Aojek+0wx#MwUJ|i^8@x@E6@%21w z78+l?jwRl&VU7Lbg`1HWWkev-8cgavpNSMvWW zH7_zto7+^Ox9~PqXXO06AnZp%BZrss`RA8eJMa9%D_DB}Ypi8b?|G@!>%Y#Lg?gRW zvGo48SYyB5^BS)7e~(({(|eJgUKJUl`+G008k6w{f|&mUMGm6FCmVI(kd%d2utfK1 z)-owNUTTT%k6E*j=y;uk&i@$$kkolzYDxVwteIcxyoM|Fzoyo?W?QjR2Kzl!!3d06 z_B(@4f7;h$^#2oN{T0d|iy_3si(h=2R#{XGL$xz#_NEXmhH4tZOYJJ{>zP$Fl#X$8 z4hEnEs(|3}-O%2yCgW8M05CFw?Zy$jbE+&AFXk)#*Rf{qN}rcmEB!BHje;wEUP*?! z&YxUgTQOmluOKk_I(6Eg!aK0=UcGlTy-5&u=yGT@@e0;xx}CL5jwW7ejix(Tv(RYb zbrPfLC7{?Wv1xTEPfwcgW7^bvEnbcVqBk}eI7mR1MSbKoghrDP`r zRZA#-OJN>n1wn=3mHY~`Ea=YIGP9gUS}&-Ft-$h{k$*5epB2Ivft?_iCje(4QBC3RlMuM1BxC}73Qk zfrq}a_wf=ntRa5gZffu2QBz*S?X%~p_1^vI+pX465m&`{?dm@kw0t;dS9t}ilfIU< zOxjgmYT4Bfux25};B^vq^@9vR(ysDSOX&NonSU(t8m`bkLap~Q_P8yf<9RNx$iG!k z@}ohK^9q*8zn!&Aikz2PBL8mIEF^MXCn55WF#t)C^HPv(a|m7#J$|Zf?#EgCSHpJC zaFA8Y>bf6h&HY`+Yq(wa32L2dywK4#a0#oJ=Grm%FvY)D@h{JEgzjZgTxfEV&E_)FHv-vzuzpbP$% z0kOK^rZcp1Ba(t$z$Y4i5iRWGEAJ44OWm zX&-aWJee041Xb@ts`!X{oPF<(C|+i<_ylVdWRX`&j;O1GNqy=mi%BW&31rP$^uJ4x z^3BMXOFu8O=x?${LHc>6msDlCE)B|U)*J$%RvvJo!b?;-FO~FJQ;vBAK7-bHUg^bE zlRhwFjRCKf3rx^?g=B`_bJTnp!pqmMKnk=>=_j$gAQ;a$E%9up{akeuUU-Ln6*AzRjeU%Bj~cu1_jF+T zXHSsxt0({%ZE*IYy3-gn`o_S2kk$AiUIS7)n%CNb_5Uy{b(Q?^&9D-OmwX)1MjK7_V_fDky05I*>yQH3CxqIR?a% z`Y*A9pwxLKkJSGygW;38KDRQw`1?)Xplr`;cb^GVO|@7>&MY_xmg zXx_`W+5@pW-@O9-Z!hk>a=f$M8CVnJ2Ny@f>%03Of_uu-L@nhFK1CZ^yIjN9NUJ0m z{z4QI4|FA-xZHawoXvsB{CPm|lF6_&#KV`e0RE!>rQ?%Ni=%Jwf#a47@qwccYNAfT$5ruhLVVz9Zuk<9ZNmqi&xQ{?hz%cj;u=2i zXf=GC6CZe38vepl(eQ!CpWy?~Il~7YXoe3wxeOn8L>WHtEHZrHp=0>K)5Y*{xA?&G z!tfU!42F+8#0MVrg}?AjFMQzPUHEvb_`u`1@E4xDg%3Pn3m&3_6j(C9LJkS6EIr{KT`hO{mZI`3ZUG$$}74uAFj2lqGj zUe@a2q8T0&`w{H%S1t{o8}x>a7Pc6RYJ0C8jyhWq73$Rqe0@6VK)3GQGHLgB;LUA# zS_1xh#i+emN8b;>$3XS%J$ku(;FT8IC3u z;C(naDE}Bt`#Zap#<()rIVdXk8m--p=@wAX=V>ndN8Maj8lk(e(^sQ)7L*c3l zAVko7@!tBug9qVqstV+VO?M!awrd{yydSSVyLa(mMgCKFryQ?z29wH(%CRFrQ@sbL zE00$;hQl6wb*j-Dw+~mU4+;jZ4t8pT7Tvyaq=FTnK2Fep=||z2_DLJ0VK7%zWQ62) zZh3jBvUq=`0iqdJ?ycyx9cv4Dew8LCbWkg)bvdsLyUmdao_L6J_j+Z7Pu z27Eu<)b+;|5LyLO;cA*ggtye*Y~X|Ei1nB$(wsg5oVJ1N$#83{*T!1nkSw9m96)C^ zD$!N1M}LudXzuE>-13#nzHVCC3x$m&4RJv)y5MyrMIUQ5 z%vS={l!HJrOy3?peD&zl#FiohZXH7|JiPUNO8|A0!LM8PpJfewmUOX%` zazx#uOXZMKm2ns$O=cvilH+oiAgm+Eog6GrA2G<;Yf!=JK-mR2kQx||8dluEq+?VQ z&`d=o>NwKx9e%3P@ybb3Jse`xpCYl0hB6L7ZC^B4Gq(8kPXGr@!VbDhjh==GH7e5` z8m*x1V>QmlwaUt7MHFf-vCD+QfHkgwt$r4^^jb7Lm1V9x2hqHW%!;Zs;CDqWS>o-s z1x&FBAQ~VS01Ac$?9x!$7EYW!gt1c$n@X`NpCu;5F&fx&rk5a*8K$T)2oA(8dLIR= zY)S))V48x7dQpkzaOK1a>Ut6$3?!5ij#4;e0$Vh?9#{0k#*Qm6VwjUX)J<%QK=7GK zfQZastG#&i2w^``IVOw-P+%#R?oVltjVj5JMV$P*FvLp z0%t-&fNF7-BScd}mfes8mp!4&aTTFs@ljz^pfAX5z&CuphC8>wVv!IXAxUH8Ghqyt z`qgj3ROvx;;Z7 z>G^fX#tR&d)wf}P5bh%Z7eF?C6#sw?9ouD8m#Nk^M-T!9##QxG@^8C(5B#Zt_AJlQ zUl%b3+6E7DEb1n_DeYlYd^C6@sd`Y9R_b?IE!I|I0RM4pb4UT;laGofI$ z8p4IWvvs7>F`T@IP^~s52P!6W%I{XS%;de~vtK*93gqY>U9fM>C z#5dZOC_wayW{2Jh6@wbA#)+fS;GzQ#sk&40zz0*9X_aVk$pY>q&X33w{NAcOH|jt| zoW82S43)6Ccu%jLga>^Zg;l8kIV$-^>|cwABQ-{ zWSd06M#ECmL9UtEx>}*Mh+m z{!bfjhmgxL9Fy7z;LHJ7@X#>VUT~=3MlN!i6JtcXmd7h#77SZtG>%u!i$eqk1wly} zDGVN190m_955Nn+ zQfL)`rja_2s^dZ*ha65K!jN&OhBjtOi8>WPK)pr)RBm)tILIBKODLL{zAcKh%VZWh zxJVI}yED<;fd@T>>{h^niwZEeg5)GDgAJD+FhHtiB?KcEzijkC>sk;+Xwv>AKn40O zNYc+BDVj-2+P6e>VST#OYcHZ~Ypuo+l3xubSos^wo4((q`>9q4asUj+HJA~%VYv>; zYKzvK$ee$u)o;LdX=gNc>Ih$0s}MND=6C2L1%ABK>rC`aeE4eh*wa_5cOMsv{Z<2- zshV9dkT#AZm4#Mg0e;>#26h)Jw;2?NYoqo~uK}x)<2GUqg3teC-7O zkfRiWvH-*Q%!>>-_^QJR#LofG31%O;3#;cbK{?Pe1{VeLNEWdN05}+k{^Z2MZM8c$ zVZ;#m&@YG+K9s**8dB#Iwvl`71fJG8aZFi}Mrc^SV|Ek~72fW^A;RD~0P)6ST-O85ehJVz1ORU=3Y z`XhS!SBti7sDS<+t^X=QzucuB^)O+=6(x-26ANzvvk2#G#u+UMPu564?#&yFrK1P5pokH|LQw*w?x!ixP{XD+{LI4?F11E@T~|l z8=%^b{zF?2jHP~qG$9rSi>nc?uCVXmSL#g~1+~f}yA}C%4mruF4^*Q3Xgv(j7RuOB z8+uxqMl*Em)yJsaqa(YBeVh7E4+A8mIfNZosTx9~3`hhmcL|THxQUqJ5{~qEGOARo zI#8ei(lC+gs2pZu3&;8ZY@i5=!Mx>-hiOAAMx=-kDUk}}&b$jYp9}DIPzaD1uTXjr zO0nxIJh#ZnI>G;7hEBDT6TY&O(rg$%i(GJf+;JNx81Q;rHb~}q@dboaNpua4P?Rv5 zJd(88c~Aiz5QOCvyAy zsovC90Xz?k2-?v?nmR?7GZHd7S(73A=2oHM+L)rw<0917&@nY5H=8t;f{^5B%M}y& zTw+-Hg?7>Z!FLor0=E&>5>(>PlGZEl4}T!6)oIq>YHne<4d`49|#68W==} z&0hqG(h=07<2z}fc*NfZR1M;%{qZ8xS5ywMY;ly%6@&u4z){l_>Xm|qYoxHb6OsXv z3m)^%5umvR0ooIHOHoMw%BDr`YG=qq-~yW_Y+(h+hVXLdJ(T>0f+5+F)Ep961h!Y|{E&}DW$OWd9Su9Z2TW*U*qUlz&+8012JM9tFK9p(G4jFTU z&GFx%;YJrO|04s5Fwo=iRYRMH<&ge~ue3m#fv*;>d$5-F-F%g{foiBk2`e6g5=Ip2 zCRr!i5mH^$4+Er{Fu_BOz!v!-@P45b<0h8Cu_gXHMD9QxvL2w;A?XWvIAhivn>l|b zdC1XyWTHJN=huBS75OlJj&~pPzC7GfchivoHj6{ACp!;o;yk@J=FXOjMS<@1PXZffVl^*OF^ zwtwznkh=UIqRyrHF&;V1N9n-P@!|Ts(xF=Ne}7L5UBb2W_5NI(qR%UuUKf9k&!{2; z#9k|a4=?hYU#%isDqJh`mS1=FNyut`4KJnmr!0Q@>^DO38&e};vg-cXpMa`glBg<{ z8nV()o&RrMB=e*_6ydo*FD+Ow&6)NLdD6Eh(sivvZOvY%hARumkp2siA+73H)FC)J z(_kQK zQG-X2&(U{_b&6Nl>kvgf_%N{#k{nKV7Ps5Iof8X?aZ5s?1*Xgs6(<5)kRuLhvb*?~ z%;ThxcMW2^u=_SfM86z6iU*qph~QRRS7G?2XYDfArqVYNx{2jJWFw@X%Pi{bhKYR&{bpOfzOm^VGkg#MAa``U6 z%bAwUR%JRZlBp|V#w=tJz<)Tvy^Fj0lpG6(q44l6eh-Uvlpm5J zf!x4Uo4=3*wTpbq9pV!Uu)$`F;SyZ#eBpGEEBQVrDL`XlF>}dKg~_~(43w%)Xol=y zOnstbQi36I&=b=+W&d2D6Q0zH6D#|Gjlf4%SI-4Wg?uWDzEh-oq$>&9Ad?x=xH(xI zvB=6wjQs#s+MvvVO%cKr(0x z$W~sC62w^(sil-whUD}*eb~wynUtHgHW-9y z6A$jl#1qQ4(RPATaWT7GZuUR5LEPI%m^lOHRDrTOqP24GC5>Xto64vHgZ6W{f2-)h zBw%c-<7AqzP&M+mPW|o=zJMTp=2@LpT}jnmx^1 z;dsQL1tv$I8g0Tgd!&!%Y!?Yr1BUUem4Pym@TelqfBNggkg-f#_-fuo{P<7T02ct0 zx;0P~{SbBw_5A}{31EV7@&IycY*IHhUL-1{r&I~fxwavnYMDNO79%?8%+y2;By-^u z91#Jf1x;Y8WVAu*6gnn|7yp542LK@ZTAsUvi&5GJg)TixUQyU@qn1Vfz(g)=nE|!8y`-Mw`)(%bD6f+#a zwSn7yaOe<8#%qI_mxcM(K>{#jdgQqeS*B`fy5Mg2yKKkt~sUW#Mv_he7Q%%IEcO zLha1PFtC=o#FuGZNHh1#pcxHY{+$tv<&~+b)|aL(_)c;xz>O)|4}$@w|B$jxW{n|H zk{>xnPFO_NFtc(8*YTp3LCRVJSwNvhTzb1y#|G2kMxCaU=*Z9sLKA+uXvQSK{BxOw zhCuLNih5Hq7&G$JfGa5+V9v0Vl08V^5rYCzqodBWGF{ZUf@6^^NGb#o4y{?(8iPZa z0bpo>(}-j1~JDSE~N0l@>?n zSI}}@UQ%Y}RE#3w{opN#lTZ~s+hPf7l~@Cj`l%(EI7DjZP=Nz%iJnm9>`BK&c_5;4 z1~TX1IWA#wVTi%Bya~QP-Ft;*pFjwBc!UA(rvf)X`bn?=Lr$n31!_fzm1t9k-p!hl z8ha04@a{B=S^8G_T6(xy7RyvdPUp4qT@rVJiFGTelxO8@$#iZDUmWq;i!;3IuS|SU zpM@5|MSUX!xwov_v{(`JGtVS~jmRqcx752V=E!@jR#}u1I!;SrxS$Q8;XikT9j~nB z4-RT*2oZcnD^M62A$;bUXQ<;0X>yPsugn!1||g3r}BmBbYsWn9EVdU zG5`gGL!6S4Lj`&Y?!r=mR*JDwv=zoRj1LWv3S{5{oSx(&Y;;KY_6Yc?=CI~`@ z%WfOvnU6#h;RzTIJ5hlgZLr*iY3V8$-x^9KVQ?ZtT#2aUYl3%jFlm>M#AJObrgSN6 zs|5Lir6rGI+2#FfSPU7muur5merOj67N=rUNANiwH7&skl&FU=cMK>(WcXAl(1J+E zS$#!pK|uBD0&HWzoiCUX$xqPS3fBmZF`TLlyJQ>JmEvxV8seiEAI)+a3N0AnjwN-R zQLDXRPKJw_?+ety>}Rz^~YD90SIy#tTG=p)7GmM@B#p zT1OYyQ5i%5*GR#ggR(Nj$0zmPV8MXGDtI{)uY-3mCMv=FX!RX8;-Kzuu1To)qQS*G zhk5Dp$O2-5b6T4! zVD?G}YYP9?s3d-;{sqBf1%<-dH8w0IsKr)k=&(E$C00;qC1-e+-irw9s(*@mwl#6W znKY7uQH{e309Av3jvBZbw+62xz{6t8qtS4bP2MImq~t1^*{X8ry^8qf53yh}q8vlw zKwFF*=xLJ6Rk&joH2aQYN8m~iODtxX;dKa5XOT7c4M(9okblvHd)QznwvCs8$dPJ< zbt`S3;l(d_^Da8SM=E&u&n(i>A%W+>z+cBJs&E?^fkmsCjZ(LmKuZuRkW zbF*`OadV;eURN^DFF0q46j|^Ibw!tndndrz<0Dba2Go$YE>qXI$v}#2r4`L`{!ELX z&}#Sdi%>iV_*t|F6+H$kCA{|v)(hyoi0{O18+rjER&E?|J;-xz*}{rL-qB#$9ks(M z@rvseG!F2oAOz7?w;^G`7OWB^uV7@>(4@VU&-Qib=hqn_JU3O4C8q?tb$+| z@_3yN`ZwDC``sVrb_yRxUD-wVKfeTb1Z9%)tIoa#GMOPK8WK%;`jsqx-P!X{{5nxA z#vJ6&kh3CdTs->?P~(lMPLQnnp|k%tRJ|>=s`8g)lRrLx=tVMzItvB9q7n@pD^H_y zrsLA9>7A3sD}Vf|0|zL)+ROc#2gH%uxDZnr&gyTKRE^iyNT(ArP{r#5v`oOwDp+fX z-w^^BKZqEJZ}B(r9sY#(D&S@acEJ0;;IV|`dVCG>dg?Ry>!{^VRuP(tOAnn>#<+01>s&^iP*-SQve1a*M zCEkQo9h#jvbNu{y(dyX!$L~5S!_vwfz^hLNu=7DVZX`u<&55-_H^PG9j0~YfV5K#J zmkHp8KvRt2la182^7vDO zrzY=xexW9Wve=fv7Z0IGR0^S3jD(&!e%twy2}RIRgeo=jlBo(ymnLc(c3(7!K}jNs zbCDyG7?L8X^l-FQSJ**%IJP12e`j}5eJQ3QSZk{n*4n1aB1DH-Qcm1<}ggaJVYYVab)WSjjB%MJDyp}Yfcr97%9B}8c^(qyEpx8j74*QW^+f|e3cshf&nBc|Pka1}ujw9<2N07di%lBK@UiLIbBj4!WR z-3oj6_{0G%XvJipA4(bbF(*!5v`)EUSV0RFoq9&fkqX`7+J>kbJbed|IporbX8}QQ zqz1x#^kmTXVc3{~-yVbzIND7bp;G&8#YRorfc=AOLRJ8V4=ewGLGrXz62y&g`yBS` z1(iuMZ3-WNm>V0%ku);lU=U7Rc&KEfpoKeZ!q6Y13j{1}9kQJ*E z3H8lT*lQ9J#U$@wAwWsq!W|;&N1R)gtG>#W>KI=6IvQ&8R!^I^hAO|sQ~A(a4yo!q zD>~^0tPJ38NXSc7BpDGmDyee@80HCWGRGU@)VNJp z$21HOShF|97X~{6tSA3yT*t>R`f!u8>_QMHD=+T(5$KT9UR2$Oj)c{_(mt1cFIX(dW#HoGvyVco<5kW?DGN`XeH;p3DI6?m^kvcd*=L~W)d)?(Co3aM zn`d{`iSlF(d=7Sx(LsMFDWI=i-1ucwJcNQA5D!^MKdB9lvAFUN&YLfNq31;|kyeG( z=s<5}k)ByQOmh|m9pGREo|~4(x9RB$6$X*px8mVc@<)V2N~db+rO-M-Tcohraom@c zFEG+mi5N2LYz^QTu6S0IO|cXK!5th05YNPqJK}8}@dhbD_GUdwY=SfTL+q}Q)m=+I z^(iWMqr^mjT+aP zXDjs?s{u$NSD5c~4y<7Sj zN(1YgkYfQU%6QNysnGBi1iV>#yh4@0IXKp?-eXpqs7%&BaMqp5YD5qK7;tfeL7?M9 zVI2kyXlk=JWDn=zN`|r)A*mQH<%gs5pwf*>6QXnt%#lLQ0B4n6w}NZF;kx-Tq(xH? z$X!cnj+^-qV28wHcy|)sT88Hf;Z?icT%!=>AY_H4>U+XLAh1HgEoJcNU<(%)+UU(b zBL)%i^Ne^N3i8?U31Om6Nfj7Gk(+H)Az_ln23(_n;hHj05b~fcQ34fjRtln$#>BEF zkO?WQ3ANQj`gV4CxZ+i|69&c84wRZ16>YpogrY6HWJ?bs%ZGqL#0sm>;}h6HPzipX zz#j}8b)R^T*EAz(Xhe%CjA>hulQCs27$q8CHe=Ab2xHO)X+&v^X(N=AF=d8|F$S%R zFqSlKdCVH=g>CAru_*PFEE@R>_)fVs)6?^+YLJ*m%f)!2K$o(*X5QyU&OYBCn(s+f zL3`;L(b6rAP6vlK*@ybx4fI)vQk8;2#G(CFqXi7-jj&QPlb3GcWN)B|ZNt`qch@$U zHr42N>Tu~{F-?~akLqlQjwQTCzPiCz$%D|9I;DW8DtrbHj2&X#UYd)D(mKrjA~|z& zVOgE9RgNP}R*D8`_baDi-Thu+YDo-`?54a5SXXGanYg%wTF|Emdlb^;b{&d_ zJW(MOl+x@`c@zzM*5??BO{Y@yb$5RMziZS(m`^+uh6q)_5D7I9LW=^aLJEhZMCwJh>Q?lvKJ#eQBIHa+QnZdp|%m*8D!L`~%+>wM+78uSIb^q_nv(6L@RM z^#Prq62LIb3o8$iA*nf>z@`)&LzA#^1_jjydB74(*X^+MX z|0!JfPLg;;3O3X5bxuUC3_Ar@@lA4UadCuO1{1h5$Hax-QZdM>5>|YR2F|{M(?YNh z1i9?=otio8^>J@F8Q1GDP8S#I1{hwtQCBq59~uD8B!~vgP^AtNXJ=BcFOJ*2O^AJK z?#<&t@U244)0YtfP_Y8dJNS%*KA6Lut=9Y!@B_;G1w5fc6r!^QZ2N&~RW2oZ#VXze3h8kUlz zuBEfYy=bWODwWj6hrx*9@DS%T zu*Xb0(oVa#q{DCOSc;~+Lr34FdL%F@F@*70MnG$17^i|LF{(dnFfoB)r4B(B)%SAv zsXrO3@>C=QRp9nI400^0N=GV-Xm{W=F~e8#{~!8sjBiP;D$BqEyX6^$>w( zRe17P1EBR_4^&k=TzP* zvv3yB$?L&G_7m}j-ECt!00|#rKEPpP%Nki*=uBV+vnR5ee(W0pb8syHyv9B4Z$Nwt z`b@&|0U8t8)Gef0H8V^wZ;;8)NES)3|4M9yTb!G^!m6t-0g0$zL&HrQknniJD<`qD z6)0Q=i|H>s<}_G|SO4vfI$a=#9Z8anIlxO_AyV8IvokqRP{~nA4USYcz-2O$!K!l3 zQ!^BZhpOtKW-k`8h0^gh3;;A>N(P4y=2Ti5+4P<$E#R!L&7*Mg#6GxsmGg; z4kjR&d!+rf?BXTmenDoXHB0ij3UAT?A-wl_O&@+^Pgtl!$hlElr?L_W%t*4T`o^iK zyV}&$U+JoHwm>=z>+8cykcKhX^62O)q!-b3G?m(g<@JiH8P-fVf4(yUC(ClY^KMpc4Y`2F^_E3s>mtaE0AcRmp^%PzD2CZ>a zVyX81mDXX*9}6s<^g8@5`Hq(c#?^wsh(p@6-p~+|*wdYS7a@UAqr&mw-MR}$EVZ%x zb+;~z1~gV|sFHqos<~fDn;G<+>AGy)-{VDcqMa`pTHuYX3>uXsTN{-pE!+r4+)8DY zNKwoP|M#t837ZnmW|Awfmm{e&chUoWpwMaW7m@OS7XlsR-OI?`rhk>A5o3Uf`t zsbpn14C-(+KrjQYhSN*-{E?i=bld-*z4wce^hol<$X(gi@lN;0)=9nt?yfX*+^U|P zDb5U+yQ{%Ap;-?9skgZ_$=%htcU-FJuAZr#?ygo>70F(D{9wag7+47RKtaI47GOXE z3_r*|8?qt5hF=65@By-50rz72!GLT71`I#g@RJ|>`^BHk$o#&qy1Lo?v%6Cur>nj% zGcqzVGBPqEGV*#k3w&4_iY5`wHcg*7z1O+h?|H4ES~Rmn6MZqY71S_-!%(JIVHJ?o zn0pQ-3%g(ThIPZsA@trs8=y={*5Jo#u?8xry+TQtm_9?w)lFPm?XxBkcY-=|&e(q5 zYo9K8C;54BA`MT87+|}wgp=p;V$Ech9DCaxwr9%&$qIlwxjq+lXCvXF#6)=$FD*32 zfwQCr?EA}3(MC&{jtaj?I*#*8vcLN7ci+;GO=SY|R8vNz2J#8rP?2@`i4wr(r(b_O zo%86JWWZBIVdiPgiIZANLJxC_DSsIn4ci0kKFD(Nt=`~8gxrVjvVF1WORQ;v(mbrn zg8Yz^FE5iY}JLUb*BSdW;#8|GkS0u?AUXgni;WpI0h{CnjZgY z`J&?KvSsq$i@V>+*j6Yi?Dd1$pYN4kAD^|rbCgm$vmBHCGF^D6Z!{p#-7?dz&g zE@DPA%w*GME95KfHRDMYBLAw8fwar-Sh96|OW{ZCN^DkYe2JLeEB!pz`_9e#B_eD#Kd~jN#3S>4GzG!z09PM!2q7Q4rerN8s`5^QMOQ7D zO|wv^PT5NTb|upm#Efl|8^rpQ`G~rw=$0+F89feI$GF|+{v~f`N0XUM}hpPW**l!YM?9EF~xx*L(VHP84f(n zZf-%6Lgb5|A@8gjcqrtOQmec52chfp~FN1KC=0?Th&M-}K+44YL zWr{;5IL4U9G@F|DANlLAymIG~Uwf;O@?2&Gj(&!gMJu&z5?%bNm^d;slc2~VBD1D# z#@IYwTjAc;S5dgb8k1K|D}7_@CQ5gp;p?B3{l?bo-Do5qjTL@t>jx z@7JY-@}hYp8{6EP{@1tuCTjdvYYob3EB1$5f7Drw6V;0Sdt3hziq#C<;9V>I$6Nme zN`JL(d&Snz`z ztjk*M(1M_o0&C946~L7Jq(C{{9FD?WKmCHlaIEwIUGc6`cC#u`i}X!S!K#Q$Z0fmC^*ZefrX*x2lXv_0FRJ)XRH3m>OX*`2dM`of(1*&y9_Z z;e2^GKvIJFCN2DCn?D*KPhf&Dy=Qu;Bd(~!XFVT$^BZ3`NFbcP-N^$k zksjV*1!4+PD*fEYf9oH;`0O+MJb~~R{%K<|TWxtT^2u>;6`o48Y;-|$gj8kpeBOErTL+5 zd69YX=m>jvWMw+l06MF7S03N9r&ecAb#Mn=t)*577F6DX<%Rafniu-^p1tR3czvZF-H~WdZ?T&g*dN*E{=!1s1u`B-4@H^_<5SM3e zxLej;A9v?QJDG$K)i4svPSk8V5<8!6o3Y!?5iI|8V6(rEc!?vsWdzl5kG2z@5f(?Y z!_##2k%C8a?<4S;V*UVWmJYa)gZ&2=sAG`TvH_!pcfn97P0>cUyS>}@;)#@OP^rnt z8^7(28r@=NLz8vg?Lux=f{`YJqilK)c-#IwT_>q`R!~0T@}#{PNJ8hC+^~@=GtZ_C z-dz|5tNSUlrNnyLFvaMRfEzb@@A=sPt~A*9?n`W_9n=_O4co&%99QOyIGAdRZ0WAW zhWHk_q&8)LzUQxRNnJ*`HEW6Qgn}FVaskr93*p7Bn>Wj~0N2&;O_zsw^k zw_^;iy@XMGkWkpTAH0(U zR4xb^DboX?mtHCo{d-RC`zS!AGO6nx$BHQ_HR}TDg0nyiGiv5Y6X8uJ(CxydS28 zNvkG+Osx*twX({pi4r7FD~y6cq?<04rUCI#wc?HNCKJi#x{bW=MiZlmPUl=xAYi~- zwirUcu4Mvq`u`=h}I8tEZ>n`MOJ6@ED6jYMC*gH1wb4!5(v><3xn-uxMS%XO=T6R0EKqUkv5qQC5o=9nbnu zT(VMX*!wojQ|2wl5wZNHz{R&bh<@C~xiz@T(`#pv;+QHrsLxlqy(4#UhbE5l@c}eE zy6oWqr!7KAmxh*I5bvK2N5X=?oX9m={+zO*$6dc;WO+=mY%= z*N)F0hXVdcK`6gSJa2|!{3G{4_%+$eJ)4ogOm=}nsZk~$r@ogL0yzIa#|~N@$T;Uw z&Zg|`CrkA|cr?Z735XBO5#+Cxy9;PBc{DztRaC&sG#1r~Zw|P10r(2g-&l^3T^8AF zQOTS19Z$It!!VI2olkH@00qs4>xF3_k*AN10XH@r8jZ|`Ow8k&he9;;zzJ&1g0U2b z+jYw3#e)<`0I^KS(b7%*g9I^?`G{MWP0$-^K2iiw?@)MlyC?zh!})_ef=8#iF$lAS zZyhBTIYzSF(f9!OCX8qqE^%RDWkJ814fbTIjk`{a$+KFL6|OVaQP88?OqWoEV?a%T zwx$KcoQ(kQpFn6rrn_F=41T0&wb^MBM$fl#%yfXch-H+K%|2+1_!aaATm18w=JsTF z=M1Ffpuy+&@s?foD=YlDjKIixKNihO@24GDqdjsZxon2{A2guswh=@LCJgBzJ|kTl zlYtiZABdP9@j82ymuv4Wo-@${T`FmxmB@bDP?45eikn6pDgZ@m1e#lWt{U_S@r+bz zFN1f0{fJ&S856Wjz!kwVK(Yvu`I?c9x0_aX#oUx($2r>=6*NAgK04+I9t}u4%xEkR>f!l z905A)Zn+Sdwoj>pr~U88K5e5*_dw8~eoA3-g2*YZq@>wsvv;uk zu)mQbII~VHFqcQu1rd0@ZcJSjU?)o>IY%iYV+NKMzi9kyvAd37;za$=w)1H7i_v)) zaX<6Uqs`C0^G%D#XFBlOJgxO#h^~K@!){&wqKrDc6Q3E!Ti4O#XEf>}^q%N`qgdXu za&XoHr#Zs>x_j)+d}&)ezG3;pr~*{WS=tH=)3M0i{fAi8vRu8wHR8&h-cFLtl=AsK zfAMoA$19@rm9{mcoK08CbwgliysE571VR<6tr(XWzJGgivdeT&4<~JX!VQ<`4@e#U$iju9P1dcb zqo8l`UQ~<`VhK>{3O3YmOtuj&tf{P8{cQGO{V_E$(MHYBY)r+s`gBO0Dfsu345^8~ z&vQuWF@8FrpLjq`+EIRRLHo=`v_)-yDtTozFGKSBsG4&6`Ht#S*?T$5sSoOBy`HvB z)u+-oYDjvUb*ZF7SJtGbUS}26^{w!qZhsZ$AmpS&3x;oh8HXI&aN~bR!lXCR*wcGg zTB37#<28AJ`29nK@@6NEdK`+dW$B0p7N9AK8%X;*0+|aplm+BKZ;BX*O$B?aJT?n? zRXuyg?npjOG@SBT8i(_Y#`s{Dhr{VoColvMNO#mG?#aKkh1QS&?=5m#h{RKGiu+)T zUh1&KoEfAGeSwmcP#G}$)FWYDCu*F$ygeOZ`Wi40|faoT`ml72X1?NICnlff(L#V_pi?mk&=7Q-7eyIcYEmYDS#?tvT#a50;2A6)NuGg^2mN>DH+-!f?=`Df-i)0@ zg+YHC@qs7^Q6tBjc!N=Vi^IUU_H#u6y=b(%0Ai8I&h&=AL!K^6N>fTt=@fbasVz?v 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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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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.cli.datacollection.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.datacollection.doctree new file mode 100644 index 0000000000000000000000000000000000000000..73e8f87dbb7c693934d17cdafbbc05336a1ba8f3 GIT binary patch literal 3592 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 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..2affc834e7a4023717adb32ad0e31f2218876538 GIT binary patch literal 22961 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 F{{k(4T&e&7 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.merge.doctree b/docs/.doctrees/honeybee_radiance_postprocess.cli.merge.doctree new file mode 100644 index 0000000000000000000000000000000000000000..73d78e61d4e802763f282b0f1b346bdd4c336e3d GIT binary patch literal 3496 zcmdT`OK)5?6i%DWB$LM^X=#N-(?%7PfS8#sSX4z72oRfySyU}6kmb48Gq!TCeet82 z2o=GiQY(2^v*ai6C-`N2zOR`?eIc=7q>-+VeU5!Tf9Lc0ZS9XgcUH=u-!%mnaz3PK zDpkr%@EfU0T+XBoFT*Flho|Al_cT2<%ISm!zk(GB7g?&A3_k_mkISvd%&_)fH!QJ2 z$=02Bc$csL6pnb$cdW1(TblBBxsvQ`!q|^Q(^OEI;Hyx^7Fs3Dm|>EMVb1i79p)-^ zaE`GMYV8r5$1^S>th5nU-W=gsDD&c-h3`A>?z;s=>NfCw-y`6Ox6o zn^3<=t<_@UETD~0u8Pz|*w&Mb8UrJ~JCf$r*GB4!#b82{6V0Y^jq~f4&f-+yyZi>< z<_CP0-}JwZxXRf`J1LnSohp3-Lxty{fpf5g=38cwj%k;)XucZEp*8^F*70RG;VZr) zWXk4C7hByqKSa{}HZJT#{O{m@g#V`z0AQ#^nf8%iE2z-HkE$E~;;_l#Ek_7`Sa}TI z)q!`%Hc-buNi1!|!JdSD`*Xxzxz@?i9}cOGH?ir?g4f;E>K z_}zrH4oCcfA2#T{lD`9>Hz-pW)M~&QW-UD5!kR`$Xv4*Lu1%b0wMv5zDptQfk+#(N zAo^bN{lw`g3Z#{Q?Z#3`f!{F9THG@PcE453saDc5nFinefo2ZH&`2)d9sAylp{S`< zI$)4eNQk9*fx%X_4MFS^3^(hc(-}rPRwX1#N1VlWomgmR!C#pwWu>xgY4Z4z--&W9 zT~6jxrSkwwKQgi)ks@$42>C%}VHqnebaEld_4MVY~h*)e=}?g=RE|rDruwSWGHB_kAG?X9<&uO0g>V zp0m@zy@3(6(aHkkw#-r-5YL+OSl9Ux72eyeaIriN| z$tiLK93mwJUIsA_yzBeaSw$8me_4Q0JE_YH(y|VymIeXBX-TsfaJRGoT500lFHD7D zE>&cnM?USbIrM{(WzUi#i6u{j5fwjoNh%DTWHFKYly!+UAJ6a|bTSsF1_qnx&xj!1gY@nSMLNQc&HVXb)Tp1(9mBg|f z=vtt;0sG*iyPpG&zMdu*!bi&@{GBE|3XMj(oiIHV%udTaP_iR#^9-ByES;bNQp>~f zhCcwGa?+Mon*cFIyxv~*6mnDGpMkasOpk@wpsr>L@@9g5l@;MHz2sNXXj zfiq^Y$+ZNlP6*4X$Ozg^jpnXA_I}+kf~?uJ(zF+TyNXbTH}GC%@=5Hd{6?iMC}vO- zO@~0SSYjy}L}(Qni+vmtRI_MG0e2evr>9WAbJnWIf*H}K?VuY=3hf!}>(N+!^T+(5 z@x5rUX9Z6DH1Nk`!*9pV<{>(<2Y8CR)d3dzUH820)5agr=Amky9rR2Fk63sf-;lr2 z%>D1$kmXn0`JLq|C{f%=1ZpW>1CXsOQLCDD)padfs&%+TkUpQNtSzi^>3bK9?dsmS zh`nal(&@^%_;_=)jgQ>5i?QmN6~753O_Yl|8T?kFvJ3=64tPq}zp3pnL4s%DA!G$D s7z7IKyFndP8@7Ua&b-x{OX_Y3nPe`Fr8A4H-AtqA*YX(q5H}hA1Ci5bSO5S3 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+
  • ' + , minLength: 1 + } + + $.fn.typeahead.Constructor = Typeahead + + + /* TYPEAHEAD NO CONFLICT + * =================== */ + + $.fn.typeahead.noConflict = function () { + $.fn.typeahead = old + return this + } + + + /* TYPEAHEAD DATA-API + * ================== */ + + $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { + var $this = $(this) + if ($this.data('typeahead')) return + $this.typeahead($this.data()) + }) + +}(window.$jqTheme || window.jQuery); +/* ========================================================== + * bootstrap-affix.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#affix + * ========================================================== + * 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 ;_; + + + /* AFFIX CLASS DEFINITION + * ====================== */ + + var Affix = function (element, options) { + this.options = $.extend({}, $.fn.affix.defaults, options) + this.$window = $(window) + .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) + this.$element = $(element) + this.checkPosition() + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var scrollHeight = $(document).height() + , scrollTop = this.$window.scrollTop() + , position = this.$element.offset() + , offset = this.options.offset + , offsetBottom = offset.bottom + , offsetTop = offset.top + , reset = 'affix affix-top affix-bottom' + , affix + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top() + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + + affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? + false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? + 'bottom' : offsetTop != null && scrollTop <= offsetTop ? + 'top' : false + + if (this.affixed === affix) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? position.top - scrollTop : null + + this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) + } + + + /* AFFIX PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.affix + + $.fn.affix = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('affix') + , options = typeof option == 'object' && option + if (!data) $this.data('affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.affix.Constructor = Affix + + $.fn.affix.defaults = { + offset: 0 + } + + + /* AFFIX NO CONFLICT + * ================= */ + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + /* AFFIX DATA-API + * ============== */ + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + , data = $spy.data() + + data.offset = data.offset || {} + + data.offsetBottom && (data.offset.bottom = data.offsetBottom) + data.offsetTop && (data.offset.top = data.offsetTop) + + $spy.affix(data) + }) + }) + + +}(window.$jqTheme || window.jQuery); diff --git a/docs/_static/bootstrap-2.3.2/js/bootstrap.min.js b/docs/_static/bootstrap-2.3.2/js/bootstrap.min.js new file mode 100644 index 00000000..3a3394bd --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/js/bootstrap.min.js @@ -0,0 +1,6 @@ +/** +* Bootstrap.js v2.3.2 by @fat & @mdo +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.$jqTheme||window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.$jqTheme||window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.$jqTheme||window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.$jqTheme||window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.$jqTheme||window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('
  • 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 zcmdT{ZEIXb6i$=uCYzT{(%K@}w2Nqs;_gaSD3z*M@k?-#()!6V%-%b@GvwYo*Li7n zk%9_^7Uo;WpW+|zC;1C}=DzJFwA!Ly3@qF^GjrygXP)!S$$VFGwt1GEF+t;%=qX2{a^fJf8;ufo@!}T#JpR@s4X5VG_19sl^3~zaoNoiUu4Kz3kRc1^@OptunwRBIUV-O6ZMer?7!Ukt`HI#FyA)>yY; z=rl}uzQ?cf9e&8y_%-+Ikjs<}mCZ7yhNn`Uz)-^5uhH!w5>k8~7dJ_dx&wI4V)3e&p73DwKC0m-qcy zug>EY!tm~9xvT#=n|OOYa(GmPPG8EBa6w=4Yy1oF>_UA}cFdX$NBoYvS>yad*7t#P zAIbKMWc!t(u$qsH-LJs4T90VW;t<~!;#w=y;r+56UY<}R6uckyUU1#Wsvs$(5s;nQ zQVNON)XW&%2h{qYk>81unPFM%UHf~QSd>w%-+XW6I#UKophhZ>K};b)hNd|N+vPC? zzE3dRs)kl280{Jvksv%_7RR+hiO#*dIFZt1(y*n;;|p##Xn$r?GMh-1dRV%Fzd4CO zIBeB$`BrIR2`ellP>`uh-BYSEV1*Tm(G-@BQ8Z#9DgV@UMV4DbSQg0`tGw%2GwI*zYk}{pXD10$ zN-DxpISGR{wL_?p@orCAbJk0%@Z#O!xtVh=_)o4|I$Z?NdT{@n{w*AScH-Plw;vMF zK#2pN1POV!o6u}(>68KP7~@sE(C(6AkyJ5>Sq^gGm>{qt*N$X1L5_e!#3aYNB4(bq zU6)!T$-?AT1sJs(+cYN)>ws!u5Fnh&Xc8Rm6&667>2UW8Q?8kfC7GpxPy1|!=ZBHy zodrcALmmk&N`CHql_D;YX{JK%plv`Y29LMVqBTR*-9eBFltVT}btNJd#(%s2p4->+%+ML(V#*Wz zK;HF42Hx-Jl%mRhv?yu~hnI?RIV6dUXa((I#POs=xcIWzaFxYT*nMJi#26aFqRXp9 z;2GE>BauzOfm#(V2A$A$d~Tgc19=mP*C&J&`lb^P&ZJ`&qkiWIfiq@s$mIyDP6$h> zNCu`=IJRLDpnaYT7fmQ+g=eYwTWQ*`v^pxy@2rP|Tnv+7*FfF~m?cWzZ_L zBnJo*R5R#s0e2j_ug6foGuE<0gBji?&7d7h3e6qt8^Kt9^9TH%cAa1_^BfUB_WZ#} z^S47!bPs*p9X#6YGJu7CR}FOY#PK_{eyr+e2i=y&L*}1`H{=hrg8$pbW%*UNZg;sF z3N&{kftm`}0fb9S(5!l0d2P#y2K?sSD1(_HHNYwO9*GzT0r@QIH z-UWgZqy$^4AVfMyJoA8*NIda^!Xc309{}+HZ#*D@1P=rvNQA`itLl4ZXUA*HkyqN? z>N>ygtM96+-wXR+d*;NH{1MBc&n& z^x~k)5;27yU2ZvMz})1yL@ZJF$a2DVI({}}-N^FXd^n%xGko^Bq{$m%I`y2wAJ=Lre*pto`OWQ)PUB6{rSvBlo&BT&fA3u zH~2AZ6kk_*o+;{tgwKSQ+lNAmPxo1*cfA4WhTe@HHnB*gN^6wg ztfHok&4F_|^bK-*a~Kk`;0jAfg}#VYE~QrZvs-J0V@0$MXShzzu_xB3X}I^QsMJ-Z z^PTObBlft7QC33|gMb*WA)-`tx!fs}*URYmE$rvFGmloH!q`-NyfUV(Of~vfss7RS zRP!HQ#|_R*C%O4HNn14G_t8+<_N{HCEh}CRxZ>+E*-gwTnzE z5zARoN7BQ+prm~}1<(dEgUASAoXCH46$p2T-MQ;P%7M|Aneaf&paeIPhzG{HojeDV z&hL)}hswp4gmT`XV2?}(Mv{nmvU9IvBOy$xu5~6&<|bZPOiM3~P$%YkvExVs1PAka zt{Z>UwTePJeey3&=v> z$tKDsjyol>NSW;Qw-84tKalBhO(3Q>FyLwIxjj=;VirP+wtSY@4f>Q$vh+RcdMf3* zE*8=vWmH?qb+PPvDg9wuMbvFbqoB<3=*^@&{H!=b0_EOTxXT=8(gZVGW^`^NesZS; zT@o2GX391{oB7}DSoCyOA)dj$9oJMjvIZzK*Gy}vr0VEz7%~62<}kz8 zx0n%R$=H|jsc%p2Wv@YBxA(wJ-sAm>;%9*i8I^s1KK72?UzwnIxzOjb{ZyfBRTLGK zsAZqZSs$6T@~`u6j1(L4qmtO{M`;?BCB2vv@rj$%B}sd;lv2zW6V^lYP}3@cK(5Nw ze8S!s%k=1!!aj>Z69#Pi3E6j;ax$20C@-3F%4Jn`yL!8!ymK>@&t-;Rr@Phw70Y{8 zY5wMJX#Uzw(_9F&$U7y8MMFyS2swX$H#C3mrf4QA$e9kwx!M4l^NOmRf4m!-U%wfe z8@b!B6J2jv6{VUg*}vTl*}uMFva3nas3Qy#=xtoupE8$rThe3uG?>dXWd2vmqmcTR zXsc(x_A!i52{8XV|3}qf|8wG0m;Vd={aY^2-?rbvoU;6K!v7=Yvw%|MvANR+ZTF&c zn$5mj6&78-Ht3++4-B7|jvC@K7a1;pT#ZiA>Lwu$Lai5g1C@AaMG}HrhB%Nph^*8M z*QA6*R=1Vzt=_u%a{aXbM{FIo-%Yv8lGyE!!`LhPztsDveGmOZNW}QJ)A4b~eh0-& zK*D$&X_gj(ImgsGOzU~U05`YH)QnKOaN$Dh@yE3$YxlLYm(I5yKCveGCQ*diAcoM& zL*_B$$tO==xS&RyICc7wht_i0+=i73sU6rWrPiQ-^1^sjYEibpVX5t_NNs!DCELIW zDAzy8y+}o>!&d^X8p&+!T?%_ICj`Ro6BRA|7ngr+7z<1pQ35%N1M4!Qxq-5t!J&F zlzLW2AdSl_s$_pR?HG;~-8U1CKN+xrcZKPk87A9pFg`h9Fs`h%O(_29ofL{|4DA?*EB*1}>&KDa zvmExG1>)bN+CJJ^#s}hGDyja4;?eTB&7t@YAb3P5E@&GH z#cyK7Eepl8JVNpN_aPckS%%`}ie8oiai%s9-Y;n21cCUGi_+_B5oen6{91&^Q*|q0 zXctqUn1*9|U~OvTqVl-BtFgJl*~h>XC_O^|ZuHdrb7D`0=?|sj$Ejd;YR;sBFrCS2 zH(~lDZHGKHf0RlxOv}=aVOr6RFkKwgoBWK(p;aT%WG!G(T7*SOfmnFqO>thu!0{Na z4AEy~z%UZXJRVZ_DarE|gb9e*_K8joyW=eyyGJZ_sW#=ytN0kw>dxi8~$ zKK+aX2VaZy3{5aTYQ=KX>Ooc<>Umz|dJ!u%p4%f92{-A+1AUY3pAyt85xmDIWEsIR zLrnQ$Rl^)6YxJvD#PtkJh!xWTDY|e&ECkH=@Q&!PE6hpG?G^LfaPrS-vBEYj$SMN- zE6h4gi)oW};y#vJx@rV2WQ869GX|(>L;>JX#8h%kEGdu8T;Lhd3oq|+)N7q;$+!Q* z)kd8Kffwj1T?gE6hDZf0KrDN4L}^Ab%e0&&5l3n*wJB^9S}vB8>(xQe?1*7X9sxiTO6fn^A`xIx$xw+Dy= zBx0F5uwgw5=$aX^WW6&f8}V&zoMW(L7qVgbyAFablt5TG?_ zH<{^4OzM))d>uS7m=Z9!Sa^YIItG>|-4-9*R4%YHO2G~WYfde;Nh`TENELS>d7@=wd*_@I9RL^ z866mb8S&)YoHzoN8tA!oo@Q+K?s;h-AO z*CSnyOZYA}UfCPAQZ9wjmt!9Q4#HDQkaX$?u0wmguI2Wi1DRtuM6M!?JGFk+fRxwq z5FLpm0wP~dpfiIGGhxD8Ab~R$VUfGL=yh3VfSfowfSSNI5*+!OSV_U#P*$g>+!`<@ zY6dxdh|&9)dxZebVotdiMt<=i5GfXnCDIizNpiaaBB5##ye!0R5}f(@L>#Kr5>Q80 zW42!YLC7RROQZWNRjRW6af)n@;ZGLeRBLVhnG$Fdzzmos?sm`PDmxjRp> z=mm`HjLeG4*Wkc2hkz#~*APg}&IeV0yG`*a%fat}W}QcDG!k`a#2CBZH3TbR}Kgdvxy6{blv{zqXf(pW87R7jibB zaV%BLjCbp?it?06>tFj%e)Z4&q3dXRYE-Tx=G_ujL|i1XX3{_Nt{awHk(fcXf6cJS z3MHHEyv5sm?U_I19oMqLCTwBKeZiGvXJf{GB$~#8$_QVXGB(pHV#W-jL<~*@JDt$T zD&0#}oWnzK2!E?j*enD(ceB*ES$YRIFMN?9Z_OQCE)LhuD3Gw8@3{_XpyMm9T_HAd ztBH`zkMc2f8`N4Y#<>O30ofH1n}Fh4lu%<}#CJ>5wES9+^K3pC)96^UNm!G+HA|;q z%JUt5gKzNzzQS+1--cYJY^ZZ7nI4`heGEehZ@)&jzX0yP%px7rENO6k3#=KM20SOE2p{}$A@Ml=N5hjX?Mva<)_5`c=F_SEEZAn;q@9Ezj^ ziqfg38DF>y*MFqal*-ujtm;K7%|OatIJ#F>T4A3u@X6}4L0NFuFT1O$Fa9kM{idYp zs0fU{kq6-dzUDXiS76eW`Xcf%Yc?G6hwg5T<3AF+4;=e*9Q&1Ou$pr7?e9XTT6Ad5 z)DYnYB3mgF;{B5IZ%(OE1KtmNueffM>!2H?QHibEQmTbpH_TdGJ0y9p(b$Pr(lQx) z*ZzSfIZCA#X}&XZohd`zQ^=&pAf`|mOVbR4&GHxm-^UnkRKr{+7;Re>k)SSN7RR+h z8J>B!KT*m`W!b{y(G|BH1YYJTnN5^VJuKZo(2RgY;oUHB`9W!62`en*R9H@Gjl+r6 zhD!8CZcDRFX-g7z!V-V9>^3+}nqkZBv6%o?mfGCZi(0M~vvEGfaotm@C9uK@&1ecs z$7&j}kd%Mvx2^Z`1}JghlOQ4Qwi7C+Ih``V9b>$V zXV_iUEK)iqG0Q*>91}!zPd9LeXz{k->KcB&}g9BG1CLV z?4&pYB|GFcO>kJp(lII^w%i}By94kkB~58H2@sQo3x4IU7jX$`m=3vvwgIIWJl;ef z)(la1dqFBt4swd>N<=EG|9%*gRTf8K_i>&f#?bW@tz0DnufQG^2{{1=YE{?|I$`qhg>@ng zdNOjt@qLeQXUw1Y+1dsT}GvL=&K(_Xo) z(nI0iVD}1>C!y(b>!r4!m_bdnBm%`^iKTkVpjBu)_7EhfX3@q1?l`nq&!K+jtYsSp zGrUcjK|7QbIyl(Zg0cMOPx)ixI>BJiGDQ5`^QR-jZ->6;F`Bi9c$C{^0CWAWy5#1O z;}2>5TGh`EIx2&g%)bn8$e-x<{>QD!;>(`9?ZtX1@Z63Bsw!LvFfJ`Ywd!@{#VuOO zb+}H@KOL*2DY0Vddl!t&>drZjo%+;b)BZXCczv`D&)v0)zN(oew*gI!R2~%5yUj=? z38;n~@Tjgms_d^phZp`a1O{yxqzb*hK}D1YHqv^|yxEuw5^o9_C3zf*Xd3vt5eN0J Lgfes_`FQX*pe%t3 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.data_type.doctree b/docs/.doctrees/honeybee_radiance_postprocess.data_type.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5341e6806b3d38f76ae8eee85cfc2104359be643 GIT binary patch literal 32285 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.dynamic.doctree b/docs/.doctrees/honeybee_radiance_postprocess.dynamic.doctree new file mode 100644 index 0000000000000000000000000000000000000000..74c2d02e81ce38dfeb1cd09bae7a1c25cbc09956 GIT binary patch literal 56090 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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 zcmds9TZ|;vS)SRs&(6;7tmEajUbipF_S)_lt|FRfl^7EYvX~ff5RzF{s=H3lshaAl zrY^fP2{tyyt6k+pQE-JMLIDH`MtMm5zynf{5_o_I;$R8z1K}b?$P(8l5aJ;c-+xZs zyX$oIW|3knd8g~tIp@Eg@7(^sUReI*;gbvUKXEo3bK5)KH7(2YEfywX-SP+Vhmu?tAQ{&)6>-foa*MH^8s4A4cQAAFwdo<;)$kpfmEV7%izI^t1d7 zJ0=E;<_mfA1x@pp6Dbj2DH^t;D^|xQB#sikBQ}g&MSMxDrkXhr%dYLQwV$+PG z!0yKpG)fv=vaOJ`wKj0gFhn7KuXyH2{aUx;aq-YM2S))LQk__=Mdl&BO88lRk#F() z_!7S)KC;LC5!(x5&tt*f4L>+Sfl^~H(_*ir#2IfPPMBB8^*BY1yFmyI-2c?6xX%~F zitSnKxMWOaXWoIt{6X01Vf_Ct{NKg@kC60GU|>s`yJC54+Cd^7Q-*y{Clf$NKM{|r z>bciwYxC8EC^2LH7~d@^@724jJT2dQ%6oUmC;OyiNbenX{9!v``Tg)EIQs@%&pZsw zF)!&_?EIt}7{l0;<1O4(gX6-qH@V;QABQG>Ou5m4Bw#k$ixl@heu=*q7GKO12#)p? zEM()lv3=Fvt082^2o~=>3~b8?I{_fNG`&dWT0dklj zUPUKk=wSB)W5P$%eb%+Z=vwD$=Ky0@RSgZ>8~QV=5+dw(;7(|Kxy;7pl;ViN)dsU^ zhH>A>IPd$ui~gPoVs=HkQWu)plJe8+Kp>RO2*A&Gwz5Iyk}Yc&Zn_G8bDQ0?D^9~E zy)ht}_!4J`O^L1YnN?tC<9OumhhvkbuXQvDS#X^tik8W&euujO5y87Zc^9$m-%y~*k36W%bzFskUXB3JQAA0KUqNT zUv{b2Gf(_~F^2LXq#z`hx-9WlCNY6U-atAtVUAHZ=c=lo88UmUn(()qO(+(<#4L{u zvejo{tItULyhGZD2#;w}iOt$NPAu+cr17gt^)(&U@g&tR=2UZtHPjd_fy`njr`M^` z`x70#8}$-&c-p8UL_NyOPUL5?W)XgHuF$cGS<&*X!#@4 z_7ZVwe1e4#3NRS}k5(jTC9+Cn28S$4z)NWgNyKSd4362r9@>NCHdX^C`{`m>JlqC^ z3G`0(6`cbz_+LX6Z(x;Low&cyHW(SY9ddj-oIM(-srZ@_vm~7+C=Z< zx72%~sO_pgQ$_wwMm_h~^{ifX|>-v-4a|$5LZnyY0E`b znZKfynNRgg=gVkRMUKX0iu1aj!1OVa5@_Z7-_R47>Li&2cMs$LUC%|y)=e1i?4yec zf_?iC|Ig^MYN%$2UpzJcH0-1V+CltTJ%tuJx;qd*sg-7ke@M^sboW&RYQtSSlv;WE zkLr2RdAjp5JRw`K=urLrS{lwL&`o{Cl)`#8rdo;eb6PUfkv%2ge6B3YOi(wql$_V< z0?kD7l#QBoOU~O2=HE-(%jw5R6DYncx1#CFLp@ZH`@>qn8j$-s8dU+I8M$xi2~2nW zlt3#d_zgXQ>HeG&D3E&zr*dkZn?xb`uBx^_&=W1$u?eVaAS7wbz0CZaG(?*np)-$4 z|5PuXPNl6O;teegEkw*C%0FnyG(dzRP=$!?>Va*xCaM=#-Q?f2)b9i~6l-?^8xP5i zdVa#(ZWXA`9MeXb%+}d59kR@cm9+>fhXVY zZvTh$T(kg~|BIF2-h`o=SAtLKC75ogl)xkgPuuK&P*0(Sj%px$hnxLLtu(I$Z9UIA zt<(m+b||&-^yl=v=sdkO%zso%Lksis4BF3V$uz*cB2b0-nJd9pwUq7z(iIyu>z16i zc_sK=4flW(%fQW|Vg};nqAG-cRV!h`lJJkws4awlT~A>87)S}Ua_qm;6PWJUDS-mQ zm+59zscQ-z$(L2d{fC}x$)qh8g^Gi@SB3u~ZP98~IFDA>m$g&7POGiq;)0fj7B1!y z=POh00?u1A$T%RUllWxj!NrF(gq#BH{I^W$Le~Yh*^4`AJ5NddQX_{Aa>1&bxax5(n$k&IzvA|kqYkVs0Dr=i8N=c+~b`{D%%OPPG7!b zrF%`pDv7sm6bHZP_^G(C&4$<<+RU|#T98CKJP=7KUzaXN)Ef%2Oj}B4C|x*gKAi<# zgc;D3i*n_oql?bR=FzE^nFHPlnHTzj0*bEl zrBa8YeCwZDqg<40LHg<65@Rwbwna3flUn3WDMph;=xw=6)VuU}M=M3n)6AN%P`&@z z7Wym6?_IOd9$84;$dQGf#8ZdD4ug>l`01D-0Nt`>R4GCL8G2i@%!4hsFHF;>Hf&R;Gut+oCEt1x=K#9*kot}ENK-&f+3OkYC8Dwjysm7|FhNj3@EzFf9vF{gZn$}B}4y$Lh#-q12<30NL9Af1R zin*G>oOQ~x&G|ET*PKalv_Z!FsUha5h^$7Nv5p;eZrHBdaeeo={IkGju}D$p-;ZUX5e zzgjbBD<64Y>m&5G<|8-1L$sC4F1}MZf@jzDHQTd4GOuTAyL5hs7Bm-~&$gJFep6MY zg?!xC_j*%ReW^vSFRH59_J&`Y*ga1!O`VZ!q&BPB=C#gKSB2AJf2?v~>U-@p=+^l& zC{(OrKQ4oAoj<2X8Npt9Uh{mF&vaXCr9UZM=>#FSXFWgNBV*Yri)ig^$U#6!S*bjC zmKejI6;I$yfVqa8Ph_sh9c9J*NSk2b-8w04X3U4GtNbo!S%G+{-ceT;l+#$UERv(V zQOh)tbna_eJ0J8C@ZPGSQx)*K{02X+9LQvc;z$K?zL~cbfAn_A2C18Y((@?W;)Pu4 z=O(MD0Mf}9RaO31u8wJYt1cJ(V^dX$p#+PkO#1ihh{BxNkXd`G4Ft1%DbI!UUdF~gfNKzuhFj$(XZF@UthB*gDfwztf1AL7su zC*@WmR)3y?uEXL0@$7-vIAqAimLcnSuy9l!M&@Xo93WRwCeP!X(>ucBX8IThE}qWN zaX#gI(_4^RQA-SQe(3v=hrsR9%cmB_8A`AB;*oJo2Q~>xwkfT6Yz+JnW$lOP^7~W? zbD1nL=rGjCGS5LVZIGs-ABe4h$zXApU1x6c)G4vaO$3&wk1Jw_9ox`VgcR7YC|$8w zKRyJx?Hgv`QSKD_W#$Ma8&QC4OA;!%CAQ^O#$X=qeozZ{6>&7|y}KtbN-kDk8Y~F> zz~H85xeVFitHdhqP{dh3j<6vr^|B&+NyL4%H?=ODkHfpgw(7UwVdaC*{6z2FiMUvO zQEM#DkqjXe#i1fsW{{q7P46%^4;eI0cUhywy5*IC{mkf|CV23tkRiH1!vO}})k{~IUYuSL{J+TF0LJR?w z1PHH5s~L0xB|l)WJ!WGAGBFG#e5wImB8zSecLizkZSmbaipJso-X4lWwVBf>kx0CVk;9VI_~?y@)+o_LXYY;gM!so;kk{=4kbeS_GN`4~o;kZ}vw zqeXs(;rcirQmVagz;RhKfceyTgDE8`)IN&G*pkp^H{`c8QXIGq@9_t8idz7~d4dX@ z4Akn`BXVBX$JaK9CB!NLmEbd@K0{i5bOIJQLmuL7aqj@Njtqv(Mb|(MILOppoWD~K(yzBHe46&}@1>+g6i9MD)@G#URu5_dwFbP+SfU;0G z@>=Ml8RC4Ulnz2=F?t*34|I=9pVmP2H7ZoU9h+vfA^r))1{Kpbk1EL*2O)nDU#O7p zv3a|Sd#2U&M!C2xt1oS?%C$uK#u1;t2r;20w`gj96SQ#q_%`~qMCFSP*Z5E_nB;;g z7H7(XLn`;oz{U_G>ps~mQT6c64~&IT-*@xzCab=qR+!h`sPwpzQI(C( zSNg|n6ht)r-COS~eX}4o0k8uFFUhBeH-#Rv^o{*NNS^_xfV{ zc9I1WEI?H9qM}B80wfj>iBH3~LE`88H%Z^LgT#hNk*<%AkA2Shoqu0%|M_$X- zRG#0_EHFYQ^>N6|$)2V%DGv4wwMbGlWZZe4!*TbJv@+s(Nv-D*22g}TP^BikjlefXB`lxCUO z?MNidO|mJqJ!*^+)6Bq}-h5jk)ZSD(K}59%5#Q~E#>Llen5E5P3Ply0d7jMf7&`Y` zjt}@PzR!>O7Ju0;$6Us2tg<9wYJ4HpIS7Rfhm{G3D;9jlF4WOAOKrs`j5tyn`oD5^ zJ)82q0vC;A4=aN0eVR>U8D>_^4-mXk}xh3F8 zU_pu8eWw%q`m>MZAa>umiGAye%tQyAc{Ab^v-=_mqAX-H;qB@}=@WjB+1;2fLY5lt z&bEOrn&xo_EY2f2bq{Tai!el(KC}m=fSRzIWbu?K7P_;R?d4IaWfCpH+e5TB3VP#z z$Y0Klz5}2Ad(%^PP}+HTp=g>i<>;pK{)KZZ&V#dA?QGlA4Pt2J`VHy|5PD4{)IfL& z9tR)iU_1$AVxUwF$|vXzGBezu{~9vW6=e2-%$9A7BxH*xVR;$!)-YwaQ!13RcZ*2+ z;N;n$arTXZd3Xh0-kBIjy=T9HuI1zH|Nh>*^3->XeO4b6A`)Q;8KukjeHubgCG!(G zyNbSf&Oi$2A~n-FkjGbyZSPdK|KE&w5{apzYB{P>)K%FVko*M0{djedJVpflfV6e3 zviE8TobpF@P1p zwGs;`7MG{>x_I)ThvGHc4>IM;EUAm?enlyYtKHSi7+?f#%2C~S%v2uRp|hROXp|vA zR*efEOl)_~P$sF73fZ?CQWRxF;}na%;u-?k=UDd2Wu_vm4v^G{FUEcs*R_2{TsnJW zCZ$QFVJn+w*X)6BdXQ4dVkTAWK-rZ|C9oAZ6r(XHU888g zyi)Fa+ZRci8N!l4hTw9xo0-}0y`dKPzO}wdm{L*^PLnV~euv|rTVR|W$jq!uY3EX$ zJ>J;a5W#=9{X%H-fcAgyeKdRzm#=SZoV15t0Szm0*e8NQ&K^WGnP=z^VeSy?>!^A5 zImH60LV^Oxkc*SR7wn1cAi`$Q5#|sfNzrSGh2tIDr-<5da5c=L_*B%2;F{wkVR)AE5cpiaE|w&c z0WDfCdmM07ngH%Af(@?Bufpl`EX5oBB$PK&WfDNw1&T;!z(AE1ZumTbhG&CM#2&nn z!~o=<HZ{67DM|D4&b-!aP+Pxnp#ZxbF*_%D-;-}cL2G3(q% z$M`dPlSioWo#J6lUN0xgx{2hE>f%+^Ms#2rHPwBO+H(K+TC0W0>7Ul&thNi8Jy?y8 z+`b2aK$Lk0!R7_UXR(T}aO5hb;DdV+4)Ih*b;#wc&uC#5)QgMq%Mrg8WB=lSf|=G e@?K5OLA_TFJP4|}$8#_A)u2qAzC+2Tqdx)7n5oME literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.leed.leed.doctree b/docs/.doctrees/honeybee_radiance_postprocess.leed.leed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a6a7dd67eaa9e98f75387fed31992db4104ca703 GIT binary patch literal 55338 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 WH|&yyt&u6?ltfGo0!6u`m;N8ZcQx?< literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.leed.leed_schedule.doctree b/docs/.doctrees/honeybee_radiance_postprocess.leed.leed_schedule.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6516d36b1ec8c20709fe0822bcad4ad81befd25d GIT binary patch literal 13465 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 LkwnutF>L)0M@_sC 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 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 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..d863a6d0be320e04b6bea9ff991d03d0d49a5ad4 GIT binary patch literal 27966 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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..d9acdf1c788e907b242dcec71b4b4a2d1ed16034 GIT binary patch literal 434838 zcmeEv3A|iIl{X>#BY=Q{Vv}5uF)#4)l89_Uf{+M8AY>pQ662%OeP6mS{kosMkUSL( z;)eDp$P<@w85zYD6_*)AopBc(9sOohaL1^_IIe>`I`W;`?yag@b-L>IeM>^-H}xxHrYLdJl?L>TEo2k!d6&nR~z-Xd1ZcO zL1p2#$-&Cv?)-MOT??h3x@T1y^>AW)7(Q#HSu9tJ^%8sct4(l!+i5Xj&+g-ryQz-GO4e-K=i!v_TGp?{ll= z7UA*2Qmxo(!I$uPe!V!xJ}oMD#*;s`7fV++!%^}~r@OFS+(CYttQ=Y?RF+hZsm!e` z?RHmH8e`$AW~W{co2zyrHYdAhGHo~` z5EOZJXtMhh)_!HS=9LAT+LOgjWvDWo@Ox8b8A!FViVY$$3LME=(5lvVfOdB;KAYU5ND^-ZW z(MGKtHiv>%sS=W*zBah7Juwb^8NPU&SeRmMYpvR9Zwt;0Hh~@w1+_-8JW^~nixaK2 z!S+U@2EUwJthK@w)JhQeLn%Dil196zS*h-mwm#(vZLlJ1gXNUT%hwGBPZ8Z6X^j_4 z(1rMsVEMXrppewC9od~vTTI5b19Z4h*~$hUR|JW6_A-e--8lg>WJi)u>RUqjEk#9t zx^s3;7Ui))RIo&lJKIC$N%^7f;$364wUiz(=Hp;s!{#;NBx(ChXnPqq7x(3BE>Nvo z#jX4*kPKM)#8Qk;tR;2^#(RB7&=}38^eNq4ws8(MJxiE2z}!cSrI_!)@}GkCR-2QO z-U=CJZLSLb1$My?b`OFfv=U@Td)_^m5JFXu{vFEVt~|H$JR;j`6WLat57w8lU@>KZ zPX8h5P!x3OU#tDS8SC#N(qGouMFi5`&sQ1yc{uGSOs62JcGx5XUl!N}`56m7rp0iL zA!WD)436>T0LFe|)JAkhDi0pn6@RLXd%vA=-8uF22)_e3^e%81tRq~A{2lP%KZ2&e zQ_Ml#Wr;C08c|OC`{D+RL<6A%$rmaS_t=T3+?_H~goMx1G5BaISi-yUPQBFbq|EZ1 zwE`MGshIcKF}rid(~SEjM=i(XA$Iox`^ziiDT0XAB?Kj$J49tL=j;L9CF5be4CZWP z7x-(EQgOHE$nGN1P^0$GNQY$qXfeFE+!!lX>yzCB$0xvHf-hj^1aD$)V|z3S{yh9$ zZ0-o#lifqLDRr`Y5d7L24@=e2YH9Mu?qV>(+|}-$oXISbNoHa#n;0jY2 zLqpgZJ&L@fH*c7iQ32Oro7VZ0@y=U$qxlB*;ps9^qVw@y*vHBN-NWL+-xv>@#df19 z4T$cXGh?kdQ=|NuC}wv~BQ^M=XOJdrkUEi7K_L(mu(-RRTBoZz$)lJ@TvS00`$JX4 zT__xxVn&Ow5FWXvSnGr;b=@Oco$>KTvpv!pD>mED=`_d+@Xi zN0up!Uj}X)Z9?Ew!B|BfhgYS15u-&B)H|{F+c=#V zd!s9$tuX$W5&3TvBPzqs`s~83h!-ipM`6r{gabr7Wm4wT#jF@z{4Z5K<{gO5meCD5 zNj*&m?})SY=>6bZ!3gs;rdWqSFW5FDtiFe@sfIgCuonrwiTF4I+kzEkZs@f~B)d54 zMwtK7W4Fq-28BI0@QAAA$;vI=1@H;hqmx-ZA!3pPBBGcDY;!>3+J!~3;RTz2;1W-E z2gtGsoHp1~om5tJ-35I*Wz+^#7IYVlc4{@cYytWPM%sBIJBe}MqTJnf=Tt{f) zr8`uAf{pAi?lU`6WEXr6S4eEjj!1Mpk?7LyzP&96ym%_1liHMM1AL4p@}+D~Du}nj z`S=Ow2pAUAVz0;I`7*kW02QL=bG*t@W{cGUC-0;^GNk~PY+$q+*2*K=rW>Dw;Z%?Q zESWj>3$ggTrM@jTuvu*6wS?T{uVNWdi}+eE0lkJv_0{AbHcOE;L)???jq*gQr||PZ z+hH0E+h!W++(oD#0gFDCYOd<(v21TJSh+ITTx?f@b|c`1EMUJdRi%d^e1;f-4emyL zhxFojr;tw;#*M@1ZZFQ<#W?d}_y;%wXBNSp-M46`4H5ZO-fn^Cjw3B*jcUB2vnyPmWPAE4Q!FWmL6!W;EED` zR3fdL?7wo=NWO^WL5Izc347?tuZvyd%5gtsrcF7>uktJ5xp(X>tc;nn_jDNskIr$Y z!Sg*T#5@Pj{nG9Z89$eXZDQB9G&>>rm;4$OL6bLi#x_p`>NZ)1FrA` zqzMd(M!hxx|0%(1Dj{hZ2K6w6U!Zjz&TzqgmdNUWzJj-*uODo!h~L$MeM5K`oQcB- ztJ3I`Vsj$sKwLpn#)g3iyNvA#d7!cLVdF?swy*eLQ@)E;ijKEK=Bk4O=RY5B1JKBB zjLEOsc>90*9_wQ^cK1QzU<~V0bQ;48sbb(dq)dSLTi;DAcOiO*gJpO-dz3g(y_O_5 zu}A;T;jOP=j|%5rINRWPK}g1EwO%FB7-sJao`FL`vlG?u?=BCYX?q9=GPO* z{0ti!ZCHud;fFTFebh$aJMvJc4l!9f>*UW7I(x&HhmFZ+evgQWfl4_EmvR{H1)GROa~P_}tta5~t}g=pN15Voonge(C< zYLpP1e6IOb`lw34L6X2J=T#bBoY0^=naG1aQHWmJ2N?$g88`Gt#^P904Me;#AwqgC zA%Xs0h~C@>35Ng)Z|IMN!_x!IK+A^`T1*WRqUeK#=p%g)1<{bvo&6EDNEiqMDPKxR zNghiGpg$L)FZV&fqkw>W`XgWgGi!$K|1jykcqr*S{jm`JsE^Jc2A%&wf1O_eA ze@sYFA593Mj})SZ`XJP73ZyZMcabD)B z=Jp66)<)Fph-WEc+(#YQRwkkm6Pg{30Bj%p-+eI~YH{NfJU9yWc2cfb>d~wA^aDJ$U2FfoUWG<2+PPfN-PI&@02&<*x4eZ}b zdBATH*}J0&q3|Q4)f)I&YXjIVgUH_HCoG59;IQ6mG)HI%xdE4~29vkIHrxnt+~POT zId=JqVCA|vw0KKrycTX1fyNiYwvhHmtyrGe-q|rsI9Y1Io*`Xt4nG}se`*u!;qa?k z?=(8C_3=;JwhhH^r|+Yk8lo#z5kP#C;Bfb#SS^U4n6ssP7aIV&=-h&i{=v!{D{oSc zhD59f1X)I#s&jtjAf| z%lVp)*|7v~Mz6;^Bp=C2@tb8*Ac{xKZPk!z`Fryl3emgxu!jrHNJJ)ZNcIJp>aH9rX*qD~{|M|fYb5#$_z z^}i?v8i3_v3?4>dECE;yKn=j^8N_+;e9Rfo5`M+Hp-ETLdoiIysDD%fI$^p?qWzDu z_)V!bkD)fwW6D4~}4&EudE^iK-=w$Bhx#sSPjfde?{_c=I#S-&|zGDFM- zUzG7HZQJN?D%-Z;ppsmbP#iVdJRQABk+9%R63V57;|R;YnTkZ)Y%?1VALiC^Ix*%t z8;|Fs7^v~^A?4*LjKz2`0M&TRg$0WkTJ*E38m~ifvX~CmiHxS>3F^u!c7)^=RoaZm zjRdVrlrL4H??j2Vn2|f6k*gW`R~*1>MmT_z8TkqhVAgaFkeHDqSBUbLGd68fY~JM$ z@Lo9Dl_~Nrzmt-e-Mjn^PKa4v93aiEd4!vqOF3r&Hbu+fUS1}cL1nVRY5v$f#K+*h z$M~Ze0<)3#QT-KoUoh2oHu9&U7^so=A?0Z(jK#<^0M*F%^bjvak+PV1)(uU%(ul`B zM9ZF7%Cs*M4+^uMe4(238cLwWq*tJkt4V(@4qzSv9Kgw>zYGU3>oo^ROuDCM_y!zQ zlBbth%I+E7N=4%28Tv5y!#JH7bDfRGr%?>lX!wxwH5A5TG#G$tG!`yr8_{BD#eb_K z>-#8P7Sq8x<6}B{KMUzS(#~?Uovgh@u>qDL(hQ;UN4+HlCv%F9~9Q?MCiCKuw*&@G^6H`BMpsD$KnW%wk*Y` zgE*fk;*_)LWSoc`*t8x;*gM$t44ep0HXUt0M$>dG#Bm*&m)aR#<9)oBZC5xwVC_Et z1Wqc-Vrj3<4)D@^0EWc;HD^c@)@%9zaB|uH5eG1P6<#*&P8`8e-)7jReGVrA)g*)I zH>|Gz6Gw1lQ)*cDvAXsdX%FDNNBJX-H2XmKT^|5W17YqWbaM9{2nGosh9k^!3I7e= zdrZPTUEkO2XtTP#%LBP)fhIIA1UTPG|ODCf<$;%4%mkq9<$+?gh9y|QNh>Q5STW5Q8 z7Q8@2VX#o-K{e!U=sZX%VYJWyYsi&rLSjfra<9gq?nxEGa(J{)i)Cv-Se##@cr_JW zK(wF`JsnpDNtH>g8PC7nheKt6B~Rll0g-hLBD>k}-L2AhT{(-BM=!}=#Uh}=OWVBo z&l5YZB#mM4qfh6>Sh zC?VS3k~Z9U%xRrIs)YEPgm;;IfK5cW1yasP)-fp>Sq#Xp#F7*Po(e)F$ifL}f*5T* zJRr*#PV0=~RZqpakkv0^UQ#W;O_K{wHW&4qDcLqrlV3GapWipZdv?F>ggv`oKb-jP z-KX{aQpQC{MbLWeq$Yn)nSk@lPfe=wS!8OY@2o<)AyoyE6nu3!0hz&dlD1oeJr1Hs ztTjvig`7lqh~*GFS_btbRH%;JrG)oXb-t`|4QB;coqH(PY^pUFv}B%u}vB8`dCa7Rt#$*Q`-cYckQCOKi@s*-#W^OdT}?=_h^ zsmX(=nvh>LHCeO8g&?pZbTeDCBrBa7C)_ARdJmjL`YT_N;&0_ylUF;um1j*7@5C`{ z@)`8esHaN>b%NM_IoE>tZ&e9~7poG(m4G`_Cz3|JoGHai+J1J>CL!{Wd=18O0|dbb zNvL~^dhKDcRNQ|t3FRJV$|Z}pQjf|JX-Gnz|)J) z@~5Q`J;mYu+|-b0LdnTWzv!ZH-0%w#T>99)09Fr@9x z?sP#qg%4JeoV~{w%de^_{WEB_>~E`v0ng+6L)^CegMBiOFHxg(M&FnA9mV2$ zm85SRo~DgIlZ2TatUM!hPWx8XwZjK6U9&{!9RiKi2ornmMt}pD4_P>X(<#?54q!gz z;s6QjJR|g;ii1kqm$FZxXYi$tHnT_QJ%x%ywG^oI)Y(^#SCV5y2k2|1ETSn+HZ9|P zHODDm#X2b+y4uyTi36C`kpnoX<8B4$MJN3Nv?c#m`3T$4@HytPOD+=G*g@m4b==n!=pLEpvuf{h^O zsNnxWG0>=BA7k)G6vh%2%mCD=;GU@j3l75O@htJctQ(qiCA~+diK$CAU4{~BnerYF zja(g;l{kQTC~yEL{XPQ+FzYu5NM;C6hvgz1RFdm7IV|T>kvKUlKFr;L(}^+H*?4qN z4Agk|ka7bGV=*2KKs6pcl1*<$ak7{W)`^U!V|tQJ-;EM&F(bD_BUdwW7Y<-HBOJiV zjC>vkFl#yoNX$sT$)@+=y>PTEQ{-KKJtZ%@clmRi5VO2EK-#-BC7V8kBRH}u4 zQWi7Mx}ix|Qe)gh6yXtC0k+hpRubsYBl00c3AC8>A~bR}=`9?a=!4Ifgzh{9Nm1_MxyMx0zK z!bwE(sk%vgFN&ANbg<6&n2z4hl4R55_#;|O*4{MPG-(<=2*)GS6mEaK%TX8)y#FIG zI30LzIV=((_)l~Jkb?0ALx4@c<)=h0!T2K{!T2=FV`mdC#-Twxq%0;0bt?|=Yj7Y) zQjZd1(QXhSGUYh2PDgVO2GuA;bI3oQ)p8#hr)t2Qzw$9}4F2yOs3r&cbK@d^70ZIg zjvVPF2p&6f1ZlKX40D*o^NRfkr6t#4^W$j}y?Jh`_-0EdAReZ1Yg3HB+L1u=1_9&l#cUE`&MP!8ZWl-h~Smb2pk?u z-T?Vk9un}}mVBs(SWr&C77e;NpZCk$EkrsU$rONOBAh^3qd6Xu|3i`%c!>FO`e@Hg zglSD9*{aD7CxolRGbkZ8bs)cL>aaoy5GQf)G;l+WWG44p%eey{jllHis7}J$LJ7fX z_7mPLP9u4-CKsG+F6!%1QIlUaQP1);61~SxYI0rfYOD z?F#I}R$zUzHW-B~729x^#!0JJ4+Ue@`bazZZVmmexJ&*Ho`VOcJ8rk<1s(Oy*!aY7 zy-cq*(y!aNZiap(2{PN*;ffqAe2A)#B4ShjI-c_AYWY+cHL@L5O*0-Id{W%D`@r5C z9?ZE`E*fvk5x0KC!-rLzOD_JnbFWi+ekhVe10QK7A$54NIDSs(mh_FPR-0ng@VMvW z0%+uVeDW+Dz5Q${e6CYq9W9Z2p!#`)RWlbD>MAd;iRF8a^yO7N-qJItal}~K=Qo%O@{k~EK5e3rRYu9O zn2W2Rk*jmj!~x9af&)02i`_VYS(iCLU*_V~IPgq37q6s(adIwvSo~g`QjEpU=HhM? z12q>uq}+qTSj+_jP|d|WvdR`ii~XS*jBlbySquj2Mn;1%#ra{sLaDXbk)J^$S3B~5 zIDpxXZ~!Mea?qpD+25?>93ZhHIp&8QgLlZ$zD!XB@8h6zs_5(yylZem%%bA}>4jd8 z{IIidFh{PXf_bMiKP=5#d-U(6IJp>aHA7G#X zhYu--pfDEW!2nd_(IY>sfZ}8^9jp^Rrla?>B>Fcw-H4t>c6aE;fAkPk;ugi@y8nz_ zE;B=iL-?VTa&(mTQ;a3A&Ok-xy2X_8>2kQ7=2YmJYH95b-NiT+W=qQf(u^`)PO}Y1 zaI|_UKJ|Y&jSriigA?J&riJ|ERNKIL0S@BGsg%EaurlPbU7wQXmEDiM1t$aLm9%Yb zztrKaeE>Ll2k*xL%oCW`p!fui;3(=D9u)r%Cju38+ICn5#Sd^0M^4T7p!f|=2Ffd^ zK{4lW%ptPmj&hxK8We}(067ebV{imVQP1$8Sc4OR3fg&4oP~opa%#p0#ickID6gCb zMX?V6r$N!c0dg1=*Ww6{qMqSFaWhT?Dro0H@fIA!kyA51C_aRff%3{}P<*Nn0H;Cm zRU9CPLGe8t!BNyRJShGbCju3;^PqSb2XW-oj1P(zuaI1P$p`v7nn6svH690tXi zID(_7XLwNjElz~zpfHt)8Nm@8*_0X)eUymtSzNd9-lP1H27-O{etmX;o*Rhb!anmJ z;;~T2T4F5S31xG-bIOnWhm8BZ3D603!A{J zd0d}MZG#in7i*pM1;t% z8GJ;A>I0MB$C(5o>~-_YH@85pJ&{qRQHE=1YBiE=&qYe^k%7V!wZ_hBeTR_a+JO_G z1_hUGvD0qU8)Fmj-TFqoU9EQ-omL`x>F3K@;b^Cp`~*lHh>|4(85&>M*a`Ik+LdBG z=%5ciy}F~~@+6C~Q?Hv@<4vkK5YEstQQR*w#r=Yp;_?e+{*^RZws8^2^fT}gN6lQR#<`3@yVJD$`=FHbkW zk5T>sX$t8UFm*Ff_uGUzylFxxZBmGS-v^=dfzSv0BlPjez%kHy(4%81qAe3LX^TR1 zFlp#n%O&FSTmWP)hW4olXm@!&(ai!FC_XNs*!3j|@w9OvI=&C$7XtA?f5Z=ZSv6(Y zc9%Q0rJRGY?fiVgq%#S33eg#TFo_tjQ+=6~xLUf47@Y{0AxA^-A2P|)jNqk08HsWE zhQpZSH&-#UYKI~K{N^gj7=O|MfZtpt=30-DHD%RT+%nO`qGromw9o7*ZX)8 zRajeT7xJrYFyXmVw}@n5PvYXvW`6}}z1|~Ssrh|a*Ha>$=Hct;qdjZ(Tu76jh^#NF z)~jQkG4Shz%*j3Eh=Zrf9g;hYa(BqC`k*EpoIWn^_fh(6@+QA(@?M_@fr;#Mc^&A1 z-cu(%cn>8W=M(qG9QEKLn#V%*pt!3aJs=VM7DecpH}hRhYB+&h5$;13f&8i|!iJ0T zpfJ&deBKADp!d~D6~2+XDokq`uLX}$<>Mss1ECRwRavUKkzX~DdsO5~O)@)oVg1@JhC! zlYKB=WP=ud-O;R;p$=wzy)&Eiz$oSNu9yq?ybcW1gcm2d!+DK^=5ZY%OwURuQr`DE_e{<=$apDlbQe^UdRg>Q_-{lGAfmhBQ*!<8 zJE@%Tam1znc85o~^a&fiq>q~@UbahLj^mB^^}FIoB#~;mY*%zQ^w)g-E-TwberIL7 z?kAu25N6U(Q(v|V_SK2i8R5nzxdJr*0$$tDbGl)EPA5tXiIx8_dQO$}H+w0s?k^o7 zjF;=iE7+u>7pzKVbCoZ;-zS&KdaO+c#Ll4o0o5k{3A9)CkkoOHm(TiL+_w9_kC5_N zvhwPMv_7X)%H|h2?{&JyRZS|9lO~Hllcd*ag}M1utbMC0-lLAh6wi{GxC9!h`7-v* z#HBcZIsSqJIK>GK;Q;11Ar6qR&NDM{9S$m;(a4^{6kfHvmWo6*8>sZ`bF`czyNJG4 zs?;~B0Er4_sPT3a4xCjD`>FBP zrGjx%L?0Hv8>bXwv2%*-T_^^cBI`rS=TR6-iYx=rQe?qh5{`zU#@p9XoGdA_tP>e6 zM@}`~et}YDF?m0QMy?aqpK$=Qwcr3w)?)Ed=#*<#We(7nwRk)ZJQLR9DCklu!oh6u zeOP=lPASG>XKS$@#Xzlv4=I0(!dR>Y1JJAmUgK>9#mQnVSSK=Ci@a*Q?Lx`2n2R2_H0erukM3VhU5&SYK?${Zns-AZ)y&wpvA&E0 zn1=!faMJH@;{ay;<^ahI;klFga~xEX>oo18{x=nglaJ}c+y#$A9SDrM&c@@>C`9yQ)pqc~Yi2kV57>FE6|sqvN^!9@$n_7SV`Hskr3%N>trC#{*9 z31O*B&0oW@<1}SzJ_8hiWonMVr*x*K{ghSYY_4$Rgp|E01PS7Oke{%+WN)6GWN#Mh zko`yRo$i&#N$;a3X@PK~ZycbM!<*u>zNkvZQX$%b4kRgjQX_G?q-aZH=$)E4+ zk5Dv)lgLZS1<G(22H8)RVS=+~PjSB*~xu+8>#&d7Ej9?@K6leMv$*ZCr@H-3Rd` z`SY9o5kJe5KYv5GQ;7bz4`J5~?QB;_K5cuKXvK9oa)+Qi#u-Y16-ev%WDxf$;Ei4Di zc_iy{V_ujRMaCyK?OT;?>%7>;^TgIdBiIqKBn^>YWl6wuTk@fP&+gZ8`uFU9{cuuf zxVt%@_siTZL^>V#aN%*@r&889&G1jAkM>L}oegQk6-}f#eOyb*ls=o5kY6<|nc*~I zy+=;+E>a?KesGV@QQos5jri4?aB%v#ykCjRoBXQDJD0rQ*qn89c^ypIdQYA7;1#*+ z!K_Fl{@rU?0@{U(}_&-*|X^u9W&!bfsfg=tMA{x3~FP9oofik$qa ziQFS2IFYMIBM_dB>Lk1$>jWOx3^ubQZ5c^a|aV<$CPOqqc5 zOPTiZxAHXNH4e(hlLX1i#W6|n7>Bp=Btd=IhWDB$35uQfWFeJK5@h+83&4Aaa(k1Z zyot?{1h)V~S(4yoRZGJg*uR&SDj}(hx((h-!WxDGl04oT8Lie}pMYkP!7s~CSiT}yxh@9V z(iyLXTLtum)mD2ezdLEP)+n}5dGfZQ_*wZ^ex;56t8%l_O`^POR~&JrSSEHa><`3q z9No*PYerPHGkB(96t~^?GYt)l)-w%n-#fIGrwJyhgiG;$^XHR@jz{Uw3!O{v)C5^pn~3 zekvFr89K4}D>$VXi=6{wzJp?*fiXVX@>3MX5*Wh()WDc|WVREdjQydGtUsVgSwdr2 zH|$QC994HMpu-SNEXt!z^K#0LERLTNq)FeX^gXJey82F9w*(rwT8^bSfZ1|z04KE` z!U4=`%>fe2F&DfX#;kOpF#Szs+d3RHtJR=L-GiW-duu!_RY$9($s4$EHe(dUKy8MPp0rUIi_KsF zs?C@SuCN$a^s}lOFGO*&SPa&Qj22^x(>4AcrPktkycQa{+K+eP0A~Ba0i0C)pK$=Q zigSR(e&m?0@kP8tj<#ir(ltJp5}iF=<9j$EX3=qgv=#1=uJJP*%#mv|ny!)Ntvy}i zVVqoyx0)d_r)&6(pd*e!eF$s>IZqPDq8R8T;X}$Q6vi@1FaULunAa;^<4hDO%QV5d zp-ETLd(^R;<#3j(kb%rS80Op~<0i0%tCJtcMZw`>m5T5B8FTz13xq7Wj zX)iK)n7gS+oIFe)=Dr!H6JxHk@pvzaff^4VQtn1!EXIQYsK%p5y2d>yP8QR_I^knF zdOu6jHIjYI==o$J&C)d&psM$IEz=}D9p-P&Hf6rJ!LZBvR*2XQ`8#7s8IhfT-e zM0m1kAwPrAICUZp;>f9#S9);0Gd4akEHHE8mEGGs3nv5Rl~g%wNGzM@3~7A2s1E?A zIeaS)V4h~Y21OM|a1`|n4~lDXB2Yo6ZO1}>^ri{>6*!0^r)+~lU{3j9UjJe zkMc(v2zG#jm!bX!2GG+_6*s?{UDer|S)4vJw`LY6grzczL-5I`DYJMbh>&F#pA4Vu znZ;?sdSn)-8c3PNV$A_7ksbUT&n2_?336sJz3@PQ1R|;^&K-7oHeO{!XAw;+GS8CGz2S=b7yqd_rfh4mI(R|e@vjcdYYt=dlAPG-K9DjjLU z6OhtB#9B?)gkxT8vyMo$u!MN*LFAkL|Nh zJgy7TC}o1Sv8I^-9)?kR5LR(x{|8FS-J%iUen&#w<1|;D9TT^i9lssyVOK#Ef%-YtAi{6E@8u zziOIOB$_j|Y>3I~P6HTdn@**Zw%tS-hx6D^+om)+E z`_jzaor2yDMwiKbJ1uM9#Ab5#7sRR)olP{L5S`_vJ-pJ*M$lkbs2l?A&w%#e`-c*J zTpWt_Y?=bDf-98wYZLZd!q~Ifi#@z@j>MjeD0}cB$%|VsPU3cn-)t@coaO+)i(5R| zpO!+j#^L=Uw~IcC6L1qOW>uKy!@Pulf=w^BLbI?2mI+~V*kmp);m*93?w3eW5l`yiqq3*Lxl_KBUZM5^h` zzUZCMU+nrn@;l4y`*-qb56SGKpQb*uugPZC5izsIyFe6IAnn=kEO| zZrlCyzJ5y}s@ZxL-`#t!`f=?`@^B7M)54!g0{*m;O?<-EzE$<^ud(iU$6|_IF`uMy0H-76qj3Q9kunEJSmzllIfR2sd#SQNF@=`|4nl_QTY~9koWtfA@(U>!D$)_JT``}H1DF+)12`#W4F@nQCI?6qGed&ubvSTV zZE1~#P(tF>u^dj7CVRX-i~6Rp}an%d>DnXgz_=~HI%n!g6XGGq%6U_ ztQ#3EO701!-$CiKXx+Wg$aPBlDGp$^92~&Oa{K`YFsn5ONGykEg6ZPp(1|*$)ySS; zIv+aZIHmb8_X#+i7;~L%#u^j@wHZF7oQ1+zYz6~RZAOm-(~D4?EEa=xBBRBa;sn!C zlv<1Z*ba?c?ME92Fxw9f;AB5uhy$2aoC75GBgX{ONxVajwj~vmna_P-H>E^p&vbYv zPKa4_93UN-*(1U9pKvfouBBo$r}I9rG;i%OmtVrk#dxb367%A~X9Rs8?+Z49oF|E& zqZsHU;X}$pD2!#2U;yeQ(KEqx(GxHaBFi+vx}ix|(tC8NI&}%A$D)Kx8VxY#u zhm;qiFc#y%0951ABf<0*6eo-6V4d(W9lf6=38p`aH%z17k&i6FbjG9h*La`J*lz|) zNKD1=e;-JmruhB4K_yuH{-@znI)2~fj73E9pXALQDW+eD8H9g77rskO|LJl}zql=o z9U%qc6eEt=G2Rl^#~b2J{^-kOWEG+>p#w}#G>+qhm+n7J0>*uTGtQU^&^w4szIlY7 z$H-sBa-#7QKkyO~kDvH1X|z-rBXBVuaftvAd9jU0=>8rWfjeeN1R%f4$FcBSZc+QO z%=3FC=&9ag`)n2u@Iv$($^^{;lKe38C=bp4HGOm+O9VLncvZ|eC%EPW(8#ViCIW2IB#RTmmE{6dS;()NvUtSwCqnmV1j5r% zorHH@?!ueJi2%Daxj2csjf$H5s)>4*Cj#g_c2bk)_^Jv1R-Op(3x|1%$3YTz$T1G` zTMlpKagf3b^ooNNtA)fnOUFU>yy4*Ez)%(k`3drA4~c`MpQb(zat9B1>(r~G4M_ED zPmDB+?P??c;Kyg>8T_bsH+#h66+?4u_Z#RSgK-)~63)1K_~hAlfdQ@Hqu)$$U9DK2 z*xuPOT!tG6OAWX)ump0h4?i95W2jB6Z`9k>dZ*E8t&e}w-(b1h;3$gRL(D*}+%6Exv5xWwS+3Qvr@gntPTCa$FogCzMF~ zMpc_%#G>~IZu}`Ua^0u@GY(+hr{@4p`}B+dM)ew0#kcIga)4x?K0^%I<8feVjp(&k z-%kwLQP3sFcn}{JpNvy#-mPZ<&b#&NQ4Dmq-iMUGMPX2F(RS-$>Jp=CF8QpEs}U3@ z%WgfR((Vh&2Yo+b12lgM&G8ZARlk(!90DgM1e!7vrsFNX+pd zJ|pPYcwev)gl9ZR5eJpz>g8i*FF3x9ibV6V&Bnur zxzEGt#F*=BJZ?lWP~+i4%4<;=i-*YoRO8Vj9^~yPP8QR_I^knFdOu6zL6Yr-=*MI= zXecl)Ku`7DAdscK5S@cOT`Dlz?cj zKz>3W08W$oX*hs+-tig==i&&CBA(%)a3xLzD(JMuINH8vuI-{!a9l^`rN+k^@4ftN z7ex4srRU?MqAYeAOE2#Oz-cVK4hP6#EZvSHII6=8kEOeDB2Yo6$C9aV`8_y-Bb!pA zrjNqqJ_F&qc<)jENCUw>YyD4lfS&%YC|quKd1pKX`ibTs-_)6ywQhMrS1RuLE8yBs zQ{3~wpon`u96qJvo~=iwBG`G*jSo_Uvsk#ma^|c2M9U?@`8YYknN}@NcpcD4fw*Y7 z%cHUP7!`nU=*!XMpJOU>MbL$|FqejU9MZV-5qic8+&YSL%NVGfcggZqUZUZV%0r~l zQn5^i6syiwrElD-Zlwt-O!qH-<)`n7;jQ~!#%q6Ac7m33#>rwLs zUJT*Ef#*UaSl3!&kjbyI`onXlWTY(~TAAMf3a0nRK3~Mcu@J4NB;q5N$9z7OKH4+F zcv@pV+nNk;LbzDRDIqqol3z8kdW3H#lJsZ>ziOhM;)p6T#b9`i{i7RQ*+74*^Gc{_2jXT13HH{o@% zgmI90Ey%al2E=Dt>zqLtmb@$H@*+NR-Spa zFPNB|{Ts&CH2N)(Ng;aBOP;(O^B`%oY~uj5|0R3`zou6?=H))@fr-TV`GlbPD=0y8 z$v>Vxbi@fd2nad=+NXl9G|!tCP-e8_W1AOHmN@n^$}xQ0@B+#YcnN3yfs_G1c6dKG zBV=6WY(|t~$-N6GpXMbkZca`njl9fBh62hLIrmIH9Lk}9GFb#`1(eTs&`B=+a~&S# z(kE>6l0L5KJaIs*%ETHLZ^R2Ii$!=M)pX)Ov=#b`6;LL>v&4bx$)`Pw;Xm}#)F%!+ z#}f4|6$V}r4CWE@AB=_VN~64DvOAi`>xO%FJbN-h_ut+2Wh5r0OTLo39r$$(Go5EZ zXI;5I^05xggWJ0s(BIDq+JiUVYh-1-3yD*1=9H!y|e zkH14jqIr?#$Sp>@eIAx$2;W6tTS?S#3X)Xjo`BglOYq>stYgxVkX;22!vV}H$N`*G za2XC@RzVJss9=U9l{GkURyFJ=!ek|MDYafQE20mJH{z6HEOrhdd?t#4h7kIYvIB*& zgb*?SErbwHQt6;LSwaX|Co)=&DNa&(B}%Quio6^exlUwn!~x7!gabHPk$2+&W)yk2Nu1PEZt{G(bCnvJEHcQr3rshHfrUt z8H^X(6{50Cec4$>DlRan){T*X+8uf>H|rhe#TFhD>Bi|w#A zti&a6YShEwBx|he(FjJWj_M@5M()C!#UY>npvlEa)Ne#ZO@7rxJ`4Va|`*r4_+rr7*`tZ?tFtZ>gDbzA)lwEq9Dt~iCT3> zr5zMI?MA&ZHbK2{b3`XhFxg*_cnI0w0ruyoUX0=aTmMCch4YlF0O4uQD&QHew{T?! zRhUN_d8tB%aJ_pO=do1)NbtI}ee_Z;Had=c10Qx9yR&HV;pv(Z^ zkMeLmv2gMV*Ar{(M5=~xy%V6nShybforUXdCZF~!hX2q{Qy;GP?BX?Hv$!K1xu#g_ zgsuF``(Bz)Y@X7~J_7OnqHnDzFNV0piPqYnR&BL|GlQ*A=$5%=YXecn<>GPbx7D^@ zhtpM_s29horQr?i-%CrCu-vJI+u*gtvm2t(_^pxAYONhM*8)rvep!CP@}U4i{6^Xn z<6-<|yU{Mzmahm_u8VuIr88a&w~9Vp2;JR!UA;3lJ~3P`7n{xEgky=`LsaRDV0!)Q zcv7GNc~#I+`y_}5Hsy)CXJj3N>K@b#M_c1zsXAIMP2SjDJU+2@tU+wjWOO>rmEA?~MX6S7 zfoyMq?VHMRx1m5Sz(nGdUd_lay1~2!vV|&gabGk zkmWdlS;09#VnA|?XF474kfUjtqIjm0Q=+rSGhKueVip|-NL%3^@l0EBFh{P%q$DLbjs8Xr_b7j)fnXnL@5~O+bJ7(>gN^fU(mJ{d zCgbUe((fLFp8rm=0RB${PtpPW`l+ah)?bFcQVPu%J_mRr+xdpROKAS7=YK$c1r*TyYSe3l%RLSXrLryZ1v^#mez8 zX`4)HAv%yUUfToF9_3N?4}-#kmVY2M993I2tx@(TX_|o(!j)|ms%+#}P1!sG<`bpx zXavI3QJsW0l)La|ag_ZwO)gHNekLkv@~bB5SsrDt_t;5IF3(*}P8VC{Br$FaL>Q9P z6EUs8d{k=`wb_L4{~4#0WS^ZU#3f(E!-<9qzEqQ!lM38`ssQ;_Q-L*31nt@VI=ZE~ zXZP#n+?th6jT3GZBE1JrBHisPQv9tvapEu3!sA@!anr>6ag3V(Z#Hk-oSHWVqg$o# zx{kH7|5cM1-d*mjeVjDv<*X?#_l8vBgtBf*Et^P6vo(n#pO?jhp_|Y9VA}bb7c+Ty z{Z|~6kE;pcd(LX&nOyNpFA9ZkPa1itONQi%xld9}k6n@F9s3-TE6ARNmR#|$gGjmb z|KjkdFcS1p-1P9|3T7nmM|pCESR{KTSBPDbM5>15io-x6SaJpVoh4VCNJ7sZZ6UfD3Zhn4iVkIajE9U%slBz~F& zF+{gfW@%mq4@tO5>~?e?YZJCON3}l?PZrd3+6-DMyE&?@!4oYmjN5ki?5l|uvRdjX z7w_A#o0g`P--nk@2Swp zb;`N~2QV8D4&Y=!uEGJ#280771|-L9peEiSN7Isu9LcA;aXlqEd*sxL#>N$*ita_X{y9!3eZ%n*NuMy@l&!B0j#6!TEv08TT+ z<8c79esh3ihVaY=T8V>7a-F6{%?jvHs#uKKc=#~)Je*F9xz5JpG86+f9zLX$P#BBx zU;wJ|=#dTd926&u>0q76YC6QprB)M#@0uhdAUT8VaVYt6lt7EgcnLIeH5sqN0n8?Y z12~zC+i?K1R&#)aVV)-AE*y0FO~!|*NSv0WKFs|OoKB3n&L-o26azIGKBW8-g|V0n z2B4aZIQxeWt@v+s)A}zcUKZ2AI^$zHdOu6Dfs!rq=-Fhig>E4yO{4SR%V~;AUha4{ z!sC;VIoTASY(G{Ik;*F^VWgO4!5QG!`FumlC1&}GY%$AHjd6&C9N@vu5SvnjqkB@x zISy)`I)GT6qd{OZ(EUX6kLNYYkC;Oj;Lj5{e?TwNQNO)QZw_oOHj8kTD+J1l12Xxm zSRC|7>EaAQ6S9w&xb6c=_bPkAq$XdbNsm811FLG!B?dCTY3EW`3`U8p`pZ)b_@(Y+2O4`G*qk~ zyh208Vl?sV)1jd(>UIG*la)q!GL)04qWei0=sBmre||_lttX%M#Gj@UHx*E5pqaRBof2?uaGBY71LVBW^( z0LdB2d}?PHyV5};{8yEAZ^eP7odU0;RgRUZl=qvcVASz%Ip^|W@yBpVF%~#iqE5*@|!gCo6I^4q#Ss4v<)p9K-j9@D4dzmnjP08-&iO6M#K@ z@2NN;X3=qgv?cBlzPAYnbL85LhVP|$YY*Ssj+2Y=Rx>2#2ppdgbPe7YYy>$^5-&nA z&`H9FlvkrLmPvvEsFOs`@V$RPk+Mt^tQ(qiCA~+diKz?U`zT7NWrp|&G*ZnBk|BZv zn1=!faGD{$fdiQJn*$^>gl85pfh}ydv)fDC^`cL~K;0 ze5)KP@}3JlQ!Sp|v3fR6h1ue9fV5*}s>oZz5ge^gickGl|GZkz~DHd!k2z7hv< zsZ1DGcguR-x;9Kli4Gdw8n$B94% zZLl4NioCzX5ggf+8WDX|J)GDch9k{lxmv83!jbVtt3BRql)_eP z6)!%rO52m4?9PX~39IGF?ui~JL6hAD(5l=hO-8Gr-z4NJfPWRIf^A$UT!}6PCu4eI zdZX1KMpjPvH29P*CyXECh>+ct9vqRvc7-zq+_;Qyz`2C&E?-})k>ay$QeRY@PeOTG z?eg(B3fKAhcn35(hiG>pdMd8uk`0hb2|t35p@3y)a+Vq6Z1b+JdzqJfc%bbiq|s90 z$%D6=SD@{N_|%HlE)++=tQt10>Xz2gU_+Qh%fXJkF_u<3{Nia1(l@cv(xcRIFOKl2 zvl=u4r`-}mOMaD4XW_Y1w`3$P?rio~fR5=sN=&Cd0mQ?y5LGFW+QMHO!91LBls?)s z8g^R43E!Ye0VjkD_Et)WO|axwO|a7tPN<_g3GWt42u`z~@Mdv1;b%3u;AC@Ae-afn z`BfA3EDtBtd+ekppYT-^{H;9ptmN=k9(zXS7RT7Li|M1iGfy0Am;MD_CrcPt8a@^N zi8Sgp751oIin(AkQ;L)>9T=$A;p%{~V!PU?vpFuhU~W=MhWYW)#nM;Z^{FzcZcr(t z!RRviy{BY*uQ)5u+B}~6qNCRW*9*~O$v@5+TU&qx5Y;9kv1Jp(L zBC#bYe!zU7ewlRbMAo$xUR|TrJL9e$1YLU~?HaCvWkQgk0w0H)QnVlD0B}A7IM|<- zLNws;em>;M7|MCbd)A?Swiktb=x-&ByoP>;IvIn<#gi&?D>ZNovNybf*6 z;ZZJq!bUIYu>p}$xiTJk#!Hhu^Bw1)&6(@#?$Y+NjL z#>lE3ZU-7+Ikovm7+;QV{R}(SolSK#dsy)m$3Q_fefK2A2Xbx8^c0qDkF?t1_y`E1 zT^+Ag!)6k|yk>}2A#aVaJAvXV7bh$qA_e+K+EA=N{*v9vIVIu8hZ)#UHUW?98h(kV zHo7|gBfyw9?XB8JJ+?t9h_L@Uq4&m0 z;1O;7pU_A>6SYTy`~(Lu@7r?#r}L%X-~i_HB@U28fq2&moqq;4@?1}>)2Au4Bx$Bl z<2leH$2v|v{9T3w&83`mZF#y8;|lD2r|MTTDX zI(43%Po2oHb&M z!6$W0y$Z$1VoO*DGTM@%yl*yH=-D*$?zfNwJ40mWH12LWW+Uw@tVVLNAa?l4%QhT)6x4` zlJArpbwvM8wu@&x-|4d`>s)t_Q(HVa-I2C5g#{ts&JEnZ6|H2U* ztx$?j{pUORu<0S32v0Uy@|_l~L;VFuPNmj{dE`5#d1c?$D&SB zTc3slm?spkL2)jQ;3(=D9u!yNM4*B;*bYO!Qw2wGWK(KH^pWr6GZ3DS_a5bsG!X0~ z?d914dQQ3`-^n=dCat4?hRJw(@`AcSub32G?Ood32 zeqIspHAU|yI#Y=5z*R>YS#i3;(tSV11Q_#f&KMA?60*8+OC_Y2X+stI@eatcSP!;` zL8k>(=b@-Hi$8*@^dTgDwaKLmM2_RdX1hw#!kR(5Iu;IS63z9UiHQG&iTL9gL>zsL zG+MTCuF8q@?F4yeO?}O)vpin(E2PmR}$D`&Qdi4Cxk28VbI8~ zY~)u>*`^^0Ohtk!B|@`)p2%kWjZLT4W` z&ya9g<~9sQAC)rGyM~ipzCUF6C7w`dnCe-YOmLF9n9o4POn%kG{G<$Y#{KMOX$=#d z-VZ0ipO(AeXL0slRg;vH@IzGi1+{GKl{hv8;v5@7jwgVC+hcU{MX&VSP+ zhARR0((fUSdU@%}TI=cQY{)qMM5(ZT5GIP?3IK z5zmd$Pl*%?(F0x*Kae*_8qkZ&vnq3R6>Wgw&Mw&XE;2{rBB%CC4F4ed4i|d`SMEe6nmhFR1FE9 zo1wp0f+zW%C3s##KJ6h1p7hhyCwN|+?8)*3&yjY6UrU*Ps^?Wxlj@mtIeXG)H+7dx zJmsbtquky}^DBqw-soPL56a_`Zd!5uBq`Z8zx#MZC&Z+TJ`>Nnbmjai&}rGtRV^i+ z;Q5NUZTBbpaDu0-z$3dluTXr4vw5`;6bM_$HuR(`W{)0I-pV4lg z>E+asH`CYVnuYvFoOR|t|CaSbI_$P<+=8<)Gitf5gabHf+@o;-v&M0NMB}`(ke`Ud zX4N^?k4#y}$3c%AmClF1PsItv`0E^|xe3KU!!&(Jc@_#|3DaZ%YM3UPg&d(MS%NcJ z7c$z2DZcLL29#P$koOCqk?WLoGY(*$vN(W~0eK4!U{-JrkQk60vykt^JLG6uQc-64 zWFg;?5}iFt^>a8OX3=qgbfj62Ead;h!5q1kass9^3pveOdl1aHA7;a<9$ZZ zpYgt6BglD*SbPrVN1#)L4=G2XFqSET0jN_%&n)D>L6Ndd6RaDWbS1q#A8^pDh9mn1$#1AgoXmy~a}QgOISH1r#sHkn z#xfKGH5)#ptVCgOQg+Ts${}}qWFen{;$$%$jLNL0Blj%iEhvE&ld%~ZxtfgaIDpw? zZ~!NhF^&V6O$Gd%$z=F2_l-E67;~LX#=B7r)MWUOau*6?F&PX% z^)wu_kUx*&WicJBGd`xH_p>AmIXRDu-b6OM>0wpUGlAc2na%$zU z87EUsDMoz$8$C!gyAb^vRd6|1T*|h31ReMSi+;gb1PYSQHtKyN#lYrbvp5#E!)8ky z(aT@O5}_yZ^EaU0oirs8aq!rs14*N$V%Wo^o>#IFq>D9ogl!&lLW2FzrMe2)VrR!c3&LK_Y)Yr!|Q35ffzwg#Aj2h|p&rqybYmA0Hey4;uwkl|1{ z@M7Ct2U689KqGK~ENMmLS2;EUp4*ZS^?P=|j?=$q_v?p~Vq4wK`Mh7|ZXwd?NTviN z@#k@rHJT%$DId=rIg&owGx29H&s)1d(*~S1T*1zztg$H=`BhV}{dsGtyfvLmPU^d! zG9H(apZZSg-@W=$qeVtxZEX7Z~h z<}8_Ku}_jUZ%yxqli**QyWnSW-r7Byq@0BRSycGsS55e{Ja0|!v6Gs7Dt9%Rp}e&R zHF-Iyz%Nl1AiruVFwJ>udJmjL`ZHgV;&0`7YezV|m8UI`6_jJz!o#o{OogCnt}#zr z5DQ1Iv<0ypku2!aX$vePWC5%qDvk1FD6i6^`$>wzDNhq=3#XD#d&qb6)6}Oe6veH* zBgIa;QE!Y*fG>prEqJQmr7KgK%Now);POZw><6J{b{=8t$b^lWcFda$B4h^0L{YT&X02 zBh5WaB@!%-pA(8BeWNPOj#%g(2?Ql*d?Q8| z{j83wZ=pC@j=ESU?7o^DtTzJaFhG;^qbZK*eh{VBqJh6;opeeHIpADuUb7^HZ~!MO zatID!R&frHSdkoKx&ypJj@D(0V!8{^IduZC$8ufyco`?AmsPXV2#Nly8;8l@4p6XR5`sJ64zARG2Lu2S__s zrYjw;!Vw&;Pl`|dU+Lh(rZ!H5Cz~u+I=m1EapY9W@66*$hcvJ3{^YGV87Qx$b)5Z5 zhqv_s;518r5CtnO6|}*27_M~KgCjVyDK#ScxYEIAAp9Qh zJ<1@OM_iNL1@LIOQJRcaL1#&9X260B6N=bwb;641Jn$^0Cn7sK9%RQNt%u-K zI?~#3N+aT{^&2Qsv`bOd!dC(h>U_Sx<`Pw1SYND>s|ecUhJuM&bw{Ngh{MA;EE<0( z-pY(lA!=HPo{Vd&q%u-m^CRsL3HY>z^T`<8ocC1<=X(i-M>n5K8Z8xmIQW`*MK^DV z&zwkP^Og#jfeM5-OJ!Ws+8AsIlMqGNPd5fIOGj6{hPm`jtf}<$v+TtY9_n`$Gy<2~ z61Yr$l@C92HnluMtm z(M$Tc1>%99!m0KO{1hvuM5^h)&*&WJFIKOb{LboCSIDP5i{U@?)6@rkM#8d;lp6JR zvr!vq@tDL`{t=)f=!$-rujq%h6}>gIF4g1gp`cgng31)O5WW;n9OW`y;h#gn_F^lH zMPrCNtyNp?B#IR7a~f%d?eRvn-qs>l$EtPMM%fuQN2>MYr`5wJ4F%*Ux{e=dbfjjh zho3YQG)6~9itQ12WNom$(WpVd>bb>QE1Z(R)T8Z6DMF#JN8&k*F4nGxA!VPl@le%k zG$0O^yK z9wklx8wYdbTI$ecI!l_Sd22sJ`3p`i##_zvG>5JbXy`XB5U_JQ#pi_}k}DoGhk;bt0qbI9^)_#)*gW0+9Qq$#6JWX(iTB+PCVm z>H8?%7EAJNXyj^1evSi}EeQv3vLp}T0A^+9014|3Q8~<6oA#I%iRY5iKy>-JWFtCX zJDQd$axfP`=Tv#w9n1hH#4IlkkY*RVPDE9?VI0AcRVgdn$IT^a{@9(wbMW3{{LyTI z+0Of@{^fXIFx7Xq^JNqRwevPoUbEl;*k6GEgTvH0fi{quD4xaOGbGjE_w*Kbqexjy zKI?`iW=Wq>Z}D-~-Mo~YUm`y$%)I)gI^@v3`mp$iIHeeiovq2QPz=l5{D2&C3 zFaXtv^hnD+=t6AP&tgJYC$gFl>#l#=gvgJ^CPevCH6h2Nq*_c!0F7Kt$dhmYvkBn< zPA253IDlEdIY3_~XA|;V6azIOKBT-1g|V0r2B4V` zICK*OY%ck%j;mWyoGd1Ubt0n)IhvRN^XXv9h8(OsD`?cdRjGYHO0C6;yayV&T9HrS z0A?$~0i3MJzu^F873TnbS&{GIz%yY*zC{J&WJP>f{0E#;jK$7YWd23y%w2{BN>R>T zAi=NCfG;8F$%m99P#B99VE`#B@+2|Bz=}Lcvm(c$I9aR+>qJH?@>p9OLCS^v1^_U{-AokXVm-Bs7Du%dq7_e^eP)!C|x7 z4%UxMm&KN;RGdtQ4}V{X6N>TI*>v25VxSI)4=Ha(VJxPD0jQ>9K8@fJql^Eg>c@Lg ztSsh(b;QSf^nR8keuxZXF%xkcuSz6g-N&Y?*2XW+7YJWVB>K4zz{x;WO3Hb)Cx5T$1HfsrJ_`phPbOArn<^q)gd;eLdWHu@5hnr_w83^5lD``` zf+L$!BchMwZ=Zp11KxX-Khi+3kF=Y!1N5A9Me?_K-ktH}?-kC$-1aQ+gtSx^_%3iU zrYQ^jP7or?0{QB`^G(^TK-ABx&JcEi94C zg#x;51Z9$gIJY1eZ8pZl6+|N1I}ix~!X?e)Rk1%CeTIyNLi8zoP)If-&TC!z$c_F6 zhW!g?7zkgLF27pC!9S7H^;V-9)EXt4(gyEnh5`Im3|N7PKyE5>9EKqgJQV5!_f^${ z?cqSD1(#NlyV{@=oq8K?Y-=W!3gT{8>jBZ%9TP#TI!4MFKptHyPNdtXX-tO3f3TtP zwG2Ze`YLI(Y~x(Jrd)9-RMpr5cZvn0oqCBdm?_H+VJM)^M{F8`aZnMi1U$cy=|wD^ z;oxb-Qe}Yt2)X|qNdB)BuYosE%>jjBij-&&h`2Rg1Wf}C1Z9fN4Ja$gYzJ_k|;G?nMMnM+V%+;IisV{JJ3`9^5Nk8QE5a_df8|w!y>9#-QHZ) zL_y0cymYkIfKCDy8HEI@HN-yBYAK2h9-t$3dl*#9VX;h1bZsQ77VAb z9yFlH{TO+UjH*^=e4Jht7m~ao5YE_uX=DZ=bZ~<40^}fiB?j1j)c|X=Uo{|!SyGL} zF5S=U()atYOAA%Il)eix?{X;*dUcj32LFmQS}Jy~V0R|3aw*eVKI7nv(OnSDwc<4u z7DFT0jk455A-~Gmd+^+fv%y$WqgrfEkg>xO(uS2PFXT22`IbhHMxZb{s(m#S`-p{T z0VPD+xz=drRDbsL+`PZnyjWw!1?8+ zCRc2R<3}aHn^ZAffI26Qj zhetZC;*OBKiayJ{B1jR2^&9vtqV|{YsHrbLz(J@Z0*;?p_%X*1d=7B6+tu+}l{r5I z1U$JWI27FL7!VyMzQ#l~1SgL?1gPTxoa%FndQ0pIonnjzF9Bcc^s_G_FFAShMc~N= zJHzm5=rdohKu?JCHXID{5>adEJv=Lze=-<-6g*c^#ICEw%kwHx+PCrKMWerqnoi?l z=fh+hI!wr~>M*(DEKq>`@~(yb$UBzXes1yt5dCly=1^Tvos8p^xf{m=VFbg%Brb=* zY-7DMwjCBu!Uh^wF5r{aI=f)$GtsD*VP#Z>MW?!@C6;4jV_?Rrbj<}zFk|uvw}ALDg2cs@QB-;r(q&)av*}7el9DZw4Nwi&{!P=_70a zjDszw3wyR~1@@CpLAQu>TgB0^Jz+HGYFs?G=IWQRQJ}{B6`JLBGUhKujXC*MHs!NpCh7%dgMVMjrGAzN6?y+?8*K$RA5n;cY} z|85`+U*ia;j8(KF`T*%4ybAp3-pv#0XtP4}!9J*aJW%&OXy2={6L(|ZLmyQMUe}+& zGO*(d2|N0IdBQCE(n9pbKA2SiW__+dW^K&TIvY6m{e*M5A|-632!-hWKG=8+u<^V7 zvGLq|<|P9Mf0uADFOY%nU3hOLR+Xu6#MwZ&lHfwoij7Y14r;N_0d(>ZcXSZ?fu zO8AW<3Z=A)2KMfeZ0DjiYxvO_F9N` z(ZvQSl!uNCX+*?(R(ubO{zR(g!=k2-vBCDj2G~o7VfP9GFX+k)mY9444^~95|Fs5| zSw&a@(tgl&XMH&=PvH!djJ);$tR(|DCWqA;>6uuckpp_MSS2f4SPGKu0kX*lf2rr6 z1I2MzUc!ha!5?GAdIvTeDcZ^woTHX1Wc9W^gtOWzEX-iZR%ZvNu+E0P!-yXZ!>J@3 zxsom<2>@_BM8;EL<$P90y= z=|*67E6bkUuiq!sB{p_fJb&*M#y&D~3z0rXoUHn`ysdio#gegs!;^C$jRuS*F`IQ_ zP{CNi;Do3oVy|I)k42p@t48b;+14Ach3yayFoc1->%)@JI)yi&6`PDbqIs1YN-sz$84bEeo66FYNV07pdUh?B~` z)K_KkxALO-2RJzWyk<6uFmSAy{d4+gZbkDyuW1mjlsq8fGo(?kfCwcV@k46S{GAPc z&^av59$RaJc8kW`SY+p%FOyko}vd13BunxrTn+S^%ucfOWICEriizF%y zw$sT!EvT?O+K@qM$Xcpi|DduI?mpH=hgiqhABe|C^gY79Li8Ok)~j2XL(u+S-ri*k zvn3cZjeJgT#dMp~-wh#{nSf42{vZ?iulo@BFo^u;(B5%} z&{?*h?fjO6eA>DYEg~<;xWTgq$e#!8y~wxQX}ZDFowIT>y}v^kos2E}E2RCMuRF+v zn|fk9y-Ypc0e(G#2m=>eXLzG^aN+?(io}7$l&7ypU^h=J7y}opQJxIt%*g2e#jr=V z9%RCt~ zPO;$Pg5@VHpS?BZSJ2sHuyRuzc67W8SH&FU_Hb-A>8fEHYBTX05}p~i?f%~*@P-6= zAkmET%56e!S1g6`v0vA*%R{)TCxx*OPxFgElhn94Sb0Y1z4ooD;O$sRJ?>2yhem3a zyuHfd3vmE*CMO4Q$~e9W2QX(GbAW_(o>j4L!$GCcW~_oiD!Vp&RqQuYk!b5jbG1}P zyWK~TD{j{4Yb%Kw#`pV(n!Z~t^GixO7qD1#p_SrKRUJQ%^VLkyr&%YZykEOIejNue zt0M<+QpY_wfLR?mK%$O0UgPmwyhDzvn#z~Y=NgY+r$lG3x3TCFbp2u$9S2C~%=fs) z<47FLk!z^|KAqQiqec$FyDJvE)+JpD<5ki=dIKB{>=gFk2E1;ABY#aR9Tj zbAZH>^m~oRTD%vIre%s8%u`bGvOAcYa6-)T;s9v}({zo;vv34QR;9ekKCbad^T+Na zj^n+@_@mhZbZj}P{)_OwV5;wI=UxL#> zNsUn_aVl@`_yS6*#ZCMSG;%fW-@pOPgMkA$Y50$D0JDa3fW)|GxV__dIItvLFITaj z+dKZ33dYG<^kMO#TTl-GW3jUlIR?c*jff8^C!#PGBfd^2Qce52k6U$?8bp- z!h}4Z3dYHV_^|j5IHeeiolVF)Q4G|C_>l5XD2&B~FaXVj;J0^t7RAY8LRcp`jKy>?0M&Fj+}`nR6f2AQU>)%>AHAO?w|69AWYN{+D4*TlG2>OlPs$MA zXs;)p5Sgkcz6FS$rh4LYE{E{hGax)SS`44k^~BvG2t{S_lQVEgsxdBv4JvRs58;4Z zgR>0fQj}be(Y|Yplg#yjoy{uEmQAV;(@a^&L8o!OEFTNg z0&?)&w11zk0s;N2=qlq zwXeLSw8G0NA=-jn+BhJO@-lvx(npnaPtYAm*i;>?SzNUIrJ7uDvbm^lpk&)bO@7rx zJpgZ-liidFIKRBqWPj1}S~y#amfxxAG%j{NOzuF33HenWCi}~5=TK%lo+|cp zGY4+M9IET7lW}}^?#6L{(Q;BQe1Fk$S}0n%gF>xOE&_a@T3=k?UaM>O9nJDO8S{Hl zV@`gRjk)Uo-5D3T+*_*ai{;T?*z0h**HY-F2lGdL4;bNQM+eN(U%vZ^ZH;OskgnpKj!6GOFYfMXC(~G6DVOK1t>(%?t_T|F!4%X zCfdDTW6^RxeGmhiOds}lNV`v8celrmyHAg#qUA65(hI&$e+g9v+jbWDRi0qsxm#m@ zPOn!i{5z>`@idlwkB7;u?IDZ@ou5vl;s*Ee>NYC&7cJjMi5ptU+>>AfwjphiyXld3~vUTWt z_DZ(hFX=(d4se5Squ=TwxJ{=u(w-O(5zBPT?Aj0YQ+{r4c-D?MG|N=4$N zi9XEz1x_c%T;~MCKcg6Ef}sy7i=TUUPuNba;9i zKgB__nvLw9#!sk7oQ#GKbLU=}VR~i&&PL-f6azIHKBO!|VJt?2ld=;oM-exrbQdmX z`yOIw#eb_KYbA=8#dNUF_?V8~&ysQm$-YK(0rC1+IfI85NHm|)$No+wy^icr>Hk8M zb@G*4UQ5d9tn~kMAOQDWHc9|7m|NGqha^& zv(oAiFW{^L)kx>o4(6O(`&utK@#NY`(rBreKEU$jm0Vku_i+Qb?D}kacu{TCi%qz_ zy4tR=V~n8K3a$<($St@;-|5}BjZr=b2H@DEN^&&dp=*k@4#{QP5RMi*HMmt5?!4aA zsE5Yutkn%;5>p8wX6l!*p3`0A4|*|=hq$~C8rjox$*=ObfgU__>X;CdGnF7<4RosP zo{AKJ`5wwB&B>K~ZSp7&h<_)2R0)XR%hG?ptH~WFo2$}&lx$nPB>7cSrCFZ-tM}MR zO};^yfb+{wO*V@8lNzAWTBF!zh9m$RLjp?0@6x;~=308=Has)HESb^H#QS>O#KeEc z!;xB-1zT15;UsdEI1n1ytqb{8Q;DaZ9rQ_I-0N=t?*dz)_t8lS9?o3}P8WMBWE$E6 z=io&6@ST`NKr71XyuufXMv*5QGF;}#7cu*&&{t~`auWIwDs=LzCiFE<1nt@VI=c4V zv-|bK$-#PerBmaC8<1wA^}tD_D=1Mo{mQt;-^v4g-tM3%Jiv!|IgSB7H`7OZyJib7 z3EQ1!JuZ3@|E(%PMdKIF1n!iDq){)YOer^Zl)jc|Y>&cHn<+5ND%RiQ-r665fjr?w z1x@!WMAtY-oy&(1>?I#uL3jX`@V>nQu*7OE;eUnztbYW0SOC`B$frFd0E>Q_`T(qL zV_~^ktdB5vIsZtjOYobrxmg`9(i^+~e|uj7CrMS`4-31n3(F}WFf0usJBz!+3MjZ7 zvK%7Ua_lbG0z+?i&2$$%-9sNNV>mrQ8wDKkAOt5}oWLrRp2h zbB8O9sn!bqN^xvq-6h2S-)@5$xzRJstn3P#5zxu3bnIFIkgb9E#4q!s`(#DWk0SI=8^aGkI=|<0cayl zz`Ot?2skYO{emW7UH}pVq6HwnVHX>VrRS?n8;8xgnDUa$lhl1|9QJ#rm87>?R`7h} zJ47=|$=7)e=n#?yxd!CJ%26a4%Nh_TkX$&Pvrg^FhKEU)dIL!%%gPV$f_=0SPgDCA z_su9q?8kTcUQtl{gU4Yi6*1&4;NrDJ{+VQPlw{FjbnBpzYt)#a37DgXAm9`={)i@E zwrW8jiW<>IjZCIOnCSqry_CIXDmT-;h|O(LD_t|RQR7W1ec3l^{3y+cSzm%cT3kH& zGih?4rYSgzD!ox7DsDPco@rV>DkyBN$Aquay{F`(xxG30)5r9mr29gdzH>l-mZU)j zbRSm!ha_VO=$t?@p!eLUaqCMcxX%*Qc{eoe#>|)u>NA&nybsB!CA9Aeja)Swn|q`XMzEjAo>JOi}+C$)F`oQ^@cU?$2pHDd9SYjNg(p$dKW~%KS^I zQGg|6a01DYp^^rLYpK7JgWkPJdRamT?~G6A=zT9H5k?b#;oswgj3J5e^>V(lzq!ry z>%v_2K<(A)wWR1==Vwx{Ry)S$XS2OG90om0Mn3y{)oC;r=Ex@qqy@Dt&LeAbx`3wO z7===D+95V`J@aC!(M))XX*)5+u1V@mG!aKhrG|J56Vv*6$;$pJ`fi#HQdY6z!liOn zdF!Q`oc_2E0#0cC37UWzP`sStb2J4=_oRGcj$kM7LUsZ@L04vu8*w*k9o`RMJebVt?hv(#I?Z#g_Z&6lTx-jb zGP!yY^}tvbwH$E3Fyyas>;YNEE?LyCJtb%t_|l$83uU=l0epTM96jNC*WKnMhH2cnzf6;i4vNbv4;( z7fQu??1N{8v1$$W5MnubO`94^B~`=7o|QtvaL>wbb)XXQpx*l3Y_%Yl)6 zUb*f!F|)=L(|VyX*~T3AS^)-!>tR!@0@$%kYL}-VbG;SRAU}&)EVs7C7+PgvDgaX- ze&bmeww5p#*iflLP!nklkTwtI40c>A5v;I+9P?N*UYxtiVDGnf8w zzRsK~(!er|Hk2y47G1~{XL14h9U9LxBf{9;!Wgj`8(xiz5$+qnK4>~sC*@tw7@>Lg zQ{HC0587umz0hn6RsSWaYP_ncdNVJC(0lA;CZEXNOg2#t{6A~@ax#G@NfW@Unh6Xz z2VU=ilS&`=RVn>c`H@S9r^=69vRmn=-oopBk72jwmIJ^0Wl4?EMj!@jyI`YUgSEs9 z#)&HnZOpyp#f3PSioYVJ-Vm|g5I>{{uOslTF;T=}n;PNg@~mjMk;~&?z;KY4Bt;(n z0nmu5XveXIun`oxV;;V%jqJedBnmLA9LR~s#5pA;mco337l(3SkBz)+MJzn9kxF{T z%(yIZzH`swc>>)zlT&RYnMQt4D;OZxvM-az4PT3Pa8YMOsZ)VT1wnw>uB^9isP6ELsj2?CMmJX7`lohBNa1c^g%IDc!v2|MP# zZ>z1~2KcX=J!kJ(=viuvWls3zLa;+;JbUy$_So2$Yx^%7T3Dn)lO^SAJ~VPQy?to{ zX44Y{oJ?;CO~7n=f94p(B}AlGs8k&`G{)X+|meI%j>ANE&3; zmyfAjL6Wg#eQ^TGtS_=`=sJ>0mRv91g^V#`Cd!6BK(c5tx@lqDH@ELtmqN;TS|x=_xyloGn$Xl&LJ{;gr7Y>1|KbjF|N$2&7-QO=UyR z(G(m-m3qPMBSj@GA0mT=YxrX*4O~C95f`C(KZ_otH_ALlR zq22Rc(Oi_cJ3m@SgO!G+z*EwVyLDC>Yh7T(zkYp?&gA+)G3{@sXmkpgw(#sM$cxQY< zNAG*FZ0I8}HN~g6!_VR&D;tWMhIhcp0i`b=?6%Y(5}B_65vM;MZJpScDb2%fL}JO! zQY;{>4+~+rBsZU*DY=<_K6gX23Lln+mG1@o>tFbZT+F1!l_#~dJ!8*TQ{3UzXvIU} zoA4js^yn>Q%>%@7J_CtoZ$yVxwk;wR*o%4LA~DWwgzto|M^ zRfuKvE;d>u-5Zc1uY6g^?~X0{Vcy{zn2kcZH+&WvjFua6k$poBvN+n!Y6;WEM+$3O z9rzMDW_nj!3%Fqysx8PRuhoKbVX?S%u`v%;TagigSUZ~(+b6ulCNkJQ2902#W66xg zt8u4*`_|;cJ$&O+@UMO4^Xz<{AD8Y>sPhqpej<1EPnl@6ca+$;C-xoakFZ;N=B~cP zQ?DP_tbrDdFtC4QqOlnmUeyfj52@GDC*xU?{7|S%$;o`b%>+;DNM!Fin(shUuYa#u z2F-{tw%?G(hF3LX8$jx{PSr_y|ChV+HsjRm;c`+hPO3f#8rgvhuWG8^%u}!R9y^)I z0Za(Ay!?E86Qy3CtLckoNqGAz(gg6TWFz1Dl+q|(!URZ2fqq+Wm6A)biDN*qW# zrq$l$@KljlDc>Kw5-a7KXf&=*Csy*DRU)zSb`U5}tb9KnZN$V%b~N*emFp&h;^i~; zaqF{lNv4c-F?#~#1-oy()mGY^L+rsG-?q-S1DwOxuuBanrmdEPdV57-eWOt;99wup zvDONfV!h%hCO8k`JJ~zLq#|F06X%kzboXj8EEyK*)XYz*w%sRYPikgDe)<=(@7KOl zO?*Rr^RY8#2E)0g&HbHHy+_98SD}&XlE)J?0rQfFAmFs*@eEDCJS#5-4( z$;Mv(z1B(lNSpg5(@N6sEo)Xj^4&Q|4vsVelzg36J@zAMkgFa(th|aOV_Eg!1d^*B zWZK;8NGe&@I(QfCqqlg5#g~{B#A3v7>TBEDo+=U%MRbXL!l~~0T#{Rh{jGvVt^wpS znt(Zg2m($4q)rns8@M1432Seeqqa^LuaIjxJIwYC?(69eIfj-QN~XIyr8;{u-89XJ zS#^RyT3kK$=)H?3<|wsPUfm$~=uOMko{0C?G`o~+wLoG{#Pji>Z_<6CJjfX$o+4?G z5aGkhk4Z8Xh~Na05YaOc?^h(HEHJ^lp=mc}_ascrTq54WF>(N5Hoy7M$Q2>>r3si_ zK@f04h$S=uvwaH!5khz-;vG#Bjp@~EfSJ7(=t!m#ZTLrO&q=szX+A08ItPyuNrMa? zK6Y{iNyZX9IDusF=#hwb9Z4rk=-{2m7&=~Vn=na@C>KO`vTLx`7eAGp(f9z#rDbF} z4UJsm#>Z#^=C~mUIGOhSGy$_|3j$Hx*cRuYxVX}TB7QL`xUbPUQH7)M-D;2DRR7?CSbN~K_H48o+FNPXrfu;M)ncM znM@^4VZ%qbm(zSw!gUTCQzQ*CZ1}M94w8%|Y;Xd}u;G};`#zFhme9dF;}bf1--~&? z(V9m1MVzYLogbU$R`LGMlXiX|9_9B z;24Eca_ax{|2|^+Db0kZm@J?Ff1W1dD5=zpS011LPs_?aleJ@o8je&*S;fA3ZvXuM zK79~yLhE6gfEiG{oZ_`K1xHnHVy8HbW`b0-A$Ax(|9=5Z!BI>pkLaVe+Q$)Ubni*| z#2mryX>ZC-peN|c&;J{7H)tw#Mp}FuW730&00^zAzQ}p{n*2WbFW=O2eP*QGd$@8xl|i}TC$SO#2!2cw>6)J5oQrzC?A2LO z)bj;wv`CKiVLY2xQO`@f662q}gelTxpM*y6MqnxR!K+%j>>nyIQk59Glp+iy3W*+P zg4bp|w9qTEv>#))_ADeCXeGwnYSJ=jMuf3#4UO!^hF3LX8$cz7PSr_yzt3HHn{g$^ zp_*QtRQ)Pa)p%7?^=4j)q4(IyOoo{dXnFbh_>0l98Wx?N0P95o?C}Eyr`0;VCBaq~ zg$)(>oG|P|)abNvlOj<^-3%sS@*NVL*@i7R0Ob|dsgH`cE6qk{9Cmc!cS4IQZZrh@ z!A!NFPIZ_qIxN9GVSviig5+~6)$vNuY8P#0$kzv(aiLM!D>><;8ZPxIo(< zsnrf93&U%gonXmG;iMpnwT!N@DmK2ZC`w}Er_>0El@VX4Sstw%5x3To#*9}rWB%oq zrx+#X?iR>Ayg}$z;1nRv%{@SDqEfB5Xg=WNR@aekg;zDV8gQwW-UBCrsaRhbYy;*CWSLt-s*|%Ue_5ZWs=4kDcpo$9F(bUujT(E2n3%^&w4Tv=NB6xzAyv zUT<@Wck-2~T{5EiloXtidt~JBBqf1v4iAGc@+~hJiX9TZ;b3#ZI#Ap>TSsCq3<1E2 zb4o_cN`C6ap|FylU?VRp$*@1hi_SfZuiNFYKL$=tYWrjSmg$N1Aff%|9c~rcM=^S7 zpAJrNz+KH=`zl6VFVVu=VhFSm@1k4NVftsY(}$J4NivpPOimz~i%C`&FD9vE z$-v}Y$QUDLxVrdwl3PpAI|drLLe?spfH{B&0!{(sVw!;2zy*OQfaF+RT&Fwa7+O-P zWch5>5vEjUPepw*&4^ibf~5M}O14@cF=M=s z2Yrt23*|x15b-sV1_=>9tUOMVu|NbTkc5by)x{f0N?BlncSF-|%Meyk!#$T zrU{rKR1k2A8+XwJ%%&{}L~+Bry7+#YY}UxpM|JVNOe;>Wratn0lxCEYuXE`5K1qWN z9X_o5lq6#b9h^WibU0KOKTp!i5vDOP+U1p;C^Sxl>e<-IB?)u3(B#&Vd~ult&MR*E6ALW5L*%6mJ#D)z`3Fds@&-y#D7injO%h5vKK*Of)vr z!mFBT{h|IR%1IYHvFK8AGT%=y!P7eOGv9&M|NOIN88jop*q$Vf4X8pS!;QP{_kxPacd7^b#Kk>{-ZjsAf}6X8J19O!2B_ zrdwbwOXOo)AoCC)bSrQQ5W~!{XdCoH^G#I9bD`z~G)uBRj&!TF+9P4GIp9Jby$4Pz zJ=a&I^ixG4&zl^OL?r9uo3dlF{+Pp4MY6t}An;1omy=A$Se{zn86PRPM^1uU*TAipY>I7j__Uc5^xE@so;*rAtO=#r0YW;nhfO*wg5O7+x{wYnsys9b)L;~BB6l^-X zZ!Wt(nhs!|`U2gR*sLLy1Cz>xlwaiJBr|<4`}vf{>}im@G?MQp$#`SQPZ9(Sf@0BL z6VxJ_grlHR$&Yh6t(+ue|Ni4)bob3REhOY*)5p^U%rhYY=}oO~5Q% zLBPr2|ClCVHh4iG3gS5?wckT`D5iL?P@Ydx`zKPWvq$rXX-3Sd69m%Hyhl>|Khne; zrIw28gG_2q%hn!q{*7jrlC2g^`nN0W?Nl2ea_My?2PDow!b3W9)>eV(0aqKOVZWc-4u#3^L>2zRF|sIh>>&o}|+kTFEkAVY=^D~FI|XjZZ$ zM;}Gf%Mv;`w?3hx_q~`L9ZesHkKo+aCg1bsd{T7rq+AM+tut(EI+L{^+g!zJ=vgxI z+26@7r@1gkK0zS;PPVOK&zmWlf@2g)$*KQ6Z+ygbGtGpjm@IqV+(8p@lvHYnm&cwr zX<6A{ML$imLCPxjVHEqE=NI}Q;DpwHPZKbswU<-;6HUQU)tlHUeoiw%D%ub`413=E zmZsn+rj$qYvFDACBkbHH$0ekEVvb<AzOouJK;(b}h9URj*u!z>o4r}_5q1*3RbIgK z1MzKgp0)~ELBt*E4JbSTwLBCaPb)j-3#w#b(d=Gn2caA*gkmiI$$RgXwO$$!)j#KA zBV|G`F3YR>=V-Z%j=9rsY;@rJ_hal+_ftU;(xzLGInCA}@x%3U)veH29|oniF>N|p zmKT|*(FtXXY-xGYOAI1mt_F=@Olm3U!K+#x>Y=_YsZMsin}Q+fJ%}P4v7#!l@L=j8g)VMfvd&O-x^CJLHj`Wg}_$d7m z&?xnhCv7kw^p66~S^tUc2ZRkI&MC<-J6P+*p&ZI$BQHD1uq8q0+_U(!Y7Scx;G3hi zCBYce6YV2H`z424rT4R2>6mg0yvu?ia_^^a6;%%MO~|XtLB7pKT1{6ugjYd-sVxcc zx~Ou%qm8V}0gq73Djy;u#=QyTJLDhgBBBis z_Ock2T&1>NPlnhBzy;!iqhuKAQ7fU^c7HTWYb7GXOjk{OH}PQ;vF*W2+*C#OLzIZS zTbjvKhQz|eJ<dQ}Q0_N2hK_GLk z#0xah*f=ge?3lrg5T0ieO9l-~rVHoYK1xU=`f)`>W;lZdJ%u(E0WHi7K_gdF9H9xA zO;HeVGR0$P0%lVb1R_(+rJ!dO-4#azO|2N_P|$N)N@MnPgY`5QW{n8~=_Nx^WRnbl zlQaoOL8aCV`zh#2OUS;s{Z_jBq=cMo`Zk(?*`}>3uod)tgr<^J3;7lFq;+CnXT6_h zhSG@^mCgCFJYs0K#zaI0@EI=X`3}vynW0Cak!ukDAx*$6TtUFe;Qx~*U^aL`APV9+ z7W8b@A#pLLcxtSX3g!6}^t_N#ojsbrjAq2FIzb>E&3hE|97q#$lv*mT53-;qEn9oc zc`eN@C0i|!kS^-vL8sAup*+Yr!S(`@2AN>%6AZ>kGL{5eP9T|+-?N~nO;XB|TFbkk zX*Xu~Buva)LC?)3qn2U*P0+{{A?~0Fm|Z~-aI){epb41mTM&p4!n2^~A)07RuM`TT z;#u~Bo(GspoZdKng!=@|Cna3x;PDJegA5)%to)KBV+kIdKr(prDCl{Sq?09d@J?h6 z9kMJ(`zlRpy2|-$^Dn=W908dT>t)c$HDnx26EKGiLBJ_w96=K>TeTpNIb^(nCOY_# zaRO6`Q^@cU?qxKelyIFxMxCTVh72E8t|rM?LIx+03>l8Q9lVpImnC%Y&iI6m-uJSC z9yQ|{K7xmvyrAbVNYQP|f}THvo+Trn{hjO!G#BQ`CkUk9$xH=3e@|0zj6$i`*ZvE7 ze8ltvnh8%aSqgf7P7`sIRBDKqM?p_oR`yrXtv8TpP0A`($6%lH+_?_|PH4R!O~4E& zUQY2Unu4RMH?dQ^o@Rnnv>|pF3VP0@DL9HL@p^!PYJk?uVypO_=qJ*|8t)w4$N#HrkkCz7{JO+CtJz zKs@ge;u%Qk(8s-WA@VKn#zv5D$w$X90?ey)sF+AAv2Gkxtk*lmT45q+H>;&hvUkwK zUSbnv3txmrFj}^h8sXJ=S{B^5#<;zYH}}@jV$nN8KRa2x#L0P0ik469}I#nm-?aUaVdG=G@W?Y4KyrvhLZK3L8 zNLAxiP1T!u6`I~-Co_3n?q;%ys?b7BUrr`4Mw$R#)l6W(RcLw-oK#x!RVn>cQHAzb z4qzbaP;hwZScUXac57}`Xm@EEqm4j}hVR5iy+*^csS52rFDZ#Sqr*RP}sqv*vQKcGE|}c*tuu%#rYhn&~TDNt3unz^hEoJ(Ebk`ZWY=`F?wmA z4nLv_O}!Hmk(&YEO6oL2e9XaeR{K0zSL$q|JfZ1j>|)H0TwTtyR(O|ZpB3q6a+`YAbSGsPsM zf+ZExN5r?$oKhlo&dm7;NrTMH@nPj2l8hxYhZ9I<=4=DVCB2IsC;jU4B%Lf7IlL40 z@mM?$_ynL14jM&{y(|!$3LQJdZj|gL&L!D=f@ITTdXMqm#nwjc;o}*afH`~!0#4!M zmox#hZ3_Z@g^z9CL}9sW;!$c*yr1y#B2$c0`0x?&el(|)h%MpceM4KpxD)>CZhfq_ zr_`%RVq_fg;pufG8A}}D1d?%N&TCW{!Na6`okCK{5=D3yGDeXZE;_r65>4HEMOmZwbdpF%7$1zGOK`Ec2vv;OcXHRgvi)O^EIzb>k zp6gL`b}voLQEI8sJjkN6v~2D9M}JGROUYIXB<2);9}jwp?hEBX7OY4^#E(fDBt-bI z@+*>z1tK_sBt-NqI-B!H)KDS|Oz>`K+Kt&gJ=nxAytUG^E2+Wej`17iXft^-iHG}= zj9L(4FKFb75KCwRW>*jdoDkwjnt<891%U`5Jd4gwrHRJ$>h-3Yz3A*@rV^)trjKw- zG@q1korA{}Bn>in_^@&vNyZX9IDusF=uvcbGf5{)=-{332_3!f#mbRr{xV#N?`+vB zM_i_E)8hrPmXr)epCU!)`U004Tgh*;^syDppF_`*5zjub`ZCRhIpPTdX+fDPM;@gq zI7Xk8ocgaE@e$KTnh8%aZ70l7d)@m5O~g@Bsd1;M9Fa6L?S!0`m3=(9?bXz9#Ik>P znt;7>WVb#DIH7cbCSV2q1Ps%4YJ8CD;%ub*u=*r3wGwvP$pQ@EhX|Oc89rUq)>uLwW0j%7o(2q|mPj`%r9eAQ){H%hh7N6pT(bTJ6bZqZG7Shr&W}r`B#As;&1;cjq>Pv1)m` zs~33KSN^*5ph>w=nhpSv2qtVhJumRQZWVYQtooliN#u}Q!BQEf{-|TN|5J26lDH`Dr|APS$TYT zH=6TMco%KeF{h7}uxzPo+90nxg}gw2iA=a}u4=S{6@@jGYO7FcOiY5q!KOqTs}-zI4Z-Bf_idt;V^W;Pr? z7?WLhzIw2np^BYR8f57?KlGA_$aMccG=i5kOW_h;jc5G8eMe?xPIWf>Bf!S=9!03B z1HX#SL*YL$CbbD4Es%?XhwrgldzK*G6I-Z8jjt?BRO=9;CLq3uEHm61t5GU-CaXc2 zZ^SknjE_KK*(=4SSqm`ZY{}9>aed>;ps=A*Ema^Ij#sY?>V;NNZ-LQF7F#U{R2bz- zjXIRXt?yvq0(-&WW{1FpX}!j5S&4OZnKv6_OM5$9a81$_XlV-Tng@;S)`eF!>$-Du z7i46`n|)WoTXYFKdCN9TX|#U*yk(%ZT}NnEMKdA{bvfhN76$REW~d%zT9L_kGy>)6 zRGpN!EO+H?#)$AEm)A+m?}JN8-1!HJS%ppdwdo;DKf+1+W12c&+t$=KF!otsVKZ3B|Q{= z)=Nukp!1*}@h-9}w7&=1!|*b(|T3q)XBXIZyow}|+b>wfulHJsM;me1F?KZb^zQk%R=r$oHj7h^m0EL!6mc~J=41F@3Vqnva>gYCX!RCZJI=O~YOX zaUD&-yp$*iI4ybKOcO9Kc?$wDL1C=mf-)qBu!~8--AR*;O%cW+xMva7wv1G!Oouy| zRldo3joAEf2PMn6!*%NGe$} z(|8x`gOzwvYZa)2Z$>dQAi1?xUDZ%@%Xj%LIh`vrk?6z);`a0X4xQEI7-n?cq- zq-CqZ%+`98xr}C)lC2g<%n;$@L2bG(lm|IO#G6SPBt-bIatleu0uh`*5+ZumKKuzu zDGN;SZfM$#**yspGq>T+10IE9Q$X#!@e76dYfj7gg4 z;6p}@sl+K{_z3r%G@q1kokPY4NE&3w@L}a+BpFM{-~^H(!*Ro%`$>9PLI>}RPw41< zFP2S3la65p-!Ze5O}WgYre8ITWmDfJMVCq(FE=KN)%vtPN3Qkcu|M4#S2! z8)yoSVoG^LA7xWMj_@wJ_oRGcj$rq+4`wIO6Le+Slo5BM*5Nq-#)GLa>b}ghwmZ#h zj_w0dq-&1E(x&wV20tsUPc-zcoqZPcf-m}E*#~+n?q;7WppV;(VM7rd6o%Ydso*&jmX{K$ZqXf=`zsV z{XO5Dv<#XNVQjlWBfGKTRn6FztSsQD1!@V4O{ha06M02Rf59&`k3@^YU5`efJe{hO z@^)s7&^-GoZ!^x_KVH)d&9+eWF{G;Ts;27AJa=F3v6Gp+E_XB8RQs}M`f@UXG13I^ zs%8R%-j_w|fs;y0j47J`gy+*w73CN|Z~z0jGXuMoe(EiAK(<5S-*eo^s~qDlOq_W3c|h5OB!8ed0Xfi z1?QNN?W$+beEi3}IFy5PY~-cy4Egv!cJ5hxtu}{ze0&Sm^6@t^J<+}(_g`_iReCwQ z)x*o_TSY#;e7Ez;$Cq#FkyZ`)_`ibwQu+9JUF^T|7MYK~4<5~YKK|vMRxs9yZNCEF zwdg<%IDSed|1AB>a>>#sx|}_C|AOte-fAmthK3+C3^E#RM?0{*8h2osC|(sm2j4>2 ze0N`QS&NExU)h%sg-kvr?@@5V^8XJ9L5fO(Ne5QtJTvh24)6OPTX#777E!f|R*qn`~E+DtLY7+^`O@e%QDG^dn^of9)Y zLed};GkjRNha_W3%-{r)i5c4fPD#&V$4S5XJV_@@LI&@Ief$+q13dw#gM&uVVs`_e z8o~vlu4HO1YZA?OF}QhxWXob|kMZ8bmcs1e;u)HNIa~+=PT}I0Gy$_M3j%$Gi*4RY zA+>9sNv`4IMWz_1aN#53{b)`p5j%&ASCKTxaN)zs>qs(|aKQ;A!^O5Zgq5zv|40Um zQ%Fi#0tW9!#(*)y&1{pkjSh(xD%vDL6)- zl$`pn5%3YyMw$svF^@03s|y4S!$vN z0v7R%MGy`v=il*?h)7p{6dJ*B-BJdDSL4YXaNmh}FsPg@pT~ji={>bWjPh2<6J^Y6 zQvsS|i=5W4vs-(XBAm(AD487;uhKT#@UjD3ov|1~&o$8(G_BDL3PX6FF=#Ucys8<( zNoVH4VPpyUJP%Ak@2it3{F<>(OUlm_23nPJ@H>+Fp&1b>KM)$(eIKuCD)%TbiS+8x z2$ZK&byD8`j1ih=Kjm%4RVim{dZF1Csy>5MHD1+Jy_r{~=sk8alT&@ognp_hVR*zL za){(+9DX>awtt4*8s=5PaHFPS+GxaR>227k*JvqG!f-;egaPV7iGh#WQ^Hu)kjJB< zAe6_`AUb`}ON=7>{dNbl69$43&)GmcYabr);!qB&v5}XdWT<`kmUGYI3rRWDK70sV zQLBCUI@1&FL_+(IINU131G|+DI-Y#JvdE(ahIATtQ69jMf?(f@b~|5Mwi40l_<-y$+)L|J>(kgpk;4 ztyT&#=q(PG6qX%VxE8iJsMg0v)^sLo!8-ZZ8SpXnb=SgY2_~mT{Hh)f=xHD_>A~Sn zg)=NAb#E~CxWgsG1YH5KhicpX&6ZdJAx&JbgLv!aV2I2jhGR+0Ih8ytS4#INc~}aK zlIyJY9OmO_0_L>I|BIdCf`?h%!qulssHY6OPU0#0Ld4TJmraQ%ut7E!jan zBEE{|loGLXe#zTO8f1Qn4=d9o8B2Z%C!pn*&?OIdk#w@;m+(&5M^N$9v|*qQ4jPp_ z%y0(tLnOBr3w(fgGPdAnk0Rfo37DgZAm9{5o}>wwOPbz$T7O47RvL< zV172GI(wqc?`THMsuKj#i8ehln0L5|8vnTFCZ*QR2bsZ~maTmqe1Do6$Ak%gt(0+V76~TAVLVw4CcFOqA|UCjWM%lFn@%p#A$@-Bit|2 zd{V-74j$hkX^_Fghn1&EGM3=M2_%C@j|}GLNIF?U2k(SW=;(bfW-vz+3*llM3~cfY z=I!2@$0#8+w#p%cc^l|iGUC|>R{PRim?NGbkRDi>GMJap6da>ZN>2S}F#Cw zFQ@{fEh@$f}^T8 zu~U4QW`b0-A$AzPa{fu0f}@yH9??ezvyUTuiS9iqpO_=qJ?-1s3G@VAnZazv-A$gs zyxeysXxf^`9C4V+W8MWu8UxB>{yFH9=P~~pj?#I|4y!maoB1$b*~C8dF2`0d;@VBj zxwzyszdFikW{Z>XUF~9>%AHW@%^6y%)vEACbbz7oceEeG!i375T(re6Pl4QiBjh%a zeCOTXZa3d`&wvBSPV;86!4@<5f-JOJ@Gl>pE2@<(Z9DsyFi_SG~thX7VOqGoha+mYRxTaxR8@VK~!X`>Mk`PbN}7epqKTvw%%T;0ZOnD4q^f%!Au;c44! zwbhavrmvYEuFQojqU|o34$q36>YmvTQ8UfqaBZBz(S1;mxl(;SBN~@Ji8>hypYYP> z8ej$#xdS%Z|MUgW{xLX&Ax{wFQiwL8&t1*pfjDBg5_R%9-pL<(b&@58s!r|zoqUFM zk~Y;cvL^YV{dHAJ3XeJvIF%Flrav!3;omttUxWtqwVXqPXL|F#U6AB{m2KpQz-hUQ z5b<(sAEw&6Yv}~<@>IPzQ7w&}#Q$Agss!auEx4p`YyrQUwv_GQ z(Hb4A*4jaH1(0dNmBoiF9(;bY5Ht)j0OZJ-F@C24J(k~m4OqK9hSK@XQ>yJ2I)Nla zuje(8L_2mReaKWR7!M zw)U0sx6tfTveg2K876!@=>2qGC=YUmi9aK0kTBuH%6%jm3ruhV8cg*1O7mApN?Bln zcSF-|%Ek>i|}m3=(;!s(uFP>Zq;@t>5}7oSd`;jsg75IrhAfemZoaWDlDN3424D76Jmiv zWlV0VSIbBZA1M}1SYDXpIwnO1N8T;A_mFD3hSN0w3*3B!?`5{d|G$TUg z4=_e-D#xpu%9qT1qO(rbNqP4(MrfY>l(!itIzOxFg=Sl*`bVUy@v5fk%{o+U*m2Bfn`F1CUXQeWN9S3fG zWje3wi>f)7S4(w1rXLbA*SWukD5MOJM!gJ$uk+HWNOo?3U5RAp*FgK3OLjhkck(o^ zPKsn_(Me2pK81CXHdm4C%=w{xRwO&eq;Qx60g>!H;?K)a_$r6zi|~N{mUDRUOm@D` zi$f76uEs`QVIo7a^R#o%;uF3(Bs=4avzF|93)2&AlOoyqW`|pa_EC&p+NUjDBsFKgCNkP1TH3MR-99p!f7|2H!<9y- z*@{w?*Ve0zdh+YYW3@)HeaX^7>MO~-o7vj7s}n)19Zar(PxrT%7SIH4$CPTtR;#d>pJkmp{IJEx@f_&Hhnz(+>P50Ds(bjlV_wk? zu4=C+Ear+^eB9E)G3B6D8f{g_M_ZG{63|ok6c!(M9G@2*hL@swyvek}U6#uHBe3Pf zP}ynj|KGJ%TI?{-{Ua$VAjo`)3jrqoMG@#e{nGskv~-tqh1;b4f@eYBqBOiq`WBv} zp1zROuhN_r&h@OStaJvIBAv&YH!&^7uZ?bl~Z_>g1r*~3uMzIVAb8K<;} z6PwwRVdUcwMs|c&sT>-^y_h>;^n&m=^P;NM?oLSv;WAGz(pgrnhn-o75BYlLvFEXJ zeUO`+`}Y_hO!MWUHv)s{<)U;@m8(Ms^muG+F-V3?FrlYK z5O!G%I{wV!WT9Ai^+|h&)no6}L2GNC5Gbpx$7Sk8g z>4s{%0{X-uVu8Uss$Kmu*N4|DB+*w}G3?^$ZdTYUwU=Y8RHO6z*`edhFSj@)< ziwngzyR%w{gaBv-PlTHmh?|(rELIlsCj;x=#_K=8JGk-s50YJk8(AmezL97|8m{N| zcUcDe3rDfh{-CfKhoZ*qzGb1#H8*vQUG)VN?hiDKIN2K^R#dfH^jU@lLJS6gM?vp=bdMMcjIZ z!v|vm?9OFRmogE5CB^X`FL8+J{C7bk`(hnlO}wM***(5*?o_XHcovwP-p2?HD+j?l zSZvIpLgr9-BV*e>l)+oYI?vnKtvwg%0`7je{c0p3aSkwK0x-t_B}vnOSY$JeIP_?y zF^^M`wjuviVrIVbpr%QhbzvNT#aOp3>)}<+IM&T1>x!Z7jFJJ9(m8W7sn0TD(Q@@O zsbM+Qfkw3kraho;JD3!RQ)s~!zcrXcYSfJZV|&?H+C_9i36fdHGnyJ{4uoa=fV2#} zs#(Sm*?-leE`1;9Mt`=GZoZ$pZcd2iow&<0C&aX(c3}hT1r#7Z%C^5RYPw41FxXj<=!lcwh} z_Gn4?dErt%eaPZEe_`M!P^+lX^s9jupXajsr8>o5N)w>vjz zcbauIa#epTnKETJG|kY;7Q@yWHtIEOO}rZIx>9?^Rc|GRE2@WG!$r{X^!o0Hve9Z!HXHET+8U8F`01H!(fZ-+p z#A$u%+gd9vxS7|dkQC+pa$*_Rr@o>HYzY=}I>eqzv`95CW&*gdDE?H@n<;Lil92y` zR3zQ-NB9`FAQi>h@F6%kp!sEs_48Tf|Al^}XO*Qq#9VUte{dH@meml;B|Bh3UqsH} zLwv@`;^h3|2^`X4jt0wr;9aZOoWd6{Ih>EpAmaog4E`&{D`6Tj2 zN+~+r>b=0jQ22YnibOcg-At1oi^4BpBhW0g|E&@Q-BNtJPD(B&Pu*{aIW|U7#ej}` zK<7C+?ukbX9odlsI*Q(7=sZ+LN*+2Z1^j~PfiUNz&HHq>3+nA=HE2y^d_ApuLAeOY z7my*4KSrLJ3r5QRS+h5~Kbp1R81dc<9{1AVF>1+hbjAU4Il5r%d!7|1fILcTrTLv1 zAd!^rXz@X393Yn}0$YZaXb`!5!VCZ;qZ2B6GMGG5$;lrkBN>Nh;A3={JQz+62qvvw zz=5&|JxK#)Bohgh>)}2Lm69dEhb73J8&n>kpz@4jd1`%Uyl@hP*)wziE1Vn< z-q}5Y1KziwD`~)sNkt;wx8X*Kc#U!s?G^!v%|ML$gfy&!Nu9RjuX zgTcXh(>y##pLD~)owQb(Kbmn6N$Cz~!@)UjB1Mx9BEWQ8%a6quw!#g-O9toXHW1}t~36Mv@-4Y-rdw@zWDpUzyAInhVb8yMo z(}M*-3cZNk4GKj_(TvTfDv)%&T`4eJiBca5UyuL9W@0q=G6UuBkq-`($B6b+!a7JI z6hJ8@06;0_qWh@}P@V@=IZ&RDM+_+0kqc1r-uDBP=Z!ULW%v?K?f{w3Iw9|!9T;ct z@}T6r7a-~jB(mLLfba^<=iGpBN^7Ngsu>88lMHX7Tc%)HK7J`0}8<049LT zgW^vWFB#yyTS>?t@FMAkH{)Y;z#E5?0|GpY^>d)R3;K};Iw=ncaDNJSNr02=0Gfoz zncExSp#tE>I*{HsS%k6z$nh1K74S01;wwWt*l?#>A6H1{-A<`6{1o z^^?2<4oZpWF6n}UOMxoK!DV>FaF89j;2`gPKR9?1>Z3JUt&cVGfBicvHyGqSw4>lN zvl;~@_q{-HZvzO*wu8aIQ#2oR!@#q&R!$g*q;!X~Vc?01Kz9qV6b%B|e%~=u00fMm zQn8c)U|C7a9{?jshb4TB4uHqP$pHZ%;SC)Bu7bX#Uk&4Ok?=PKcS`t^Yyn~%j~u$a z9=<*Xe=VpZhmxTQRhB3nQVilqwMuT{M+_Wc~C>hR6jd#L9SOvquY z=6vSY$Jb*c{`z>05(3>)ygo{q0c=W1>R#*uo9_pz95z3IM+`REkqd0{-uDBW>)0o^ zM)5s=2G$kxd3}s^(GHxm_mv>QelO(I2g`}ZgMrS^3O|y5=mwpCqqWj}(ER#{q;#jV zLFYY+z$|`!OsJbdR%|MDhs0GrpPD$QLMlVge^3JRN6$#u;iLE%9X4W9|gNc{XaxK-k(WDKC^lgOhRejXz5lYNDy3`zXeu_}BSL{`8v6|rg8mV!#3 zCQ60j&#_NK;eUv(NpIBr%8ZJiz(yPupHr;SEd?q{NdPKJ`RESnf{Jr)m#DZ69x+s8 zM=q$yd*2T#UeG9&Mkk7`%kzJg%%_?{_Ro%ov$vWe;=LCb>Urc*%fTSweqg)ti5xd1 ze5KY(^E)#VA}QU`Y)H7bA~1`qDI#6#Ft~kmiDO`NLPbvofGd=o`~fhMarioXj1GXi z!^r^wpw$aF`mKVVq|q;uiG;qh;64d`k|n^GJ&`*%=sQb5AAB?lRM44(`t2$Bh!8|s zww@TPJLF}D;_FhK7JP4neQpTu#P5>HGH;m-mHTs*8H5)gcSGTMf=MqB-2)qO5M8Z= zq&c$&zXC+1OaVltq;=nR0nrJd%3m$(c*H=I9l3xg?|nZYx(@veUM%6mXZ8GXG@n!R5?>2r)fz-yfXyr6)e3eSY`dh7)=67a%MN+z>+3@wh6oFa%!W!vX2iNVROX7u9olwz} z!RjvW=U5@tmsAA3Z9^pEaA$ms4y*qTIv5bFTD^c{>Os)GG^R#El7RY3xK9GAWC`%) zXTq2qQhjz2fGWkUurPf=DIy#}=?#TT@gKl#vo7M64t)#-jQt1pjl=s6#G zbbDpoPa+(~U9md|n~cRw9tC$j?ox^hKZulv!uN{~cwygp*ob4_v|>Q>JMHC9yuwL- z0sEvBbT@RtzI%Ww$G%VF5yL)q2B$8AX6z#msAX9Q2Kc#MSm!bG!Q<7 zkI|v@eQQ0m|<97+EX`jkdelbj@wJ_ao$kV-ZIxjuj#y8-Dt1&~6bY_;AF#^H-* za%Z-BXJS443EOpmTX!aLD?T32H&h_u2eWqypxpv&Ak5xdaWh~z*9;c73iU<-HcM(% z*H>%RHrw%IeSo-J#=Ur8Yu9EWxC-_~ss{BEo*sw&Tmv-)+|9pBuv>4|PAQWNpGK(; zg-;3L%8;W45A(3#{n&^P3!YHQp<9Y!fz%}o3#5kiDC9CM_%EQ!hXudDBQ`8xM=rwx z-ur%r1s7u+=uFPkfZ&|m1_ZK?_MyPDvwA2H@!x9@u&-ed5Val*{4e+*4|LKO-Qa&W zt(E47X81=^y5rg4f1V=H-D0do1O6T34lf};c~V7I2KI}U%>2PVl6QD8K1K)ot>EN< zz@GF94)aGtZ_+TIl#K-VW8hv1@RBvaply&#H-LXx>`giKU3K$CrI_$!q%#zrD9A}S z(;UVOd2_H4hrHuecj=Y_@+5Zvd6H+{^IRbBBB074Zyg>n$YVz?kjH!959Af&9xy{Q z%je~ed#s~&@cZc&0e(UVy%4ZKAfR}}U|_H#{7d?$8w_5fwbFdk41-8YcSaiwUZDtd zw=BESuyEH@B#?k;xT1nDL&e*a2>nqp5`TCrK1N5y%i-jJP_ehCaA^D(bSVvu1}RB= z{5Uj__$ZkKz^Ws^Zuls-76BcpeMc&IxS9vGbFP z6}qLsPRTi7r<8~8t}fX52vFtN`87OZ*vXDuu#@+`AMCte=;C%faB{4~6eY-*dyo=d@Ou-8Nm8nbV5Z>27bR&a`FeiNXFp{_!u4hz6U1<1b$X8;F!1ThfJ6k$wWfkZg8K3 zI>{2?%RdPrIn?| zpdI99@1}t<=6j)>zNKEQ>0n^)bj|`=Riyf(b9QJP{j#W}*EJ zN(h?AYB(!i2&K#bEu|!N2X;ZrJAf)j%Rj~=hL-He1uc2+`$5Y!ojR-==U%3HYA*Aq z*f%>y{>!YLGUa^tg2&ypSyJ9=Fv$4V!dIlPxgp~hwN{#+nUN7m>5gSX#?LAO-C1uP z+FaFp_Kd9ej)qg`a|x1A;=M)pHd53G^b3f?O670H1?< zBmhcQAohP6xpD(QSxAZU#vC3@-GPtqTv@Djg6Mm%J?>Jf34e){hr<679gq&CxrPQo zA}979Y{bFqXNm#3r2sF(R_3%yB$Us5&_ z1Xsho5(Fh{fI<5pmu?{VRhdc}+b_AWp$Z#KG7X76wMGgj5%rieyUJhaCtDb3|e&p_+)yuS%{Kg;nhnEhb=9PjEr2O-b7#GyllMwW5A0t`|x7a;!t>zP^Q;_VsC83 z2NdTkW6%PbHWU#93TZnqppX`&$2FG$#T7u6zYRC>hz%&%k;{OB_Z|imL8Wlb^l;@s zSOhr;{%`DY4R%<$lKO+3$eCXMAs-xGdj<{HliL5 zSB~u-Bj1*nHH+mcd{Q}B23g+i$!4Pzv|7u=x006?*_R)ev0U%*N_*Kv13v%>y%S7E z&l#1^8I3(>M1FIbKW9`vry!nFtPF#&4!L9+L&Ji~5Ue|}wTH?wkkA}z4WT=)1%u#H zFkM-OZMW|3RO&RF;Nqj={HpGb@=UE-52jajw{HdQHl(Pxrn|eA8>LRWT5FArH5(8X z>gDO~yz|&_diuT7OKzA(UGBW9JAXW=2hC!;(S-K%%f)ukY8NLa;g20SnNfK5y`DcSV|p zGdtlXxs#)%#>50PZNVe=9q5;|tJFz3gyhgJSMqrNCe&k09VGUSHT#& zyHl~#Zj45!x^t>vR13?UiOErAcpzAI0?RX+^#d;K zh7a3<<)W0zV9Gl*iyPFR;Cj1av;dE&kAs8NsuM6Bc;+sPySuce>h0oHqm}A-g$)v> zyW7?pX!<+0CW_!_S9HLyTkyc$+28!n(ORQa6r$a)R4D>Opg!(zph`vxT3_Cogg)*B z?6s?HkROi&H-Ysupr&RFY(NHv-7r+NI_tIjsuO6uwFZQ8?9#R@DuK;F(GPC&JOy2- z1VI~!>`{WdE*}jhiq+a^v0R1#jRE7v?ymS`6iq9rjq$K{Q+G%H1orqAwB9DDUpWnE z*WI3n7w~5=&1$_|1!rlGwu{a20Kyd*66ATU2UBZ9l!a%OgRvIG)GpLN#m?4?6F?eH z!_&spAM?wtL2R_1r-@y8=k%` zNcC*|`EMLz{2%^|>;ylD|&3J3!V z=u<%&1RQZ4bleePWE}tQqcW~DZA_HP)vJaJ#bUKq3>#DJdBxgTYdowrr*5BGcKy^f zQ$y|f^}^;xtyLcjr`j{1#aO9aDb~a4)cUFRBGSBBt~7>u|GABDtXZyA!*fF^V_qV2vsTYdnLUjy&P1G9AiF$1;Y&3@JVWU-PHiiq; zYO7GWe570#?Sk=Iu?1fvABS(xS{q(P2AzCzM*PVc$R}qQKKYs{ig{^v^0EBmYtNY| z0JWM^rN!;}BQbePJGbX>s;+6zs+6nY)SA|4p*>J&HtXflRui~EsK0Z$*dUaiJ60() z8t@Q)&#o56*{^xU)>UEmFCuS78fB2yW~;84hs$*!LmO(9Vpv}u zG{#CHQU6uJwav*1pwRHS6U6QmD(focMss~|e6R-OdU;T(6^bJTpxI<&RWMqsRp8BO zg-Rn_MlA;!z^-%vU}0*_f@ZtghpjvAz$RFhRl!n9?4>6x4~`Q99%)Pz#$X6>lVIry zCxCcTbGK)EHtjJLTN9Az!O}XWh+HHj?Aga83bkhj%((4IeyLvx<*yVJNovpBJXMf2 zg$Uyqf!rDmm6md&_WY~HE2}6zVB#mh?1uF#!zt4DQs{djHy=OjuK7S^ZzZ?=D}gg$ z`(?{9F}aFZ9?<{l#-O$#ulO5ec)zn|QggJB$prXCVnT&41dnhuI%dsZ$zvA0%>MyZ z1YT_yfuZ&SP^T5ZMLPQSE(94WjP&nNW_;$C_cCm;sq_XLiqYa19sA8-tX=&0*je zWo9rI5F2&Uix_)&;5cCL*^QxNmR--Y_dusPM< zRdcXY?FI0*F%gcHHM`?l7N0Q2$Aa7lh5^>(7d>$E1Z&9PEZ7L{Wf$-a^@EK6H~P%fkVMwhS6V&}cXE zk!;$qsG|g-!g_7+N8*FG(ngCF>@uP^LMPR1Se--k4jh0{H3R@B@%S(fz$oGx9_b%Luc%kw%3dU?mIDlxgjLK{}xfR;Q|5C+c)=rqWjBe0T$}}B(AkNk! zyWu;*2=h6on2o?F*kUEj#)q#ghnvS>#S)?u@pA+g4@-(~$XY>?gPfB_SOk-?nq{Ap z!m1oZMdjjD>Gt*<_yzORsr=CpG0OpAQ%nZ7U?5TM>;hR5g9SnejHlWIWby=|8?3%g zDf7GboQ^{?Y6(hn+VeKFDiu0?0UQTLnzgYJnEEsuQ_(SGsJFis;zs(Ew;^HN1*Ij7 zfq=<*Bt!$-3;`~6>0`BOQ(kEn3u9!dcs`j_ZLAk2O0u&*rBML3b1P+-u@)*4uF-h}GFjV( zG4fF-VTC}dMd|c`1^5s_u3*u%A{|7|&L^K4jMl(EDH|=j3L(|eN@%G# zjuG-8nL>y_mrN7Ft0pStv2qip38ca1LcOZa7^v(>0WOG^td~dTVlQ2{dIpxezc#Jb ztH^5kOfHnzVjkh@DTJ#_+B?F69Z=*Xf-SW!(W&q=cI->oN>y-bVX{)*SZW4blLD#> z!@^BwHH-acbS(ii7+uZbm6kBOtg4>8zP2Ot0xa9WhH_Xbj%bT<+%vKQ|ix->jV7z@Z`GUr{j(QkKEWvSarg%)0y`VQmg{cU_9P5q7?mTyMeKm z4Mz9VLE;Me5r)qPY18PV@Q<(cxiybbj3k3h@5{VeW8n5t(r} zg7H?P8H|QOSZZks|Sb1Z(*n6&;i)zERPjn@*UL1##$5Qun5~1t$JfPIAcRl zt;IWALAepYF8Gz@BD5$3d}<%R9@t#2R0yb6BPjTIt5zoA zKV$HjQb>A+K{X8F4fL+UPA}NcF)~}ApWuDy=Z6~0;%_xzH4(lAJLsTcWtzECs80qh z$VI5jut5=F?Xfv2D;nEHHfox(sKu2{c@~Ql)we}EtIC1XpX=KIbg~;`@>bKgZ%sea z$7F0zL*zh*buK#T@LVbwxC|){5dZ4?iRB)Q-s@l){(&_m0aVuXjL zd=YX()RQ__J7mU$D(KFu>Oz zAa4ymFUN)L1=4s#gsVJ@g+983DEVM?k*4c7>(`RjOQP2is_u8zbD;luRA5M;o6t%M zD0xWq0qCGcNkdBHq=gqs2o+TcP_~$12s+s7!Dzw@5jMjWh%5v|DijeMeJ=TB+Ehhg zfy8i1c@>A(BseH76MoPZgV9YLps@>}aYJWl%#S72fW+S?NJ#Ax6zKcG=-v)cSOh5C z(-{i8rxnbA%L556rVa^GwBca%U8bB!RRL)41O^T{zsh+exYoN4JiB}K|yVrAVQlAM$dMD z$nJp1)14tQpg9r6NJ0KKcQF)2m}Mmo5=8cxMg7KN@{jX0Pc^rD03y3Ue{98=Ov)8= zYY#NqbJ!xvRD0&ZWbrnlQAg~hh;iTGK(-=bjc{moXav9-(liD@+~8Rb0M1|lQn5&` z)ZWsWZP>J;xs8NtL(768x7F@+LZqIM7eESJsaAyi-nHHOBu~K~AwyMjedE>FI5ay~ z3lvIg#e+-Eh22GcwDPBiSg>Ts>&@8dDNe#tVR>x$RQB%$JV7|g1m0MORQiz(p-gfD-V8sb>D)QRaL?v7& z5|ht{1tRT_N})J8+S)iwXgOAc)k8Y-96lY^fhv=yz_wVq+N!l0r^K(;uU{U2oqmrF zYB`;=iiG1^1&!MaB&ia1KzSCM0y_O%i`s#q(%+ZfrfeFCTo6dZjLwVuw!gDI@3ruC z)?vOsAWJ0Ob%B}oyJGr2w0+7b6@?)w)ic&LkxsbIqCC83l9DoqQ9uZn_*0duO|fhk zml4hR9~-Gtk<BMsbpJ=1C{uy zr0J;n=;{1U3JFW^Bxznss*bSy=TVku3vXuQ;X~XijweQ3XX9}-3IjDBKB&A71!FND z41j7pc7`d7P%Zjf6^*-4IC)G58$?diaiBW4iUT2ePL(zzawmc7Lgk@~^!+H(7Bli8 z=;UffK8*t~n-LDc$&7pr2VjXCW~r-f7-Qldh8vsiN9It%dW$YC}eh!#5h6=i^H=#YxC7VT&^+ejt&4gg>3J}0hpr-FPnBh4#830wz5t8B8~(qNe0tzm|gz|4#AO3DYfii zcI~5SPvE0R=_6^HT@ilQ0RSgO*m)l6+gl(L|FTh8SaX2&djh-R#p(XlF zdPiqLNX$yWqr+icJ~{&aqoip>N0a6H+z0Zos_)yQRpcv!Sjx^+bSxRbi9nQg`UEgF z8|9{{=y>u$UU8WmW+-P|3@xJtyihwH2mU~ibNK#SYcx6$J|VI(SbFl1ng+N0rBG(V zvS4V^HPp}5p;#m&^;qL@LP{ADba>uRgH>=qs+?b^cvcmiNu*&gIvp1ZNu){s8L!Ws z)=4u!l$UU#0MptArrl2-h7>)mmWzv^3Xr`S4tUWX)F{*A^u?bl>Q{N8&P#}z z&R|R!$FvcFWumiHGOY2?R!mnpiyj1lU-M2BTL{M6^{VP2qSZYLzxs68}xi zyHMWBCM;YFg=nM}nH)D+2*_JvO9}xm5Fs37sfDy`jP@QLkogPyc1HH9`{SI+>cg0p zRLb9_@dZblv-)0&wvE-~t;XszI!1WQb$1=S<+{6vlPJFZl8!&hs0alL+K8RRKUEOxXE>Yk_& z9eGFz?WyQ|RiheC3NAWdrc|?u4tcAI&ZUZ#=qeFnO=$NJ2v{K#V%Np%7_nVK zEf8cK6QO};jy+1tG8^ zbXi-oBrBXcC)5~>^bt6*^jE$t#lOmHDK|NMmDf^|=)|#>@?zRF$_%OCG$FQf&ZQv! zTNQ%g`6|b7A>hH(i%6%eU`mOSMpp+-k}eM=*}vy^dgW#*r_2EJEuW^2&Y2{UsI^XePRax!2e`7Oi)GIz~!Hp@{2_QQ7?vf zIsvBRpo(JoC*d_5QLpwKiXMRR!ik5p_)R|tQ54)$RwOyw`;Y=4=#j2n?52eSVMyweh?Wy6fEC`A5awt_u#};fpDPW2s`|# zH}!!p??ruJGU)u3g6*fUHOBxqxwgXZ#nW-O$1)u_xreS`^VF?x-Su=be-QL(?_(pWFa?e-wCz5CNt-2aZxM7-^G@s)9RUu&y!FBXIPHB6;{eQiUmQR}I?uellW?HYQl=bV z=yiRm4bS{}d&g0hsI~&-p6ZF^EG9W~bbx+Vsx9hq32G6it2ul53N}b-E7mTKbsT_M z9610dal8%(U=~LXAQ8tdmY}{FACRM{rcxNXQ-b=&6zl96Z1>@am|4dGq^AuTC8!_A zfjLqwrQrQ6K~2-vo(uG499@jInjt||)JcPWfR6>!Am?1+U!XA1Twxz$@COu(C0CdM zP;-Sd3k>Eg!2EcgEMYbbjk}WEqi&*iC8+zMh+16UKG4ZEU|E3!FslLw;3VJ2;sDI@ z%>g7H!ZTnw2L~$gwNC-d8I&bX0gDfDH{y6=#C0|vEffZ7JbX~O0R>|*9t?nLJTgj9 zZ$shaF&%6WIZa1@N>JaAB5g4v_dzFDGx7->fZ2?208VD)UvU6tN#_6(Gty}Z>ZAB5 z9PLVvqRanG@yi}v{tu3bnO_`0I=VEKpgxO3a3obKr0gI`HccOUgt%xS7GRVx`e=s0 z93lFM{sH({Fwu85@`s=>P$Tby$_XeKi;-slR3o1mA)bvw%46o)Ff{H;VvI+KB2_{= zm@T!al_Wi6WI==|f)AKx!>NzotiNYSU6ADioNg$_;ZA;)Ht^tZwQzc2?9C-uxBmH`J@BRz)`%XYN$ zE+8U<(M=efE&%KjRV=Pz9QjU@ru>1%TOKQ}Y-qnH~sqhwDnR`86HJxHe|LgB%k zcdH@*#FkvC&9|yaPUmU03b|B?az%khConxaR43-GrHJ4-`!R1DE-rbE#uprI&g$z? zR+G0HtGDsu5`Dx@VsdTQ#bi4xF8PSYXD8A504h4tow+4V2_JSbgZ1j>wR4p zudP&E@?DLmPGa(HR7}WQO-%Y+T%wP_iKYMU%ToNSytw2bhp+PNUJ~f)Ika--4hc*6 zMP0i&e3fVSium3uyI0H{lejyb-OJLcjoH1?<1q7#_FV-3`7!ymg#6kP|N061x+VH4 z{qN7nf4iQtJIWI^c_iAKT-}SiovX`7n?FhSlKqkEJOnLDwMn?Moz^@aAFP9$Ec%_D zn|V1$wKYC5Ib1E$3y$=wHm>d9Eh%bQ&o)8iwBALkw1~_~{c-G&=v?+FkZIYfool3d(fwIQYU zEM}1gLQ2>ls%)%@`Rj4j#+lH`b+6)b9DsSRf&*~ctB7y_=H+w_Ala*!MXU@XlwlK< zzElZ!H4avqqkHXEuyLq`Jhv!?Jl3<+ucBO0mD{q}bh28EJmlY$Mw9>mG}o2LPE(9Og~^f*!ayC}96`TI5- zq*J2w6F2~~0pS3g49M?r0A>N_01^Yz#YE}3yJG%Yj zW*rBRw!#^S(#vpQc@1(u6Q$F%jm^wV-O3z~ql?j2GbH9T7#|IK89o+FgPdK&2nqvr z5k9DlqhKs9f&oxnL}nVyt58UJ+yonj#$8G7Q8&@MMCmCMQHzJT6*{SA#$HPEE*yYa z6*vGV5AjhPfLXpdfW$+1ro(&=2P*Lu^8%?Xz5JD3|Btf7DZca}?hkN0G2%KKk6)lL zP~+i)${$cL7URJHsKz5BQF_j9Sb&hnbg)7An2zkWBn>86K8RjI!Yn$cj-G{sD#eK^ z?N?!EuXnJ5g0H?P>nrJ4!+4g%3sAD>j?21m{`&qfGSynzgR*0AEX>xD14t9fbpHBF zaR`o%@Un10|ie(&#Bc)O{eiub;@|_T#rjQ*Wu|OubNA0ht*at@fWwf(WEW?3pFG_Jdjs{9AC#5*60{~7+ zaVZX<3revOhv3NSt?VgYg(HD7I;|9@Dz;m22##b*xrq*{*nC2!x8b8l=_4tEJtq4= zegK(MJ8{#1d3Luy9J?lFckI~4QgF@GQ0V{|>_PB9oii-Ad8&QV$at;Ts)P;LXRd~m zqhUBAHfu*FYK`VZy*3s$8Y}rRwkuOxx>N1h^>9PEIMv=SYjd|f2U-?uV^h&e7%fRx z3D{wA2}*1~G@(T_3=`OXm25=+2JBWKd;X#hWB&}?r2-5wC5MUnA$$|W zr2u2aDTT^dt5SfXiug(d#*84@Ul&>EaXE!&uXs-_dW=Z&VDx=lpe3my?Bus3?0`87 zK&nSMseqYThu7Y;777ChuS&HdoTOW+kkSCoTyhjH)X7w8o6FUWf}g7f4h~jd8P*FM z!yrkX2!<|RIeyqOcz0e{*kpWhN(+PqPTsvT49+Jx805^|U})3DCEAf?E~rP`9_l?d zk?D}5XCiOEW%BkLFL~pK*#4Y!+V8A6z=U7IPhf!I5ZkOfA=-Oe2}}`GZY+uB?hYX5 zf?eGc>zANM+Yd(bNjJ}0qllw73(%Vl{ad5jYOtn+Jh^=*+El4bXzyv369axr68vnP z669#(!6@hex!Hi+U}wlJagcR|iS2#S9zv`$S|wyShTuOK9n}FDhzK9YhG& z5nRF(Err69Fm&oGuSE?s1=H^}8B;uZ?=2r4QYVI>@E z(jv=Jtwow`7$E**GAz`Cq0`U3w6TmH$-cQ%hBMj4O$5~8jE2EjZG58D42x>X&bsx+ z+Xymq+HUkBCND*~j>@{N>WI9RttGU(e)U!-POR|T!eGE&=v2aWlpiX64JACT`P`Ab zk~UQw37cT3#U-QK31} z3qvk6$B|B6LX+b@i?z-ple3a?-e(bg0!prKjvj{pMr0W*`e*o+++1-UYAi93|zV))G_TU~;< z040?vJ-SKa6R}8ml(c;uI;k0S_I%@i#Q~W2?l=IaJ?8(!0hsrgIe^^x#{VAq z82~lO9WA1~8ikT4#hncyr;X@w5#=2ywiW|&8+39tAn(Qjm<!rIu0P6NtIDV`7<1tBh^w#RsAfYOw-n$ zB=roAE=F6;keG`oeKcs7=b}Lbra{gwVjmO+>LPqlS%!kKxCjP7brG3Glt-bE^0)~$ z42`>z+@qmn?}{kTLlL!jh_j)StA}_w4#2Dm9DtLDsNew1^34Gx9>TMT@>(3I#MeGe zYF8yxy8%VQV=DemkWlgwEkV_@p-UZ0^E#da(APy|y_BZg$lyGZb&J?M) zFLI`bl!Pl-3XHyoa2Im&T#|54Ns@32RY={WXPjrJa5NmeJE9v$!Yb>&;}nr`$* zqFIB{GpK^eY2Z@A?hd_(3q*UG6U`xY_gR`A3#n7%L;yC1RY=NhhK=CxU_%+Q=xMrD zSb%J+aut%R09$6?wO!S{M(nA-g0r^9xDwoq!bIjPB;_PJliZ zX92V1ev({ff{*4y4zQ(UHCy=b9OMu?6}kE*0>5}qD)76Kf1FcldB*Tu(urjZFMyvp zGloy>kgJpsN)}c00x~d`SA3Gg*SB1EyFD*FDSKw09gLQG(TZjBN1Rq9{rEsiD=m(a z!Z~76c;ZpO$of&KETw%+ZW%UE>bQhbtFpdJ$YfRyiAMB;gV6~c(1>I)uj-6Or*%lrW zN}rZ&(>wMD6FyFh5SU0&9q^N5F3j^f+bMEs{U$-oie z!uAv@Y~-ybY#urFv5#tdbb_!!hw8+JA9RA*XkiBK5Cv_D^}Z*ATXU> zn|X6Y5eUk%YeVvD3(2mfzj~itJ1S=7R~9O*u+f{G+AiK4!PlMGXgkQH{Y!e4Rr&PL zR?l=?P6`}Hnv)ZucBgP>_em&c7Tzk3*k~_Oh}^~bS0qEn`8HG8L;1U%>Vm2uzp z_qOMpTagfce%K)K)38oQ{Q`)4wq3!ZOdslMQsW&lmp#&GZ-Y**JI?RM0ho83IRK{} z=lgL0=1ox!AlY&DPHOx-4pv&E^xAXoAgS@wlq;%=TT%vm==&IsC`MoBP3I?380e<6 z4=T@~U@V)?41l`nj3zbC-AfHJRgUD@a%MxYhdXk%${VN@NH(I!NsR%DtwsI@p_8it z8O8ya4G0I|WI&F?0hk4x14s-=7n2&--~)0rEuAMd-Z5haT;B!%*Pb^qxoWIZXuu^y zx5LVD=^2>7o|)pIJ-cxf$H>e>4!}FRaRLYCNWQI_-I%7WJ-hKn99@jInnf{ZH~Og3 zUHDiqRdV(f_n|OQU*Utw$5AjAU%>#Vz9KWb@pCAoJpO_WL*uR__o%<7*MLn-fTR4 zhRgMkfoAQJYNQ4Y$jjnEQ4aWwkXu)iB-=^LvzZt`0dhKkLE`F~5b8sg}<^ zCtL7*G^{XNJ`NyFDANrwd*custx$?iouB*fL#7ot5}stTT!wKh4#bgCsVQqWZiq?K z%03l67e@o7m2}*>{f3zJ9RP50D4TEqW{2XX6q7gvM^ zS8v53IFc!)5gnZS@1qDG!AFnMM^Xg4rhO_ufJ~<=&iyy~-K2Na0%zQ>!X49D|H^jo z6szj_4$#F^)uV5didvrivv!%6O_BA^3m|(y#2yflZ07q2E)_gSy)N>B(k!l~)iU?QxSYsI)~CwKoi+>5plVHu1b$7M!RDUuw_lJTeg)-TZI zF-{lYrgGTgS!>~ZMY0*pOKZjo)c{U0ZZ*OpNy3Bjnf2r!L4h2!O`ZduA;0aZ#7nL<2ktch@He_Q`g1h7_n$hDtFgH+9BM&5Z|!? z0ZFA+(5_bCD}l!Q6_OQqUU-!}h}DVC#Qt96my-zGg^B=qtBJs&P6%ze?k>8xx#haM zhm#3odxcZygc^g9J_09}-r>tq{Hr{zda=V-d0I7zejL-P{|r$bL`Sz7!nix7XKlyx z&Hq#57%l`nSo;>~lohNgA@`}N^UZm-CYw2>CQh^@9;(_QLf=rUkJHnV51c8;~9MufspR_#YyOV=)32>n4_~K zFEIelc~}RbFwi_KA5;!Q!QiNDhH{CxU=ytoIthi6C;N)wnA1k|xJKww6kChYyAV3L zx~z>j0J8z%0Gtd+3kP5}ARItqK)P5XbQ3-xN7Ir@Bk9h;=QpHSXHP?WD~^bnbsRuC zl_cZf^MAyFIZ`c^RnpIc&(pL;vP5unG1_W|#O&jJH0WFSSTGH8b`d{9VW2L;2bEu< zU@R_z0Z>zQGfRX1h(gNaCfG1E?n-ixhLXK24SLQJG=MOR-)_*!)k7SB12C%s2jJu( z4#5GK<(mUYJcMVS|H(K|iLZT{)SN(B;uK%{5chH%PmH+E#v?*upvJ=om8(!N7URJH zsKz6sH0ZS`oIIw34I;1U5Sy3USt)$gB+-Cm8!}^G^6e;smZ0*j(8<+gd0 zWl9>C0&&%f|5lf+7o+g>$3P|`KJ93J*9McHsqf^8dy zB`Y5WbT%a`+qV})+Opva0t+bV3IahPpxev&!jww_^CkHbnCZ>q?7jj>ksaWf&yc1< zGG&!}33>-07VGGEBGQA=v8ZIrm0NMP-jW??`voX;G^Y?qMmhyJJDo&6y_p*s`BBUe znk8_a7dLp8z&WJT5~1$k%)6BVyxkn=yvd7fJST4>bb`RglIu&}${Ur?Zo53tS;r%B z1xPk-k&;FWK%_W`m;#>AS)ffbvvIfcWb!*SX~0Rt1?)CT8k>NTx0-zwmu}2>rkDT_ld4EZyQb~|GCB&CszLq zWi@%Lv3eU%Cf7&oBqm$BE+$(knS75x<(HEP>+Sii5b6Ibx-9^9DsRGg#&QfQ+W>#z`Rz@0VI1W-kE+6;b5iJ z1h0+Q4l?~dM!BL|2Fs?H4}HIhBZ|@2d0XX&C=7I4#RrxDLBUvdVi^E+Cl<~0dlrR~ zXETKj!5$9EDIC`UbkNNtDZR&;etYb%2IEfhw<~mVH6Z)r0L%u218_1RD{%m30p|b` z1JcDzzt#AF98F7)GX0KEvCf|9cOj05nROh1cc$MM4$P5iTQ$=!O>}<)VW2L;2bK4tU@R_z0Z?5;W~SeRD5N}Yf(=9Ct|a%Uo7gWS zT1}uvI601CmgWEZLhGC!)h<6hZ`Cb;aGV?d2H&I_I$VnV!T#tRl=$07^omNUJLOD z$`~iV??d7}4?qJ8jKt1Hm;(hETIv^bb`$PC_B&F)C~r zIgLv1(uXfa5w)0*3!#&%3E7APFq;q#z{!NPZ~$ic<^U2C;+YG06Am=5`Jki7Wjt=6 zEO9a(KE!<|jweQ3XXEh^6b5QMd{Frm3dUkQ7y#9HWTX%O8ww|n>0pD%YdX4~KKxS@ zL5sOGB_%E(uXfX;pH(MY%o5iBfBk0A5Qi{qF0k;x~+b*Kno?E zoS%xt^9yD|Y(5`icXoirRJ#i|3%mkGrdmGxLeDKY7G}%G0i-8Brke%cfobOKpZKRS_kXK%>rp!+1IzehNFSfN;-nVezU;$I{@J1t$&UK zFgp}4rT9G#!I9NlSt%AAga$PzqYbvhaI?VPI0Q#Br8J_0n+1FnVFf;Vls=Lo*fs6g z`~WhYuDDsi?05IyDLFlZ9XVbKu9+Gt9RPzp2>z#YMtHZAM%bcM1JW6g^q7@AJ!WMp zb6~1H8=PgiIMqHNJC9|mJqH>WYhzQ|LN{U3(1lUJ>pVOtJXcZ|bO448QT#L}jC*no2Xq*W9V6+LB zc}ei3vY;I^dj_ag;?x38D~Gps^=<=RJk-^1CVan|@%@!K_#RD?PVBw}i4y5zsczqw z@J6q}@@lEqlTJ&->;@wEZdFTd=Or%x=tWFkb?^_+3FbhS8Y=Qu%R~NKiA$=)MW<5Y zBy}Gjo7%zXU6k&s=WG1F6e0qBD2amtLZCrAO_Tb^tB~Z78}>{`RW;-xj$qoqQtpjnR7v7Y3t$ z@Z#WFKm}OGCxyE~|93)vm}i9&j%+ncoh>g+(FI~X^E zJ}&9JxK*t82)f~&_$4S}VKm`ty0|r31RTLGK_Ty1aqAJ}*A`OTN`LjfxV4semJwFm znq1n@n|n}-=sJE!Wvp1|44x1pq_${p9jQl~pqO0G-U2N4kAq0u&~ z**pg|PIz(a8FAnCvpZUGYa(*#t5m+Rb+1zCx)5?1Ov>7JPb0|NB$;lzC~bsfYEM;J zEXMNWQ4f0sbW&4g>^EQ3aRBD+Tn@k~?ch2bfI01e14u~cnOFQ~9H_K%E5{c-yldr+ zlqFi2V@?uexZ6FuTsCt#{j5}7*?9%_LpbToWBwQ$hqS+Mm$)zB0L&7{0XRwAzvBSR z62}1~66alk{ZkxlUYYBl0{d~w6(^zdq3>UCL^1k0XQnP(icJvE%v2v#o{xgDWTr9z zYBD=ofjxvm$&-)DhLF=n^tb|hHHxhzul;!Fz z+@qmnKP#~RgraWo8GnFIu0CU62#Y65X64`joP5S!H~_Q6a{!6Y$WeiPFb-Jaw%1gr zlM3t?!jK#*qI^hvDvl{eVrQdrJ_-XhDn6)Ofr7CZ6$U^vDp?iSRTNSlqr!%f)2Q^W z0{bQuQHu$=0Xn&wkUMYyW)s2zIGK=l;{eR^%>g7P#B-(OK^$ma^O3&-`+mw2r%9_1 zale7%i4oV?csz!}K#hkFDo>(dEXIQYP>n}M1@<#2oIIw34I;1U=z0bA?#s}iz#IlI zf=;d`BftTeO$G}(RTFk9;M=#Fun&Mlu$r(3;FqZ;4Bep>)nN_?NhjNoQk|IKEpYrazI^Rc zC$=tkomg`F)BxN*B?`<;w@>vHMy!_6r-(`pMxR7AQ!a6g%O95P@LSnHw@+}ofz+fc zt+JCh69PEY@&Hv-}K@U&)fPM>9j-`F$ht*RcN){Tub$&7uk6F^Apes!Z}Mx z6?rS?sX@E#@>(h#54&%SwSF-ADJ6{-R!PwvY0C5Be@vTZ7Cmj}HG9uJSd|8xG+e+I zLnpg{k++(F{jFv%RkNp4$w_<{QNrUq@)O^_*6f|ANd}Gx7q(+jVIyxfVe3Q9o(|QC zc}I7hdE02sURmRb6PrVn&E&1d<~&t*aZHl8W=|i76XQp_&iHM(X76^5Q%=l(6Uuz@ zR%8A)UbCl<*hx&zZ z`m6UP8-?+( zST0m~xkhh_G%o5|k%ltZ4$3nAEwyB)eA(jyGIDCzdbllY4V)*njocQti-Jp>yskct zV+Oj8u@8uyY=~6bh8I#iFYep^?)F?rA+E$bpI?oq(u*xOm)^DP`YCeI*z9)6{W`GD zWF%F<(0S(gVKK`*Y88f|lk0ZcNjL!Wb{YrZw4JsF2Vmau;Q*5DH1EvuD{!#Vl8aXg zPY0Rfms75&`f5p`@S*Q3aYQltI`636jKV;7)O=9669r@0QDXqq9W^v_{5>d?Jo{*D z2=>rPP6<31po4BEMNa!RnuTWASQVT*(Ja@hg~~eF2&L+s=CJ0%SBO7VC-Es1MT^iq z%tq!^Z}M+A0JGKL0GzDGcX0q_spbF@tFcI>DJNz+>3N=LH>J|?NqiKJMx;kM;!mXb zWzP}+D~^bnUmQT1T9eKfT$zwX$Ao7}yuBT+~yaIL2W{>q(po*)> zSd0TOn+y)X$z<$@129W92awxj9Et<&zsXnu19B_@@geS6IGz}BolVB2C=AqO_@J^8 z1!FN841j7f;uK6gC9{RX%VRp&V0=tRc3YB?nJoQ9%g9_{t6z#Ug_6#7zL1()b>UK+ zTVZ6X<+IPL-iKphwtO6bVP181xzW_7pby~?9Ia4_PMu$h<3pxLa3nm*WVsaQQ5=XP zrBbEI-MADdO)L9U^nY+PP+CcAH}*?$p6vjDleeBXjK&*ghvKCad*TorS-q8&;$R#J zl+gy;K^IEYHJPJv2##b*X+#H?;`k`S+4$&D`bdgk*R;#>1ITo`;!+%=-%WZ)yMr_C zSG_=c3BH#)#cBzfKo(OifwoyGss{r6qf)(q2s|Jhc@AHXbg373F{u||TYMtre?zSv zgoUwE&^Bb8sw{wVd z^m@{XU6Uj6Jzc!f?Q3%0;Wb!Zz412EX^EKcKuq7Q>W%F@<^Gdi#N=7f{{)?2R%EH^ zAaCWY6lnLil>1c5y-uYh4nVHS`8XxKwot4&8=i81KW&;>G1AwR`=4o&fg{3&?Z*@m zo3N3$ny@Wf9gz5!?4Q>sgW86G?UD}%r-lg^NaELUGQDnlbOJx8Lv>=_4=Exz&VJ0> zhBL2sU8(W~N1L;H0d%t474lYN^){Y)t&iAAOy*G{;PmnnldY6_eT>F093?ISN1`G? z-fAMy=gez;1WqhH%$KG3S9#|3haKz*&%7qlk7MTbJ+x_d!L8$MDX-8th6@1?)~cja zR8>V0j- zCM5-3J}o1F3I*i;YL9y_U=6HUsuh<_wXf*bCx&xjP z&nj4?X*8iwW8M1YJdR%#T-%(SC|5TQi$qN&Nj66{2Tuh}?z?!Nl@xPf1$oc5^?hvh zX?ey@hp5qtsYlXyE`X&t0Q0^H2jH~7cO(wLyuZf*?H|8jA=-qK&Yb_Xk&Q#zNV7}aBo4qVaU6h?#NC7gFiRWE4HS$e1&jeuQ^3#~qQ_7uc@n?a5OUgx zUepjhjiP9=bWcGiS3foDP!aAJOB>Brg9C7~8oT2F%u>w(Bvzx-8lr>nQ8*frRIW;Q z?wJT+a4Ns-xo$_}h?x1s0l4L>oQ6YiBvm)_Rnqi9(n;{qWAxF~-t3WmM8ArU1rvQ| zgMKv%12yPAsJspZV=?FqfNIb)Yl!YbA>}dZY#17MB{4<=zuwgl-A@s{W5$e`Gsyp0 zuZ%Uz;fJ8NYBTJS;iplOTCRxT0Gw?6*Kh!4LFWJx8}C_6^dlUo#Na;7MZQm2;uIG8 z5ce4zPmH+ER%GsBSQLO-5g$~Zi-NIO5e7iDA{oU*2cmHD*bp{|yf&ok#YD%U2wK9z zqoI?l$v6`SV0NP%fRo9%1P5T2Y7QW`$%t^E{WlpKC`+77h7WOX#PP(4>ufUKjKV-o zh7T(5K*3l{1_Pj)498-k52Nt%m<~1=AJdWDmJ|~u3)RtXWR^&aiIT3-Gq8}|x1{DF z*9`}r-uw+9vnjpVy1*|Ioey>eB&9qH@&M8P$XEAWQl2l)mGYb%k4`dU2iUdlB-fT? z*H(&QJ>Kr_+4tkkkm!3vng^ptQK6R0yriV*9cK3f2=r}EAP|dm8f|t;hJ4_8<{9X} z^kN3zZ2tx6v_vR6xbbdf(QY?qpwBxT3sH3$=1EPnpc8~VmV8Sol12+XqzFhl1N|=`d?0Zjg)9VdoEvPj!j7z3Yp|UsWFMwU15O$)V8f_@k++(F z{VgFoNd;cF9(>_oq*KXBd|%Xc@$G9u_T`#nI0@S&sIZZ@ny`7~R>v`eXF|3P)rol* zcAa_Ka6;^6IXO$yQ3p{;0+;ClUA{DgxxKCIWp< z$ks>T#L|ECWhwquo{;@V8ld1*<>{6rkakSAeZt|ZJl#^vAH32n#auLr>(l9$nMYy& z9}twKTmFvx+CtJT>95|WTaHYGg-ty@2zzbUQY@vR=1;4<u~JxURYHf8v&U*sY+Ejd)#j>Tv{tJ?3g>BsN&^ntwyZ)g3s#&E zXLhb_O;o~lBF~eYgtG41YHNIAa=2P7)a!*w$Ocv3(qmHDcI;3oN#tB0QAM1RsyvJ1 z4VtjI=m^!Csj7@8Y!1YI+uxZ^37ZN9>EfPrn)b)tPt)FZBrTQP*?Cso3u5LQ(^t%U zr~5-E*Nu?FaRBCx5Dvg;BV;uWz`Rz^0VEqC-dS}Q;9#YN0I%KC4zlXbrCd=p-?EeC zL*H>6QH;LMdm*nvVW4{J^7H|$A zA=ch;O@~fiPSKwfkO*b@p7lr*K5ftm6RE4IbrZeI)7yk1YVi;op_6NfIf(->s{#k$Jb1mN>Fg~UuyDiD?O?EY+ zL9z_7)vpTJ{U|iraMZ5Us!kWK3RnaqQ!Sr;N#}()7G}%G0T`ke!&L!C;1KfCsq?D> ze8_YHvU~w|*@S!0b@G zlwt~p;K=Hf@#wEoybnhLWwgO|7_JI<2#4TErj$l>a8-bhB0PeR9;J_@2zE_-G(Uh$ zrz@@sF#6r3cQhNEao?(H2C-xlUP<#55XDqUqhwo%>Y4Q215%cOR52q$4hTf%@=Xwz zikTxw#SHmko+|?Kb&h9F(VvNQK!p!3B$5tEwJy^-aRi9+2Tl}VqH=oYSzWvyK+I~p z`ptyB3y-Gk9U%YgYb};HvNxJfIW9d-TctkR zd40w)Uc?lq8bc?T8(0c}j?_L0?fzDuk*d$osg!s_q`c@bN_cJUL(@)vnD$EAG_$;@ zuk{&Ynq=UJaA6yvh}eXUyp=5%wCh8Ch7Q$^w++{4yg}m&jy7lYEhwwW zTaDG*czuRGVka?qZP&%*ugL~muwq4UGVC0Ma32sr$;DtMjYON-@ z(1_Pp*TV@|U5BJ+dL0o7L0RQ>>HzX)sa|Vsgu8}VOXyK1ml9PAmB~iA5e(7ohh+g= zX9Z9u2h{JD${R}|oQg|sx++vE40uo&tJfM0Q&NG=su`c9&A48BPR4YwN9W znR+b-h099AhoXn2N=s#jQ4|*^WYV&T{z;QOCt-d76=w2Q6XxISc#Mey(e@6AJj@_; zDR43nAMLt<*h&RlKh|`>Nv$43)r!2;)T++~T>1!{So%F*mf~OK1zgJ=zRC-@$n?mu zfNL+>H2e4l#~U^FK1SsjE(Clww%zytj2!GmLw=jWQs|UQztH9qTsjE3yDS}^cWIpNg&~)cmyk|gQj+5?jrGnWlQZ(V zaF+&IqSWrvxRmk<*C5XQiyWGA?h`V4aUVBMytq>=8F>|Vie=M;tLfs-XcLSVyGw(- zXT_bjkzZR#aVP!N`{K^Bv@o397BIA|7dL6V9M4gQz`j*!Hiiq;YO7EgDMJ}zv0Q)~ zMTfEF@nq2X3qIRFcY`q0*_8=fu|n_orOjHiP+7W+XDcNYoX<51fLP?Uyp7!jEopc^ z2(29AsOpYab>0{EZU1KA!SC4M;_-rgF9u=UUf=+76i2d~3 zZ{PsT+nOAJ)AsvgH~{nZI|qG$Cp#AvnQxN zjw51b9S4w3GRvqr{$CuJBh^y*X8o)=PSe(&Kep4csN=?Hs~Hk=&9RRL?TL>C(;#OT zaS#dvbrC+O9EO6ixCjP7brG30$0wnX^0)~$42`>z+@qmn?`n=OMG>`lhzp^UtB2T# z12C%s2jJu(S~vi+d~*Pahw!Wbx(Np=@wHErnj0ufoZ?F#;=U8d6CO zIv4=ebU4%;UxdQSV?NkGa+;6bL@BXYzvrv1i3TLK#XM&yd7v)R*HFwXCSwzHg2d!Y z;52wy=B62IIrC?6#!XGuiBjK0(%H^{ZUo2@m^Lbn-&CJuhB<@!B`NM#xb*1jvGzp&L}Yj{dJq+5 zS%{^gmK|i@49N2_P96}5bWulk{*Tx7EsuDyg6DU9iF8^bl$)5&`=k_4ewoGxQjdl* zlj2{l>=Tll+0*DHL%~F$St5C}o9ksrnoTl@8jwjl99-Cdo%G5ip|)R>RDivm*EeC=s0!E__|XI?bpDb_!RP7sz_N;k+`d2booy{rqU zZ@KO+j{KJE?jBCuSo@qVd|amMV5DPUcNMWt4@N(vMA0UcQglk1^3442)25jcw4GN4 z?RvZ_2RLcCXf1$FcF`hlHPQN8RZyxbNT-sM_|Bt*$9d!@zJ09pJsJC8?{8kqzZa6Dm5ud69BdIQTvcY8&9bJet@Fl^6x$&7cJ> z1mTULI)lD%7=6@2`NP6RsSi~THKwt_iL)apXUSWQvq$8@FCJ+-Uw;UY^szYc`|_^y z`)}nvaA{g6ObZiGi9t?yo1x^OywOuz5TdBO~pEMnC zQmY40wIXjdwd!+uk3Iq?mVVTirTABQdC#K`vlgDhPiD%FDg0k>_$p7~7YhVlDg0uY zDVeyZQ}{FQXZj-$l%??hiTv6^Quyhw-ly;vCg3Wd=193Z(kzdMy-D4_sC%jV@?i6) z>|b&KEY+r0Fy)UA6`_upkYrVSmC=ROa;>^{-LUD4mwQ;!E96lAAu7##> z?UA^LLR^0oUzpId^nJ0&zY1X2;T|WEtKW+Yn|4uzMTE@S)7VSWRh{Rapqe<bJ3%6F(hSE2MI!o4#j%Idq^8oqKA;NdGP~Pyq3oz z;*r=t1f5*>vRB~%%zN1!fYV;~={NxMUMmNX5NuDBu<4w?*|dGKbV+sfGJGh~3L=&n zlgf`2r*|@txz5(UD8(^*a%2_9!pt!az(6Q!?=?bQje~F`R4OHMHiOkA3fa$!ycHil zN+Bniz842zmT4;s<_SBYap8kFl)PNn!{FKTU3HU|T6@~*XK-XNo@mjvIsJoK46Ug| zA~}cgAQ%hS$D}H&$Eof=#Bnzx^gT96=}bs_b=Lpj0L;YY0GtH=SsZ{_;5mTAh<7p7 zec_2%*d^};dztd?q`J?8!Kwb&Zp{N65i{#JfV4HwNOd2^fl2CuQ7vWH`aGI zwS|(Q5*0v@pVZODB`(b3N<+IPpzJg<6wtO5wdQLXW za6is>a0rf8D76yV`Bfl3WO@=u!jnvv`*EJZfjCksHD&F_{Wxh_*{7nrtj5BT5=tv+ z3CO36x>ui+$*XY=tAl>2)Ad9I)N!#2O zrAa|X_Q0|!NU|?o09hd-@PKe+5nm;CDM{L!mL!pZLM=u>5)t?*<}8&JDjAR#@k}Us z2jTW$bT7_yNhjhmf+f>^&mG9}R!$aUNl>@%d3nH#2fQZeqoh+TL=d5Mt0w4Jv7t^f zs!y-A;H>-&^jQ4KumH)_4aldayOHFOd$Io()JCIltZ7W9PB!R8DX9RU?b?0aiwrzH z{t@T|(W#}(hrHF&=vMlo6st_zyDJEiK7z#7A-A7=i6W)VY&BKnbq-&kO*6}M`da7k z2aW1DBAk)`M-j0xlDyRz*@rp@9jX)aenSz#arR^0HhlZZ0Vk_`!O`ZdUILx$I!oSa ztlq|NKha0*BqsY%BH;A$6O*l!{d~5@FB~N<0;i)QK;CL1(C6%DeFRP{eTgqi@vrji z=g&IW6Q2D{VgkqP=MT}Q*~QI{mmA!uaSRs%9>QEtI%S10%H;+}DVH12oKr0brp5Qx zD-Ck@PlABlpMYTC4lgS41MJ`IAXS|IgrHsKzvuM@4|riHLRr$uOAc~eU+`t;k;yxr zUAVr0%pbMu3%)@4gzE_B{%0MU3hk#&ahr1MPC)9xh-p9Gl-E9pnUGiQgP6}ITus+L zME?cj#jYo>K_tWOpdR9+nOXG^2^ix& z24b@Jw`z&xa)jqu#7pd4Ti?fSh*eOWqJ~MTLCL6~i2JsGGHoj;646Z8Qv8Q<4hgN1 zSuT|$h%y}|dwyFl?cq5QNqTONE=^b-3y)821$0vP5$#D=t8f73weBGXz-dqBbR2+r zPlf}?ok4LK4pds;kwcIkUYc+brI>0qEcq`CcYDO3r2jESBw{G(m7-5#`H<~N43!ef zIxiYti__Gce)>u_KxtRRE{bg&fLRnd04Gtr2M1slMGhb#SXat?K8O#+Q9x7sh$0E0 zgEF7@r8s6!Lih}hg_&a0}|z)9fG#sQcGo&!jXco)ljUXBk)VmuaWq)d5t%6u+MvCeMI>o_82 z)^Px7Yo1Z&a~%%Mk!mTs-p?|hG;QrRX9`CbqpfC0P!)C3p!eZp!8FJ@?e-xQ2AX#3 zV+_84g0ZCCG5~7YZDyIzzoU@yB;2xLXxx?L9(5DFEAx30Mbt89c>+4QdWdIm0A^L- z0G#A|?n_YrZkBHjAn_2MWj=f3KqbCnULa-9@|XEM7Y5{bEWHnL56AJui0f=TR--Ub zyv)akOvmF$c#_Fd=5rPf#F0{|5U(3$K51In zr=lY`8Yr!#b$t7p=XeJIoV@j`Z~$h9;-wU~;1C>HoiZN%Rf@OaNT7^1*bYOP&j)Y_ zj$}${L}$aK1KnUBfuCcUGD@V;+lK8DMJ5QB8B^% z1+iea3W^F!rj7NIp+dC^w+aRP{+z9G&rsk+HlE2o2%R8qwiF5O z8al5#-&b!N((y=aIa0>7HzkcWbJt7(FLBtDHq9(!+G@3FXKH-Jk>a9p8b!(`8sx1e z8r}tFu^rA;o2HMziK(Yhq;UNGnA+Fcw5CRN91+gQ36zoKt;Wbc)TZfBotQV?b>?lu zwQ2Wid~ss+Jt(WmTaDG*cx{?KVka?qOV`C@E7hibS>u1Taeihq^YrtRVIRbHJ!!b`{6q`yL}4B_W(J0;fxL%ut``{+*TS=+HTZN}*;$8aIw z(eR%Mo3o?hUU3dqdo}{jKR#1;(jHw|k}gbMD!8 zr6*OowW~JPR3gkQ(tth%$zXq|g7LnXxgJ$o?}1M0Hn6=k<{=z_d8>j0aN1J)0uI2u zrN#jy2{5yWwP1uYY#`B>D&hVM2P?%lvOCVK(_-Vub%)EpQ?96*ZOLHrq3^G8L^1k0 z=fM00g@NY4_@J`z49p5za$pz$H3w#=b@A32`Ke0A^HC^yGGEvb?9q;#Z~G1^1^v5y z3IlZ!KB#;N1!Hj$41nq)GRrc)jY7)fCfG1E?n-ixx{2PEW&AISsKrD40y?>R zh(F-~%&NcvIC+SHGjqfZ96;hBJj*f$ai9`ky#mbqWf^F9b{#w3cM z#bmUgldH+N2?t;{861F<$+!atV3ukQAh*eQFAlW-Cga_dB~DXPAL4!%#}gy2v&r}d z3IjD6KBzo~g0Ywk20)EBT*@-;c-^Bj=>I{k*^?;XJT`=l%EyLewe z)$20`&O*ZhM>R{$&$>{bF$YGbnn3&HYzdBq*#vR`>B*U?K4Uo!AupXePeu13(@8iI zo@BDrXRN`2I8rJ#ckM=fMw(XkIq4{l21+X_E!|$9G0_14C%1hq4#4bLyp*DiLvUnu z%6RlwDc*r2fil`)I}G(1AI2d#k}0JT9n@#|D8lFP(WCT{6v3`(-^>pn)9H%(45Qyo zdPg^dGwxe`#-8S_-YHg%@e3e_sTzatg^JpXz04nxDlJ5S0b$4M_@0DIrNsfH(xTBC z9}kP7nqmXod=VDLN-KYgg#)EG4+91)6ObXqLi&Uez*m`ni`jmO9g3aYh zB^V8ZvD)}Vs~HxDgHyu|1^NoUxo*Aj8kfxN<^#Qm$uq0>gH90DTB;|=TRF7>+Fif( zi4&{vwlEk_8J$Xr9Y<<21}WjS>APlZcpCrSv}tB-MqktT&(S0UM}!O8859wlu#vZ# zuq|61kobjYVttZagVbminqfoLmo>F&IGpSgw>>%m^K__A%sY)Dg5&JRylps*f3wCH z9Bt0(2FhykR%7)xp2n|_*hx$#x-KSLDUJV~8o!)G;BBY~khhu$^f`@RAAu7~@9||R z{#BmFzo)}jc_J@~ejF2dccM+Zmd5{G_?*l!TnKpj_J5I1S;3l;#=lazVumIXinzZ} zEe6)BWxV?(VT5;A@EgDIq6Saceu8oYCmiQ9AzYXF?3u1V@0=X`o=rM=@jFMl{=Uv5 zlecfXkgiYW!dkli-Y}Nb&aD>5aqjQw&{SwSZHn6tew7T#X(E%V_&^jGiG^*3EvsI3`&4s!YboLZaFKR!ffulf}+;tr0pA%Axry>k@u{jY`T@5JPAwOFXv3zP7G zeJfvIa(iy08BVN%;|7|`gV91G9HHN%51_)}5V#YhIXMx+=NVl37rZ!btWsz+f~D*! z9o*rEEj?jbu;K*Kln;?7ZeJE>035#VxC5KvRn1kwQpUceCoB(+D~64+kw$srNMoWf z2JqrG!O{~>V5@~gFm;*3x+L=rS_2S)RLj1xKquee<%x#4HGbQ4y>k$w@!0hE(B#UwK&?c>!P3Av-!lF#Vn506YAHDl@g z$qgf4o-PJN6m(1p6uAgP@?J0`cR(*J$`NfzPJvMiqG#twIarHSCt|A& zvFzyH?~H;R{$-YjbYn;NLvC~u+dxKAC81nYfY0@98)*N`D1q+?eG5iq+7U{dRJB=czpCxFFpiX76 zlcrpS-Irh~ixidy1-6ecm}f=WM44e0;G?I11be$U`SvyuK?S78(Wov*e9$@#%MsY zFhkM95&_$@>8Auu_+KhH_F4m&?OWQ}&3f zMaYKuGbS_Dm6J72;;3`sIDw*W+lV7?HQ`v72uJr(j}dD36by)zj+v849ZQLY)74L; zhQzW55vsMY1Ooe-;RN?ML8CklW`t~d8l_^M=q%(Sc@PtlN=8LvBaQ)=j1npt~tl*pcD5ewT+?^VkojCVqlyl^*#GZ1z`7AIizkXk>Td!W0b#kWp=Pn&jagY*v?XK-fou=RJOQ&!lj zOpO+=)+V{}ti@Tg<`o-9ScV$YK`VZy#~|P#xPGZ9A@Tgqzn^g)@oQ^gbAR_L|AW5!oJnH z-TLS-8>Mx(s{OO=c_Sj5s4@Qgt%2#+xnk1^ya72sv9wk^Xg^P9N8FP(Ot!0zOtz~8 z!+bWZ=7~<)mem?f^WCyqlkQl?o%Z;G&&U?_HEhOst2t6;MFh|(_*ur3SVN5u7h^q zcS;w4c^625IK7nM2WuzB734_qt0$iyHd}SFQmp2jiU?m?RwiqTFdrxtu7top468w< zRwzOqw}=J1@u`^I(Jcgr!RRKAig0?G>KPZ2qti$y;4k#QF(w7xleDFpW=Kl`Dds-_w&f3k|4FE~=Z4j0y&N{C zh_yYleR&aXKOhMNy>Xi_>zdmXYw&ZKXDoae(_mxM05InU2( zy)->EJ5K^iS3FtbW#{=|44}OONsHz_=PAMfi=4@W*rrk!`d=}%{9R~5>FC?!Gr9}? z2t4eY3q|yS*YLq;OinbRjBuk*LQCOB1!CYkK1OhKbEEsmZuIOzadNb^F*p@W@LFPm zYoifVOT}K&p=Hdl=>NzF2BW9=K!oCHDkOOVG6|*g)g{sWq!V+3zlssTdvYfz@CGL+ zsG;kkixZrGo^XN#3KC@b z!RMR&py=EmM|cp(v$7iLl=!$@>!s7O>JRBJ7k|h`--$mQEwXa!5mrvx8>e`2_ne|KTDxcb z<#hLq8XdCS<9=!PsC}V7KJram$Apf$O%~sx_0sgy>>~*%T_J5g^7S!*_6{dGnxkB# z8U*1j^~bUGr7rV>G5!2qWHX)Dz}6KLcYj`AwZl!g+oc+6(6? zkOYr)Gr`x*dA^W4PtF}){T~z{6I5EGjUA|K^O%j%BV;Ut(UR3%k(yk=-D49`7GBVp@VKta;KLuVeb)`Hb!ie+@k7n=`cP0ds;cf&rSG zprDFye#@bqaDD;=91 z#f*%OB-9^_4k!PBhqfq{*&RMbFk|lU5Z*s4MTomYK@)I?f>OG6y12tL0V;EcXOUmj z9nxPe?vRbX6L&a54yNeogmP`ye4;c|yJP&tG@nf>M9A`vgQ=;c(!D<}GSu|a%|(uD zy_{Sm0i`RU%|#Ys0PP)1X0%D<0$n7)St`$BLrXp8-^FC}pFSoekFF=5(LLrmc-S|O ziR%V)n|H#1Om0)5kMNyufyTmj3iQA&y_{g`HgPzo?I-zg&DI8+|7}^5ujd zjgfM7L#;Q{#tXXYBH2jo9`ffqfQJ+`$a0YT7#*bO-5>w>O|DZyC*AzxqgpRbAI(!p z0!mjvn}7Uj44}P3NsQ(m2NLBM>#Opk*uqlh_{*4P{?0L>cl1BxGrDv9S9sVr=ZNYB z^NlmlH~U7JI>I&X1Z{D>YJC>ijsV5;d-ZXI;Kq}`M%}hq!XKjz9L2q@5v{j zf)d~{1$}g7b@7<52dKgiO0OWHa0dgUTAFU%@nkI6(M4rc3(N& zbNmwuWI4)o27J=DKVI@au1i7}-Mr+7wO*PYnkSzGl&*L-FZr$*z_hOjNjR>%$a%>t z<{y&>u}!7U@$)gY{GDS$>F9IhGrDv9dwAG4=ZNS7^Nint(U?4ALK)!}ABC2}EegcI z_q?6p=;jvB=?4YBk`971;BnEy+=AqOx5q zA9Ve@u`onGCfE%|KjKIVrPkEb>|pODotT6DK};mPCwH)drr=-&rFA`baj;JVROVoR zPkvDcOMkgIST_1j9P9|uHkgpYS#QV^0eu&Tj|~(XS?_U zW_*NRx;fjuwO*P|nw>2Hr7NM$+3pepnD$drh3UG#U7)<>Q&Ra^Y-p+19gfN7?{yQB zM=Qu@bgw%X9`?=a;<~{c@5wMAljBurCVcNH&{+6hfgZS}0fMQU@4Zm?-e5zy0v4HE zq6kw`I9yH~H&+{GxuC z{&MldZ1kP@;mc!|_TCeFblu}EP~P&Xru-~6wAAm-TFZ>N;HJtKyi6q_d9*Y6jPCay1D5p7 z@8P<^T;E&rN_CPIb;^?E4&}E$^4oXy1+}aieguo(JE$F zbO538U=)yl!2OyzCaVXGUL5%IBQk2{7x(4;9kYT2zTg)H6?Bz!@ry?RROT0tCcmg( zq`zGJA{%`tesL6L>m$Y5=4vlpWA_d?P)BR`j?=wNU8h5qgG?80>tE=Pk33(~Q8yoX znbu3S#U-0Aj zqdUvf;bGsLWu~4me|ZCp$>c9}DhZc)BeWMTQy>W*>nwt=+k|mX;WFVoAY!hy6M<~6 zV>U%^Ag~6b*K?3wPV!9Bi8;xe;~{HGs7*Wh!gd5d>24vPV(L47j=^K zmy45RqwmB?Zd7%mhdDu)cdabNFl4*Cd}^B4rx=Nm|qlTsPHttiw!jOqu-0k>F-AqRz%+=pV9s3 z1MskKe$-8Om^1xf7?{bK8tElG>aU=a@TdY^aBmM0%-uZdK}L^CbBN%O1o^Tx;GJ9J zn3>TZ$T$Y0r}=P%)@u5v`AnX6`ylDWyzOsebnu?s+Y0Q#+X|ZKitOTTcezk_+ePFT z^|thvi??N?@5I|~h;@i00`zdjc3t!A;%g;ZWVzb(t-om*pqT_irJmn* zG6XU&FC)2m+C#Knn!cJnEdiw~sLj(J6a#4QkP@Uh+TASz0=C-pDz?nj&Aue2rN5g^ z_z;~+KBK$YCGfCsZq`X}n3ug2#%1!dCTa;Mdl~c*PF5fbUTuGZx0{oF9e1*j&|9uH z!;N8`7KxIwmuhQ#6#j(Elfh85Cde&`%+_x%LGlsFBnp7X0o?6O=ey*dW_VT)mo|cG zEr5Hh8s*V)rQDn(pBN2^&n^}w;Xwem@`YEybyelCIz}FEgsXPLcv-pK{UO0c%6SJB z3uZJ%s5%%GIB~r~hJbWpA;ZgK=4d8J3pRMjAb1HOgW#}kkz7KCs{ksSpih!tG-RN^ zTtWsm`c6WID~L5{P4qHYxUj3if*7kkOn7n!2on-2WCaNO8t39k|NczEZ|Axtbki*~ zc&pY+(@S$`KtSn=XbTPA6a#4QU{a$61q)>}ATm$Yhq1k-fxt&&%J~NZ3Du*Ikk9CW zz%B5wZ-GFDey|YW3os&62%u6(IR7s~YvKF_g5aOp1Xnlb{~T$CojSwb{4!=w^mPJf zF#0M7Csa;T9?hxo8T9K(C*}^n5)T*e$=#vA4&0%@S=T}rclZ;4%G}{k$uH^-=`R;| z$VT6ZI}Bw#=;3PhWj*nUbij7U`0E|WF>+F5dB+1#@5n#W9~b!-u5UtL-CX3HiCI@(aH2QGs@kx)*!|9`?-( zVmiUx;OvXdZcw6)@Pl)psqljWHE=>-CnhRDM)L>?k|_ zPR#CTS3nAo*oFM#JCXb<=P&dh;QbvZl7eR7Nd+Z!Wp?qT2LV*(Nnb#IQBO*Lxp-1G z`c6FQC9Nv#Q}?6{^_;G)$&xYJ{pU}n`7$iSKFf7JH?{K0`t`?ao~Y@bo7a4)*2~Fj z5>UFL*}UelF@W|CA|=}T>a17@V8Y1$i0vkIlb6R7@^_O7b)$9UGrF5R5+3%=O&+$M>lP?S)eBmrtwIs}&`JXX7-o9-zUDiyLEUOLf0?cX2A_kONhLO0zU-^a9G znqHcxiv*Oeh&IP}UkqT{C*r7F*Jq3i)z@s&s6LGCEp>=riYe#s5EH6L|4KfiJH&Uu z!@fDh4E|k>lE()c5;`g2n z2QMj%m87%hN$zbuoPfi0;edKb&mEl%3Im(M$raG66~giK<$91L>n3N`2j%!gd-4e~ z5rtj>Wbo48tT((U&|72%z+=n9SRRDK8;6$%>ke5S9J)L>YNePgPK~OhdIe)t++^4Y#LmpIUbP6yfKtYufWShSjiMXx8e` ze}1vh3>(eD_yqj1fPsNKiK?66&jJ1?#O?6cF3sB5$Y^0~6L|~ZX2ZDZlT+>8H`Hp) zYONVcFVC9U-lY+aHKCed7#XXLk3-i6d~zT5B&>w=$p|riBUD^M z@_HBEfyfViun_ECt==4|gja@@sk3%!50na(_|Mtx#o<+DpjETbY&Arq+3nfIaJ01% zzPD&|p6hGoAtt2NRXPkxxJ`dooF>jpgf^ggjQ4S`K{)L6-TdVl;QWF z`f?>y8 zL=g}YB1Co|tJ*HNUE>$7ax#-mR*`0uVucskWWk0lD?WpNK`cOQ5a*P;-P8REY>wL3 zz4JD79)El9@H*;WJh61K-DV#& z3>Cpd3Hnsqej>6-B_D&u&aKah3FMDPZDT@6 zt|c~yRIQ@bNX6V^D_vl6p$!>aWh!Bh~~x?nsuySenq)fv6otCQVRT*N8EKATUvVf88Fy zrBbhruC@c7E_j2_>_ykEIMcE;SP&SVODhF%<;_w&Z4VK8J7fz)L^eTyC2@*Zh!3_u zwA=b5Gve5bu(6FBDAaZ($?5t%oeBin4;A8CL*bq~ZVtU9_r=t-2Yw{bA>6(u-f$~j zRk-@7D$vFOx@Teo`!zgp2Jgu+|0jeG%!px^RH3W!Qn@&#^CmgyoK0GBtOTFI1SM|N zeS#)LQW{jU@1xX_CsPq8o(KX^GzsI>?ocyLqh%5{w035DjRvP)e|(&F>^ZaV4Tize4DFpyD|0oTx&bA zMrNu{ky6xi)D^vJfB#>-Ca#;|7Hs4O-qBalV|9N8mVHF{lS7Ta3Bv*46T+)Kz-vNv z3Gj^Y-8%q5h^_!q!riNYF9^FI0WJ~#83Fz!bglt52tVHd{6gq`2G}9=?(i4k^mD+E z1n~e667GHt_>%A|;WxtNM}RAY7lfCDKL~#jxF@vY#?gu!U@GpCskmX6`jo)kNffs* zQCu-y^$A?aRdKaf#ii{O*S}L-w?{oBaODBTP;oE@P!g+lSGPsL9|6+d%P z{1!&>uRg{90~Oz9s#^p;#wkAQRknYgs+_C${TPJDSb_UD5+;;cxhAI0OPX?sG%!;- z&Xbn?T+z3dgl*~Wg2wKwR(H|vf_{t*O2fg({<5y=nK$eP(w(1IOi8uf^z$TXI0QqU zwL4S!PYCcA^*2l{qC^%!$ZL>QQ(>F+7Q~ya*zwEeba8g@+l17z5il`Nb6DfY!~Xz3 CK<2&x literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.results.doctree b/docs/.doctrees/honeybee_radiance_postprocess.results.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e4e1e1cff6e298e5aff86213f5e3d99521ad7597 GIT binary patch literal 4473 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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..753f3df61c37d4a6d64603b8468e527be9751aa4 GIT binary patch literal 38033 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/honeybee_radiance_postprocess.vis_metadata.doctree b/docs/.doctrees/honeybee_radiance_postprocess.vis_metadata.doctree new file mode 100644 index 0000000000000000000000000000000000000000..16bb2c5ccb71ffb5e7da265d95a21950ed8d271f GIT binary patch literal 3519 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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 2024, 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..9e98daaf --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/annualdaylight.html @@ -0,0 +1,914 @@ + + + + + + + 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 2024, 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..970b886f --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/cli/grid.html @@ -0,0 +1,920 @@ + + + + + + + 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)
    +)
    +@click.option(
    +    '--output-extension', '-oe',
    +    help='Output file extension. This is only used if as_text is set to True. '
    +    'Otherwise the output extension will be npy.', default='ill', type=click.STRING
    +)
    +@click.option(
    +    '--as-text', '-at',
    +    help='Set to True if the output files should be saved as text instead of '
    +    'NumPy files.', default=False, type=click.BOOL
    +)
    +@click.option(
    +    '--fmt',
    +    help='Format for the output files when saved as text.', default='%.2f',
    +    type=click.STRING
    +)
    +@click.option(
    +    '--delimiter',
    +    help='Delimiter for the output files when saved as text.',
    +    type=click.Choice(['space', 'tab']), default='tab'
    +)
    +def merge_grid_folder(input_folder, output_folder, extension, dist_info,
    +                      output_extension, as_text, fmt, delimiter):
    +    """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, output_extension,
    +            as_text, fmt, delimiter)
    +    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, + output_extension='ill', as_text=False, fmt='%.2f', input_delimiter=',', + delimiter='tab'): + """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). + output_extension: Output file extension. This is only used if as_text + is set to True. Otherwise the output extension will be ```npy``. + as_text: Set to True if the output files should be saved as text instead + of NumPy files. + fmt: Format for the output files when saved as text. + input_delimiter: Delimiter for the input files. This is used only if the + input files are text files. + delimiter: Delimiter for the output files when saved as text. + """ + 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: + try: + array = binary_to_array(src_file) + except: + try: + array = np.loadtxt( + src_file, delimiter=input_delimiter) + except Exception: + raise RuntimeError( + f'Failed to load input file "{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 + if not as_text: + np.save(output_file, out_array) + else: + if output_extension.startswith('.'): + output_extension = output_extension[1:] + if delimiter == 'tab': + delimiter = '\t' + elif delimiter == 'space': + delimiter = ' ' + elif delimiter == 'comma': + delimiter = ',' + np.savetxt(output_file.with_suffix(f'.{output_extension}'), + out_array, fmt=fmt, delimiter=delimiter)
    + + +
    [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 2024, 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..b9496354 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/cli/util.html @@ -0,0 +1,751 @@ + + + + + + + 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 2024, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

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

    Source code for honeybee_radiance_postprocess.data_type

    +"""Functions for NumPy data type (dtype)."""
    +from typing import Tuple
    +import numpy as np
    +
    +
    +
    [docs]def smallest_integer_dtype(array: np.ndarray) -> np.signedinteger: + """Return the smallest possible integer dtype. + + Args: + array: NumPy array. + + Returns: + A NumPy integer dtype. + """ + if np.all(array >= np.iinfo(np.int8).min) and \ + np.all(array <= np.iinfo(np.int8).max): + return np.int8 + elif np.all(array >= np.iinfo(np.int16).min) and \ + np.all(array <= np.iinfo(np.int16).max): + return np.int16 + elif np.all(array >= np.iinfo(np.int32).min) and \ + np.all(array <= np.iinfo(np.int32).max): + return np.int32 + elif np.all(array >= np.iinfo(np.int64).min) and \ + np.all(array <= np.iinfo(np.int64).max): + return np.int64
    + + +
    [docs]def smallest_float_dtype(array: np.ndarray, rtol: float = 1e-5, + atol: float = 1e-5) -> np.floating: + """Return the smallest possible float dtype. + + The allclose function is used to check if a certain floating-point precision + can be used without losing accuracy. + + Args: + array: NumPy array. + rtol: The relative tolerance parameter for `np.allclose`. The default + is 1e-5. + atol: The absolute tolerance parameter for `np.allclose`. The default + is 1e-5. + + Returns: + A NumPy floating dtype. + """ + if np.all((array >= np.finfo(np.float16).min) & \ + (array <= np.finfo(np.float16).max)): + if np.allclose(array, array.astype(np.float16), rtol=rtol, atol=atol): + return np.float16 + if np.all((array >= np.finfo(np.float32).min) & \ + (array <= np.finfo(np.float32).max)): + if np.allclose(array, array.astype(np.float32), rtol=rtol, atol=atol): + return np.float32 + if np.all((array >= np.finfo(np.float64).min) & \ + (array <= np.finfo(np.float64).max)): + if np.allclose(array, array.astype(np.float64), rtol=rtol, atol=atol): + return np.float64
    + + +
    [docs]def smallest_dtype(array: np.ndarray, rtol: float = 1e-5, atol: float = 1e-5 + ) -> Tuple[np.signedinteger, np.floating]: + """Return the smallest possible dtype. + + Args: + array: NumPy array. + rtol: The relative tolerance parameter for `np.allclose`. The default + is 1e-5. This is also used if the dtype of the array is np.floating. + atol: The absolute tolerance parameter for `np.allclose`. The default + is 1e-5. This is also used if the dtype of the array is np.floating. + + Returns: + A NumPy dtype. + """ + if np.issubdtype(array.dtype, np.integer): + return smallest_integer_dtype(array) + elif np.issubdtype(array.dtype, np.floating): + return smallest_float_dtype(array, rtol=rtol, atol=atol) + else: + raise TypeError(f'Expected integer or floating dtype. Got {array.dtype}')
    + + +
    [docs]def set_smallest_dtype(array: np.ndarray, rtol: float = 1e-5, + atol: float = 1e-5) -> np.ndarray: + """Return a NumPy array with the smallest possible dtype. + + Args: + array: NumPy array. + rtol: The relative tolerance parameter for `np.allclose`. The default + is 1e-5. This is also used if the dtype of the array is np.floating. + atol: The absolute tolerance parameter for `np.allclose`. The default + is 1e-5. This is also used if the dtype of the array is np.floating. + + Returns: + A new NumPy array with a smaller dtype. + """ + dtype = smallest_dtype(array, rtol=rtol, atol=atol) + return array.astype(dtype)
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2024, 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..69e30c68 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/dynamic.html @@ -0,0 +1,903 @@ + + + + + + + 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 2024, 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..14e81df3 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/electriclight.html @@ -0,0 +1,648 @@ + + + + + + + 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 2024, 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..0f11414d --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/en17037.html @@ -0,0 +1,929 @@ + + + + + + + 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 2024, 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..bb65fa8d --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/helper.html @@ -0,0 +1,882 @@ + + + + + + + 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_sensor_grid_id = ('Sensor Grid ID', 'O') + dtype_base = [ + ('Mean', np.float32), + ('Minimum', np.float32), + ('Maximum', np.float32), + ('Uniformity Ratio', np.float32) + ] + dtype = [] + + # set up default format (for first two columns: str) + fmt = ['%s', '%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) + dtype.append(dtype_sensor_grid_id) + 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'] + grid_name = grid_info['name'] + data = [grid_name, 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 2024, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

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

    Source code for honeybee_radiance_postprocess.leed.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
    +from ..dynamic import DynamicSchedule, ApertureGroupSchedule
    +from .leed_schedule import shd_trans_schedule_descending, states_schedule_descending
    +
    +
    +def _create_grid_summary(
    +    grid_info, sda_grid, sda_blinds_up_grid, sda_blinds_down_grid, ase_grid,
    +    pass_sda, pass_ase, total_floor, area_weighted=True):
    +    """Create a LEED summary for a single grid.
    +
    +    Args:
    +        grid_info: Grid information.
    +        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_id = grid_info['full_id']
    +    grid_name = grid_info['name']
    +    grid_summary = {
    +        grid_id: {}
    +    }
    +    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_id]['ase_note'] = ase_note
    +
    +    if area_weighted:
    +        _grid_summary = {
    +            grid_id: {
    +                'name': grid_name,
    +                'full_id': grid_id,
    +                'ase': round(ase_grid, 2),
    +                'sda': round(sda_grid, 2),
    +                'sda_blinds_up': round(sda_blinds_up_grid, 2),
    +                'sda_blinds_down': round(sda_blinds_down_grid, 2),
    +                'floor_area_passing_ase': round(pass_ase, 2),
    +                'floor_area_passing_sda': round(pass_sda, 2),
    +                'total_floor_area': round(total_floor, 2)
    +            }
    +        }
    +    else:
    +        _grid_summary = {
    +            grid_id: {
    +                'name': grid_name,
    +                'full_id': grid_id,
    +                'ase': round(ase_grid, 2),
    +                'sda': round(sda_grid, 2),
    +                'sda_blinds_up': round(sda_blinds_up_grid, 2),
    +                'sda_blinds_down': round(sda_blinds_down_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, pass_sda_blinds_up_grids: list,
    +    pass_sda_blinds_down_grids: list) -> Tuple[dict, dict]:
    +    """Create combined summary and summary for each grid individually.
    +
    +    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, pass_sda_blinds_up,
    +             pass_sda_blinds_down) in \
    +            zip(pass_ase_grids, pass_sda_grids, grid_areas, grids_info,
    +                pass_sda_blinds_up_grids, pass_sda_blinds_down_grids):
    +            total_grid_area = grid_area.sum()
    +
    +            area_pass_ase = grid_area[pass_ase].sum()
    +            ase_grid = (total_grid_area - area_pass_ase) / total_grid_area * 100
    +
    +            area_pass_sda = grid_area[pass_sda].sum()
    +            area_pass_sda_blind_up = grid_area[pass_sda_blinds_up].sum()
    +            area_pass_sda_blinds_down = grid_area[pass_sda_blinds_down].sum()
    +            sda_grid = area_pass_sda / total_grid_area * 100
    +            sda_blinds_up_grid = area_pass_sda_blind_up / total_grid_area * 100
    +            sda_blinds_down_grid = area_pass_sda_blinds_down / total_grid_area * 100
    +
    +            # grid summary
    +            grid_summary = \
    +                _create_grid_summary(
    +                    grid_info, sda_grid, sda_blinds_up_grid, sda_blinds_down_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, pass_sda_blinds_up,
    +             pass_sda_blinds_down) in \
    +            zip(pass_ase_grids, pass_sda_grids, grids_info,
    +                pass_sda_blinds_up_grids, pass_sda_blinds_down_grids):
    +            grid_count = grid_info['count']
    +            sensor_count_pass_ase = pass_ase.sum()
    +            ase_grid = (grid_count - sensor_count_pass_ase) / grid_count * 100
    +
    +            sensor_count_pass_sda = pass_sda.sum()
    +            sensor_count_pass_sda_blinds_up = pass_sda_blinds_up.sum()
    +            sensor_count_pass_sda_blinds_down = pass_sda_blinds_down.sum()
    +            sda_grid = sensor_count_pass_sda / grid_count * 100
    +            sda_blinds_up_grid = sensor_count_pass_sda_blinds_up / grid_count * 100
    +            sda_blinds_down_grid = sensor_count_pass_sda_blinds_down / grid_count * 100
    +
    +            # grid summary
    +            grid_summary = \
    +                _create_grid_summary(
    +                    grid_info, sda_grid, sda_blinds_up_grid, sda_blinds_down_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)
    +    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: + shade_transmittances[light_path].append(1) + shd_trans_dict[light_path] = 1 + 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 + else: + shade_transmittances[light_path].append(1) + shd_trans_dict[light_path] = 1 + + return shade_transmittances, shd_trans_dict
    + + +
    [docs]def leed_states_schedule( + results: Union[str, AnnualDaylight], grids_filter: str = '*', + shade_transmittance: Union[float, dict] = 0.05, + use_states: bool = False + ) -> 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. + use_states: A boolean to note whether to use the simulated states. Set + to True to use the simulated states. The default is False which will + use the shade transmittance instead. + + 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_count = grid_info['count'] + light_paths = [lp[0] for lp in grid_info['light_path']] + + shade_transmittances, shd_trans_dict = ( + shade_transmittance_per_light_path( + light_paths, shade_transmittance, shd_trans_dict + ) + ) + + if len(light_paths) > 6: + if use_states: + states_schedule, fail_to_comply = states_schedule_descending( + results, grid_info, light_paths, occ_mask, + states_schedule, fail_to_comply) + else: + states_schedule, fail_to_comply = shd_trans_schedule_descending( + results, grid_info, light_paths, shade_transmittances, occ_mask, + states_schedule, fail_to_comply) + else: + if use_states: + combinations = results._get_state_combinations(grid_info) + else: + shade_transmittances, shd_trans_dict = shade_transmittance_per_light_path( + light_paths, shade_transmittance, shd_trans_dict) + 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, value in combination.items(): + if use_states: + combination_arrays.append( + results._get_array(grid_info, light_path, state=value, + res_type='direct') + ) + else: + array = results._get_array( + grid_info, light_path, res_type='direct') + if value == 1: + combination_arrays.append(array) + else: + combination_arrays.append(array * value) + 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.inf + + grid_comply = np.where(np.all(array_combinations==-np.inf, 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, value in combination.items(): + if light_path != '__static_apertures__': + states_schedule[light_path].append(value) + + occupancy_hoys = schedule_to_hoys(schedule, results.sun_up_hours) + + # map states to 8760 values + if use_states: + aperture_group_schedules = [] + for identifier, values in states_schedule.items(): + mapped_states = results.values_to_annual( + occupancy_hoys, values, results.timestep, dtype=np.int32) + aperture_group_schedules.append( + ApertureGroupSchedule(identifier, mapped_states.tolist()) + ) + states_schedule = \ + DynamicSchedule.from_group_schedules(aperture_group_schedules) + else: + for light_path, shd_trans in states_schedule.items(): + mapped_states = results.values_to_annual( + occupancy_hoys, shd_trans, results.timestep) + 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, + use_states: bool = False, 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. + use_states: A boolean to note whether to use the simulated states. Set + to True to use the simulated states. The default is False which will + use the shade transmittance instead. + 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, use_states=use_states) + 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 = [] + pass_sda_blinds_up_grids = [] + pass_sda_blinds_down_grids = [] + for grid_info in grids_info: + light_paths = [lp[0] for lp in grid_info['light_path']] + base_zero_array = np.apply_along_axis(filter_array, 1, np.zeros( + (grid_info['count'], len(results.sun_up_hours))), occ_mask) + arrays = [base_zero_array.copy()] + arrays_blinds_up = [base_zero_array.copy()] + arrays_blinds_down = [base_zero_array.copy()] + # combine total array for all light paths + if use_states: + array = results._array_from_states(grid_info, states=states_schedule, zero_array=True) + array = np.apply_along_axis(filter_array, 1, array, occ_mask) + + for light_path in light_paths: + # do an extra pass to calculate with blinds always up or down + if light_path != '__static_apertures__': + array_blinds_up = results._get_array( + grid_info, light_path, state=0, res_type='total') + array_filter = np.apply_along_axis( + filter_array, 1, array_blinds_up, occ_mask) + arrays_blinds_up.append(array_filter) + array_blinds_down = results._get_array( + grid_info, light_path, state=1, res_type='total') + array_filter = np.apply_along_axis( + filter_array, 1, array_blinds_down, occ_mask) + arrays_blinds_down.append(array_filter) + else: + static_array = results._get_array( + grid_info, light_path, state=0, res_type='total') + array_filter = np.apply_along_axis( + filter_array, 1, static_array, occ_mask) + arrays_blinds_up.append(array_filter) + arrays_blinds_down.append(array_filter) + else: + 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) + arrays_blinds_up.append(array_filter) + arrays_blinds_down.append( + array_filter * shd_trans_dict[light_path]) + else: + arrays.append(array_filter) + arrays_blinds_up.append(array_filter) + arrays_blinds_down.append(array_filter) + array = sum(arrays) + + array_blinds_up = sum(arrays_blinds_up) + array_blinds_down = sum(arrays_blinds_down) + # calculate da per grid + da_grid = da_array2d(array, total_occ=total_occ, threshold=threshold) + da_grids.append(da_grid) + da_blinds_up_grid = da_array2d( + array_blinds_up, total_occ=total_occ, threshold=threshold) + da_blinds_down_grid = da_array2d( + array_blinds_down, total_occ=total_occ, threshold=threshold) + # calculate sda per grid + pass_sda_grids.append(da_grid >= target_time) + pass_sda_blinds_up_grids.append(da_blinds_up_grid >= target_time) + pass_sda_blinds_down_grids.append(da_blinds_down_grid >= target_time) + + # create summaries for all grids and each grid individually + summary, summary_grid = _leed_summary( + pass_ase_grids, pass_sda_grids, grids_info, grid_areas, + pass_sda_blinds_up_grids, pass_sda_blinds_down_grids) + + # 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) + if use_states: + header = Header(data_type=GenericType(aperture_group, ''), unit='', + analysis_period=AnalysisPeriod()) + hourly_data = HourlyContinuousCollection(header=header, values=values) + else: + 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() + + if use_states: + states_schedule = {k:to_datacollection(k, v['schedule']) for k, v in states_schedule.to_dict().items()} + else: + 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 2024, Ladybug Tools.
    + Created using Sphinx 5.3.0.
    +

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

    Source code for honeybee_radiance_postprocess.leed.leed_schedule

    +"""Module for dynamic LEED schedules."""
    +from typing import Tuple
    +import numpy as np
    +
    +from ..results.annual_daylight import AnnualDaylight
    +from ..util import filter_array
    +
    +
    +
    [docs]def shd_trans_schedule_descending( + results: AnnualDaylight, grid_info, light_paths, shade_transmittances, occ_mask, + states_schedule, fail_to_comply + ) -> Tuple[dict, dict]: + grid_count = grid_info['count'] + full_direct = [] + full_thresh = [] + full_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)) + full_shd_trans_array.append(shade_transmittances[light_path][1]) + + # Sum the array element-wise. + # This array is the sum of all direct illuminance without shade + # transmittance. + full_direct_sum = sum(full_direct) + + # Create base list of shading combinations (all set to 1). + # We will replace the 1s later. + 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. + # This array is the percentage for each hour (axis=0). + direct_pct_above = (full_direct_sum >= 1000).sum(axis=0) / grid_count + + # Find the indices where the percentage of floor area is > 2%. + # This array is the problematic hours. + above_2_indices = np.where(direct_pct_above > 0.02)[0] + + # Use the indices to get the relevant hours. + direct_sum = np.take(full_direct_sum, above_2_indices, axis=1) + + # Use the indices to get the relevant hours. + direct = np.take(full_direct, above_2_indices, axis=2) + + # Use the indices to get the relevant hours. + thresh = np.take(full_thresh, above_2_indices, axis=1) + + # Sort and get indices. Negate the array to get descending order. + # Descending order puts the "highest offender" light path first. + 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): + # There are hours where the percentage of floor area is > 2%. + for idx, lp in enumerate(light_paths): + # Take column. For each iteration it will take the next column + # in descending order, i.e., the "highest offender" is the first + # column. + sort_indices = np.take(sort_thresh, idx, axis=1) + + # Map light path identifiers to indices. + light_path_ids = np.take(light_paths, sort_indices) + + # Map shade transmittance to indices. + shd_trans_array = np.take(full_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) + + if np.any(above_2_indices): + # 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) + + return states_schedule, fail_to_comply
    + + +
    [docs]def states_schedule_descending( + results: AnnualDaylight, grid_info, light_paths, occ_mask, + states_schedule, fail_to_comply + ) -> Tuple[dict, dict]: + grid_count = grid_info['count'] + full_direct = [] + full_thresh = [] + full_direct_blinds = [] + for light_path in light_paths: + array = results._get_array( + grid_info, light_path, state=0, 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)) + + array = results._get_array( + grid_info, light_path, state=1, res_type="direct") + array = np.apply_along_axis(filter_array, 1, array, occ_mask) + full_direct_blinds.append(array) + + full_direct = np.array(full_direct) + full_direct_blinds = np.array(full_direct_blinds) + full_direct_sum = full_direct.sum(axis=0) + + new_array = full_direct.copy() + + percentage_sensors = (full_direct_sum >= 1000).sum(axis=0) / grid_count + if not np.any(percentage_sensors > 0.02): + combinations = [ + {light_path: 0 for light_path in light_paths} + for i in range(full_direct_sum.shape[1])] + else: + tracking_array = np.zeros( + (new_array.shape[0], new_array.shape[2]), dtype=int) + + percentage_sensors = (full_direct >= 1000).sum(axis=1) / grid_count + + ranking_indices = np.argsort(-percentage_sensors, axis=0) + + for rank in range(ranking_indices.shape[0]): + # Calculate the percentage of sensors with values >= 1000 for the current new_array + summed_array = np.sum(new_array, axis=0) + percentage_sensors_summed = np.sum( + summed_array >= 1000, axis=0) / grid_count + indices_above_2_percent = np.where( + percentage_sensors_summed > 0.02)[0] + + # Exit if there are no more hours exceeding the threshold + if len(indices_above_2_percent) == 0: + break + + # Array indices to use for replacement for these hours + replace_indices = indices_above_2_percent + array_indices = ranking_indices[rank, replace_indices] + + # Use advanced indexing to replace values in new_array for these hours + for hour_idx, array_idx in zip(replace_indices, array_indices): + new_array[array_idx, :, hour_idx] = full_direct_blinds[ + array_idx, :, hour_idx + ] + + # Update the tracking array + tracking_array[array_indices, replace_indices] = 1 + + combinations = [] + for hour in range(new_array.shape[2]): + hour_dict = { + light_paths[i]: tracking_array[i, hour] + for i in range(tracking_array.shape[0])} + combinations.append(hour_dict) + + final_summed_array = np.sum(new_array, axis=0) + final_percentage_sensors_summed = ( + final_summed_array >= 1000).sum( + axis=0) / grid_count + final_indices_above_2_percent = np.where( + final_percentage_sensors_summed > 0.02)[0] + if np.any(final_indices_above_2_percent): + sun_up_hours_indices = np.where(occ_mask == 1)[0][ + final_indices_above_2_percent] + grid_comply = np.array(results.sun_up_hours)[sun_up_hours_indices] + fail_to_comply[grid_info['name']] = [ + int(hoy) for hoy in grid_comply] + + for combination in combinations: + for light_path, value in combination.items(): + if light_path != '__static_apertures__': + states_schedule[light_path].append(value) + + return states_schedule, fail_to_comply
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2024, 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..920cd3c3 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/metrics.html @@ -0,0 +1,1044 @@ + + + + + + + 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 2024, 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..09010ee3 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/reader.html @@ -0,0 +1,705 @@ + + + + + + + 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, fmt=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. + fmt: Format of the Radiance file. Can be either "ascii", "float", or "double. + line_count: Number of lines to skip in the input file. Usually used to + skip the header. + + Returns: + A NumPy array. + """ + if (nrows or ncols or ncomp or fmt) is None: + # get nrows, ncols and header line count + nrows, ncols, ncomp, line_count, fmt = binary_mtx_dimension(binary_file) + with open(binary_file, 'rb') as reader: + # skip first n lines from reader + for i in range(line_count): + reader.readline() + + if fmt == 'ascii': + array = np.loadtxt(reader, dtype=np.float32) + elif fmt == 'float': + array = np.fromfile(reader, dtype=np.float32) + elif fmt == 'double': + array = np.fromfile(reader, dtype=np.float64) + + 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, fmt = 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 2024, 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..240cc2b9 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/annual_daylight.html @@ -0,0 +1,1381 @@ + + + + + + + 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
    +import itertools
    +from collections import defaultdict
    +
    +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, ApertureGroupSchedule
    +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))
    + +
    [docs] def dynamic_schedule_from_sensor_maximum( + self, sensor_index: dict, grids_filter: str = '*', + maximum: float = 3000, res_type: str = 'total') -> DynamicSchedule: + """Calculate a DynamicSchedule from a sensor and a maximum allowed + illuminance. + + Args: + sensor_index: A dictionary with grids as keys and a list of sensor + indices as values. Defaults to None. + grids_filter: The name of a grid or a pattern to filter the grids. + Defaults to '*'. + maximum: A float value of the maximum illuminance allowed for the + sensor. + res_type: Type of results to load. Defaults to 'total'. + + Returns: + DynamicSchedule object. + """ + grids_info = self._filter_grids(grids_filter=grids_filter) + + aperture_group_schedules = [] + for grid_info in grids_info: + control_sensor = sensor_index.get(grid_info['full_id'], None) + if control_sensor is None: + continue + assert len(control_sensor) == 1, ('Expected one control sensor for ' + f'grid {grid_info["name"]}. Received {len(control_sensor)} ' + 'control sensors.') + control_sensor_index = control_sensor[0] + + combinations = self._get_state_combinations(grid_info) + + array_list_combinations = [] + for combination in combinations: + combination_arrays = [] + for light_path, state_index in combination.items(): + array = self._get_array( + grid_info, light_path, state=state_index, res_type=res_type) + sensor_array = array[control_sensor_index,:] + combination_arrays.append(sensor_array) + combination_array = sum(combination_arrays) + array_list_combinations.append(combination_array) + array_combinations = np.array(array_list_combinations) + array_combinations[array_combinations > maximum] = -np.inf + max_indices = array_combinations.argmax(axis=0) + combinations = [combinations[idx] for idx in max_indices] + + states_schedule = defaultdict(list) + for combination in combinations: + for light_path, state_index in combination.items(): + if light_path != '__static_apertures__': + states_schedule[light_path].append(state_index) + + # map states to 8760 values + for light_path, state_indices in states_schedule.items(): + mapped_states = self.values_to_annual( + self.sun_up_hours, state_indices, self.timestep) + mapped_states = mapped_states.astype(int) + aperture_group_schedules.append( + ApertureGroupSchedule(light_path, mapped_states.tolist())) + + dyn_sch = DynamicSchedule.from_group_schedules(aperture_group_schedules) + + return dyn_sch
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2024, 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..5fa7aa99 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/annual_irradiance.html @@ -0,0 +1,819 @@ + + + + + + + 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 2024, 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..b847fbfb --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/results/results.html @@ -0,0 +1,1995 @@ + + + + + + + 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
    +import itertools
    +
    +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:
    +                for elem in light_path:
    +                    if elem in lp:
    +                        continue
    +                    if elem == '__static_apertures__':
    +                        lp.insert(0, elem)
    +                    else:
    +                        lp.append(elem)
    +            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) + 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, base_value: int = 0, + dtype: np.dtype = np.float32) -> 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. + base_value: A value that will be applied for all the base array. + dtype: A NumPy dtype for the annual 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(dtype) + 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 = [elem for lp in grid_info['light_path'] for elem in lp] + 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. + """ + # 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 is -1 we continue since it is "turned off" + if state == -1: + continue + # load static array (state is static) + array = self._get_array( + grid_info, light_path, state=state, res_type=res_type) + arrays.append(array) + else: + # create default 0 array, we will add to this later + array = np.zeros((grid_info['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 np.unique(states_array): + if state == -1: + # if state is -1 we continue since it is "turned off" + continue + # load static array (state is static) + _array = self._get_array( + grid_info, light_path, state=state, res_type=res_type) + # get indices and add values to base array + states_indicies = states_array == state + array[:, states_indicies] += _array[:, states_indicies] + arrays.append(array) + array = sum(arrays) + + if not np.any(array): + if zero_array: + array = np.zeros((grid_info['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 + + def _light_paths_from_grid_info(self, grid_info: Union[dict, str]) -> list: + if isinstance(grid_info, str): + for _grid_info in self.grids_info: + if _grid_info['full_id'] == grid_info: + grid_info = _grid_info + break + else: + raise Exception(f'Grid info with full_id "{grid_info}" not found.') + light_paths = [elem for lp in grid_info['light_path'] for elem in lp] + + return light_paths + + def _get_state_combinations(self, grid_info: Union[dict, str]) -> List[dict]: + light_paths = self._light_paths_from_grid_info(grid_info) + valid_states = self._get_valid_states() + filtered_states = {lp: valid_states[lp] for lp in light_paths} + keys, values = zip(*filtered_states.items()) + combinations = [dict(zip(keys, v)) for v in itertools.product(*values)] + + return combinations
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2024, 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..4420b3e8 --- /dev/null +++ b/docs/_modules/honeybee_radiance_postprocess/util.html @@ -0,0 +1,813 @@ + + + + + + + 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, str]: + """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, fmt + """ + 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=': + fmt = line.split('=')[-1] + 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, fmt + 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 + + +
    [docs]def get_delimiter(delimiter_input): + if delimiter_input == 'tab' or delimiter_input == '\t': + return '\t' + elif delimiter_input == 'space' or delimiter_input == ' ': + return ' ' + elif delimiter_input == 'comma' or delimiter_input == ',': + return ',' + elif delimiter_input == 'semicolon' or delimiter_input == ';': + return ';' + else: + raise ValueError(f'Unsupported delimiter: {delimiter_input}')
    +
    + +
    + +
    +
    +
    +
    +

    + Back to top + +

    +

    + © Copyright 2024, 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..eac25fee --- /dev/null +++ b/docs/_modules/index.html @@ -0,0 +1,647 @@ + + + + + + + Overview: module code — honeybee-radiance-postprocess documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    + Back to top + +

    +

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

    +
    +
    + + \ No newline at end of file diff --git a/docs/_sources/cli/abnt.rst.txt b/docs/_sources/cli/abnt.rst.txt new file mode 100644 index 00000000..b059b52e --- /dev/null +++ b/docs/_sources/cli/abnt.rst.txt @@ -0,0 +1,6 @@ +abnt +==== + +.. click:: honeybee_radiance_postprocess.cli.abnt:abnt + :prog: honeybee-radiance-postprocess abnt + :show-nested: diff --git a/docs/_sources/cli/datacollection.rst.txt b/docs/_sources/cli/datacollection.rst.txt new file mode 100644 index 00000000..96d806bb --- /dev/null +++ b/docs/_sources/cli/datacollection.rst.txt @@ -0,0 +1,6 @@ +datacollection +============== + +.. click:: honeybee_radiance_postprocess.cli.datacollection:datacollection + :prog: honeybee-radiance-postprocess data-collection + :show-nested: 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..9dadfade --- /dev/null +++ b/docs/_sources/cli/index.rst.txt @@ -0,0 +1,21 @@ +CLI +=== + + +Commands +-------- +.. toctree:: + :maxdepth: 1 + + main + two_phase + datacollection + grid + merge + schedule + postprocess + mtxop + leed + abnt + translate + viewfactor 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/merge.rst.txt b/docs/_sources/cli/merge.rst.txt new file mode 100644 index 00000000..2d1e44bb --- /dev/null +++ b/docs/_sources/cli/merge.rst.txt @@ -0,0 +1,6 @@ +merge +===== + +.. click:: honeybee_radiance_postprocess.cli.merge:merge + :prog: honeybee-radiance-postprocess merge + :show-nested: 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/cli/viewfactor.rst.txt b/docs/_sources/cli/viewfactor.rst.txt new file mode 100644 index 00000000..13077a88 --- /dev/null +++ b/docs/_sources/cli/viewfactor.rst.txt @@ -0,0 +1,6 @@ +viewfactor +========== + +.. click:: honeybee_radiance_postprocess.cli.viewfactor:view_factor + :prog: honeybee-radiance-postprocess view_factor + :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.abnt.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.abnt.rst.txt new file mode 100644 index 00000000..6f0c8bb3 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.abnt.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.abnt module +=============================================== + +.. automodule:: honeybee_radiance_postprocess.cli.abnt + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.cli.datacollection.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.datacollection.rst.txt new file mode 100644 index 00000000..5f1a6cc7 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.datacollection.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.datacollection module +========================================================= + +.. automodule:: honeybee_radiance_postprocess.cli.datacollection + :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.merge.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.merge.rst.txt new file mode 100644 index 00000000..277e3cd8 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.merge.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.merge module +================================================ + +.. automodule:: honeybee_radiance_postprocess.cli.merge + :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..a055c0bd --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.rst.txt @@ -0,0 +1,29 @@ +honeybee\_radiance\_postprocess.cli package +=========================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.cli.abnt + honeybee_radiance_postprocess.cli.datacollection + honeybee_radiance_postprocess.cli.grid + honeybee_radiance_postprocess.cli.leed + honeybee_radiance_postprocess.cli.merge + 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 + honeybee_radiance_postprocess.cli.viewfactor + +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.cli.viewfactor.rst.txt b/docs/_sources/honeybee_radiance_postprocess.cli.viewfactor.rst.txt new file mode 100644 index 00000000..d18a70fc --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.cli.viewfactor.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.cli.viewfactor module +===================================================== + +.. automodule:: honeybee_radiance_postprocess.cli.viewfactor + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.data_type.rst.txt b/docs/_sources/honeybee_radiance_postprocess.data_type.rst.txt new file mode 100644 index 00000000..74a158b3 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.data_type.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.data\_type module +================================================= + +.. automodule:: honeybee_radiance_postprocess.data_type + :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.leed.rst.txt b/docs/_sources/honeybee_radiance_postprocess.leed.leed.rst.txt new file mode 100644 index 00000000..30ff59e0 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.leed.leed.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.leed.leed module +================================================ + +.. automodule:: honeybee_radiance_postprocess.leed.leed + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/honeybee_radiance_postprocess.leed.leed_schedule.rst.txt b/docs/_sources/honeybee_radiance_postprocess.leed.leed_schedule.rst.txt new file mode 100644 index 00000000..575ccadc --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.leed.leed_schedule.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.leed.leed\_schedule module +========================================================== + +.. automodule:: honeybee_radiance_postprocess.leed.leed_schedule + :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..20b03627 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.leed.rst.txt @@ -0,0 +1,19 @@ +honeybee\_radiance\_postprocess.leed package +============================================ + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.leed.leed + honeybee_radiance_postprocess.leed.leed_schedule + +Module contents +--------------- + +.. 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..d549d903 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.rst.txt @@ -0,0 +1,40 @@ +honeybee\_radiance\_postprocess package +======================================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.cli + honeybee_radiance_postprocess.leed + honeybee_radiance_postprocess.results + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + honeybee_radiance_postprocess.annual + honeybee_radiance_postprocess.annualdaylight + honeybee_radiance_postprocess.annualirradiance + honeybee_radiance_postprocess.data_type + honeybee_radiance_postprocess.dynamic + honeybee_radiance_postprocess.electriclight + honeybee_radiance_postprocess.en17037 + honeybee_radiance_postprocess.helper + honeybee_radiance_postprocess.metrics + honeybee_radiance_postprocess.reader + honeybee_radiance_postprocess.type_hints + honeybee_radiance_postprocess.util + honeybee_radiance_postprocess.vis_metadata + +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/honeybee_radiance_postprocess.vis_metadata.rst.txt b/docs/_sources/honeybee_radiance_postprocess.vis_metadata.rst.txt new file mode 100644 index 00000000..97e5d117 --- /dev/null +++ b/docs/_sources/honeybee_radiance_postprocess.vis_metadata.rst.txt @@ -0,0 +1,7 @@ +honeybee\_radiance\_postprocess.vis\_metadata module +==================================================== + +.. automodule:: honeybee_radiance_postprocess.vis_metadata + :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 + $('