From 0fb1da835176d7108502be1c2ce50f8b8d9c50f1 Mon Sep 17 00:00:00 2001 From: Quarto GHA Workflow Runner Date: Wed, 6 Mar 2024 02:59:31 +0000 Subject: [PATCH] Built site for gh-pages --- .nojekyll | 1 + 2020-year-in-review.html | 71 - 2021-year-in-review.html | 79 - 2022-year-in-review.html | 77 - 2023-year-in-review.html | 96 - 404.html | 19 - CNAME | 1 - DC-workshop.html | 66 - LICENSE | 201 -- .../2022/03/03/DC-workshop/index.html | 14 + README.md | 58 - about.html | 555 +++++ about/index.html | 145 -- .../11/06/introducing-psl-blog/index.html | 14 + assets/badges/binder.svg | 1 - assets/badges/colab.svg | 1 - assets/badges/github.svg | 1 - assets/css/style.css | 479 ---- assets/css/style.css.map | 30 - assets/js/search-data.json | 352 --- assets/js/search.js | 296 --- assets/js/vendor/lunr.min.js | 6 - assets/minima-social-icons.svg | 9 - categories/index.html | 721 ------ demo-day-cambridge-cash-assistance.html | 60 - demo-day-ccc-international.html | 72 - ...nstructing-tax-data-for-the-50-states.html | 75 - demo-day-contributing-psl.html | 75 - demo-day-cost-of-capital-calculator.html | 76 - demo-day-creating-reform-files.html | 61 - demo-day-cs-api-stitch.html | 83 - demo-day-cs-auto-deploy.html | 106 - demo-day-github.html | 96 - demo-day-how-to-use-og-usa.html | 106 - demo-day-jupyter-book-deploy.html | 128 - demo-day-og-core.html | 79 - demo-day-policyengine-us.html | 73 - demo-day-scf-microdf.html | 66 - demo-day-stacked-revenue-estimates.html | 101 - demo-day-synthimpute.html | 84 - demo-day-tax-brain-python-api.html | 106 - demo-day-tax-brain.html | 73 - demo-day-tax-cruncher.html | 59 - demo-day-taxbrain-to-taxcruncher.html | 49 - demo-day-unit-testing.html | 112 - .../demo-day-creating-reform-files/index.html | 14 + .../index.html | 14 + .../28/demo-day-how-to-use-og-usa/index.html | 14 + .../03/08/demo-day-cs-api-stitch/index.html | 14 + .../02/demo-day-contributing-psl/index.html | 14 + .../08/09/demo-day-unit-testing/index.html | 14 + .../04/12/demo-day-policyengine-us/index.html | 14 + .../index.html | 14 + .../index.html | 14 + .../18/demo-day-ccc-international/index.html | 14 + .../2022/06/28/demo-day-github/index.html | 14 + .../index.html | 14 + .../demo-day-tax-brain-python-api/index.html | 14 + .../2020/12/23/demo-day-tax-brain/index.html | 14 + .../11/23/demo-day-tax-cruncher/index.html | 14 + .../demo-day-jupyter-book-deploy/index.html | 14 + .../01/29/demo-day-scf-microdf/index.html | 14 + .../09/20/demo-day-cs-auto-deploy/index.html | 14 + .../12/08/demo-day-synthimpute/index.html | 14 + .../2021/11/01/demo-day-og-core/index.html | 14 + .../index.html | 14 + feed.xml | 1 - images/MLK_Library_cut2.png | Bin images/OG-USA_logo_long.png | Bin images/biden_dist_fig.png | Bin images/biden_revenue.png | Bin images/biden_volcano.png | Bin images/chart-preview.png | Bin 198493 -> 0 bytes images/copied_from_nb/README.md | 3 - .../build_history_dashboard.png | Bin .../build_history_dashboard_progress.png | Bin .../cs-auto-deploy/build_scheduled_page.png | Bin images/cs-auto-deploy/build_status_failed.png | Bin .../build_status_failed_logs.png | Bin .../build_status_page_progress.png | Bin .../build_status_page_success.png | Bin .../cs-auto-deploy/connect_project_page.png | Bin images/cs-auto-deploy/project_dashboard.png | Bin images/cs-auto-deploy/project_home_page.png | Bin images/cs-auto-deploy/publish_page.png | Bin .../run_project_page_loading.png | Bin .../run_project_page_success.png | Bin .../updated_build_history_page.png | Bin images/diagram.png | Bin 42576 -> 0 bytes images/favicon.ico | Bin 15086 -> 0 bytes images/tb_report1.png | Bin images/tb_report2.png | Bin images/tb_report3.png | Bin images/tb_report4.png | Bin images/tb_report5.png | Bin index.html | 1796 +++++++++++++- introducing-psl-blog.html | 45 - listings.json | 34 + images/logo.png => logo.png | Bin page2/index.html | 90 - posts/2020-11-06-introducing-psl-blog.html | 589 +++++ ...-11-18-demo-day-creating-reform-files.html | 597 +++++ posts/2020-11-23-demo-day-tax-cruncher.html | 595 +++++ ...3-demo-day-cost-of-capital-calculator.html | 600 +++++ posts/2020-12-23-2020-year-in-review.html | 599 +++++ posts/2020-12-23-demo-day-tax-brain.html | 598 +++++ ...2021-01-28-demo-day-how-to-use-og-usa.html | 630 +++++ posts/2021-01-29-demo-day-scf-microdf.html | 600 +++++ .../2021-03-02-demo-day-contributing-psl.html | 602 +++++ ...3-02-demo-day-taxbrain-to-taxcruncher.html | 592 +++++ posts/2021-03-08-demo-day-cs-api-stitch.html | 627 +++++ ...05-demo-day-stacked-revenue-estimates.html | 603 +++++ ...21-05-17-demo-day-jupyter-book-deploy.html | 634 +++++ ...1-06-14-demo-day-tax-brain-python-api.html | 646 +++++ ...nstructing-tax-data-for-the-50-states.html | 606 +++++ posts/2021-08-09-demo-day-unit-testing.html | 629 +++++ posts/2021-09-20-demo-day-cs-auto-deploy.html | 687 ++++++ posts/2021-11-01-demo-day-og-core.html | 601 +++++ posts/2021-12-08-demo-day-synthimpute.html | 607 +++++ posts/2021-12-28-2021-year-in-review.html | 602 +++++ posts/2022-03-03-DC-workshop.html | 601 +++++ .../2022-04-12-demo-day-policyengine-us.html | 603 +++++ ...2022-04-18-demo-day-ccc-international.html | 600 +++++ posts/2022-06-28-demo-day-github.html | 609 +++++ ...14-demo-day-cambridge-cash-assistance.html | 592 +++++ posts/2022-12-31-2022-year-in-review.html | 601 +++++ posts/2023-12-28-2023-year-in-review.html | 604 +++++ .../2020/12/23/2020-year-in-review/index.html | 14 + .../2021/12/28/2021-year-in-review/index.html | 14 + .../2022/12/31/2022-year-in-review/index.html | 14 + .../2023/12/28/2023-year-in-review/index.html | 14 + robots.txt | 2 +- search.json | 233 ++ search/index.html | 11 - settings.ini | 44 - site_libs/bootstrap/bootstrap-icons.css | 2078 +++++++++++++++++ site_libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 176200 bytes site_libs/bootstrap/bootstrap.min.css | 12 + site_libs/bootstrap/bootstrap.min.js | 7 + site_libs/clipboard/clipboard.min.js | 7 + site_libs/quarto-html/anchor.min.js | 9 + site_libs/quarto-html/popper.min.js | 6 + .../quarto-syntax-highlighting.css | 203 ++ site_libs/quarto-html/quarto.js | 899 +++++++ site_libs/quarto-html/tippy.css | 1 + site_libs/quarto-html/tippy.umd.min.js | 2 + site_libs/quarto-listing/list.min.js | 2 + site_libs/quarto-listing/quarto-listing.js | 243 ++ site_libs/quarto-nav/headroom.min.js | 7 + site_libs/quarto-nav/quarto-nav.js | 289 +++ site_libs/quarto-search/autocomplete.umd.js | 3 + site_libs/quarto-search/fuse.min.js | 9 + site_libs/quarto-search/quarto-search.js | 1286 ++++++++++ sitemap.xml | 241 +- styles.css | 1 + 155 files changed, 24538 insertions(+), 4863 deletions(-) delete mode 100755 2020-year-in-review.html delete mode 100755 2021-year-in-review.html delete mode 100755 2022-year-in-review.html delete mode 100755 2023-year-in-review.html delete mode 100755 404.html delete mode 100755 CNAME delete mode 100755 DC-workshop.html delete mode 100755 LICENSE create mode 100644 PSL/PSL-Foundation/Workshop/2022/03/03/DC-workshop/index.html delete mode 100755 README.md create mode 100644 about.html delete mode 100755 about/index.html create mode 100644 announcements/2020/11/06/introducing-psl-blog/index.html delete mode 100755 assets/badges/binder.svg delete mode 100755 assets/badges/colab.svg delete mode 100755 assets/badges/github.svg delete mode 100755 assets/css/style.css delete mode 100755 assets/css/style.css.map delete mode 100755 assets/js/search-data.json delete mode 100755 assets/js/search.js delete mode 100755 assets/js/vendor/lunr.min.js delete mode 100755 assets/minima-social-icons.svg delete mode 100755 categories/index.html delete mode 100755 demo-day-cambridge-cash-assistance.html delete mode 100755 demo-day-ccc-international.html delete mode 100755 demo-day-constructing-tax-data-for-the-50-states.html delete mode 100755 demo-day-contributing-psl.html delete mode 100755 demo-day-cost-of-capital-calculator.html delete mode 100755 demo-day-creating-reform-files.html delete mode 100755 demo-day-cs-api-stitch.html delete mode 100755 demo-day-cs-auto-deploy.html delete mode 100755 demo-day-github.html delete mode 100755 demo-day-how-to-use-og-usa.html delete mode 100755 demo-day-jupyter-book-deploy.html delete mode 100755 demo-day-og-core.html delete mode 100755 demo-day-policyengine-us.html delete mode 100755 demo-day-scf-microdf.html delete mode 100755 demo-day-stacked-revenue-estimates.html delete mode 100755 demo-day-synthimpute.html delete mode 100755 demo-day-tax-brain-python-api.html delete mode 100755 demo-day-tax-brain.html delete mode 100755 demo-day-tax-cruncher.html delete mode 100755 demo-day-taxbrain-to-taxcruncher.html delete mode 100755 demo-day-unit-testing.html create mode 100644 demo-days/2020/11/18/demo-day-creating-reform-files/index.html create mode 100644 demo-days/2021/03/02/demo-day-taxbrain-to-taxcruncher/index.html create mode 100644 demo-days/OG-USA/Tax-Calculator/open-source/policy-simulation-library/compute-studio/us/2021/01/28/demo-day-how-to-use-og-usa/index.html create mode 100644 demo-days/PSL/2021/03/08/demo-day-cs-api-stitch/index.html create mode 100644 demo-days/PSL/git/github/2021/03/02/demo-day-contributing-psl/index.html create mode 100644 demo-days/R/Python/unit-testing/2021/08/09/demo-day-unit-testing/index.html create mode 100644 demo-days/apps/taxes/benefits/us/2022/04/12/demo-day-policyengine-us/index.html create mode 100644 demo-days/benefits/us/2022/07/14/demo-day-cambridge-cash-assistance/index.html create mode 100644 demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/2020/12/03/demo-day-cost-of-capital-calculator/index.html create mode 100644 demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/taxes/2022/04/18/demo-day-ccc-international/index.html create mode 100644 demo-days/github/git/workflow/getting-started/2022/06/28/demo-day-github/index.html create mode 100644 demo-days/individual-income-tax/tax-brain/tax-calculator/2021/04/05/demo-day-stacked-revenue-estimates/index.html create mode 100644 demo-days/individual-income-tax/tax-brain/tax-calculator/2021/06/14/demo-day-tax-brain-python-api/index.html create mode 100644 demo-days/individual-income-tax/tax-brain/us/2020/12/23/demo-day-tax-brain/index.html create mode 100644 demo-days/individual-income-tax/tax-cruncher/2020/11/23/demo-day-tax-cruncher/index.html create mode 100644 demo-days/jupyter-book/GH-actions/documentation/2021/05/17/demo-day-jupyter-book-deploy/index.html create mode 100644 demo-days/microdf/scf/2021/01/29/demo-day-scf-microdf/index.html create mode 100644 demo-days/policy-simulation-library/compute-studio/2021/09/20/demo-day-cs-auto-deploy/index.html create mode 100644 demo-days/python/data-fusion/synthimpute/2021/12/08/demo-day-synthimpute/index.html create mode 100644 demo-days/python/macroeconomics/overlapping-generations/2021/11/01/demo-day-og-core/index.html create mode 100644 demo-days/tax/data/us/2021/07/16/demo-day-constructing-tax-data-for-the-50-states/index.html delete mode 100755 feed.xml mode change 100755 => 100644 images/MLK_Library_cut2.png mode change 100755 => 100644 images/OG-USA_logo_long.png mode change 100755 => 100644 images/biden_dist_fig.png mode change 100755 => 100644 images/biden_revenue.png mode change 100755 => 100644 images/biden_volcano.png delete mode 100755 images/chart-preview.png delete mode 100755 images/copied_from_nb/README.md mode change 100755 => 100644 images/cs-auto-deploy/build_history_dashboard.png mode change 100755 => 100644 images/cs-auto-deploy/build_history_dashboard_progress.png mode change 100755 => 100644 images/cs-auto-deploy/build_scheduled_page.png mode change 100755 => 100644 images/cs-auto-deploy/build_status_failed.png mode change 100755 => 100644 images/cs-auto-deploy/build_status_failed_logs.png mode change 100755 => 100644 images/cs-auto-deploy/build_status_page_progress.png mode change 100755 => 100644 images/cs-auto-deploy/build_status_page_success.png mode change 100755 => 100644 images/cs-auto-deploy/connect_project_page.png mode change 100755 => 100644 images/cs-auto-deploy/project_dashboard.png mode change 100755 => 100644 images/cs-auto-deploy/project_home_page.png mode change 100755 => 100644 images/cs-auto-deploy/publish_page.png mode change 100755 => 100644 images/cs-auto-deploy/run_project_page_loading.png mode change 100755 => 100644 images/cs-auto-deploy/run_project_page_success.png mode change 100755 => 100644 images/cs-auto-deploy/updated_build_history_page.png delete mode 100755 images/diagram.png delete mode 100755 images/favicon.ico mode change 100755 => 100644 images/tb_report1.png mode change 100755 => 100644 images/tb_report2.png mode change 100755 => 100644 images/tb_report3.png mode change 100755 => 100644 images/tb_report4.png mode change 100755 => 100644 images/tb_report5.png mode change 100755 => 100644 index.html delete mode 100755 introducing-psl-blog.html create mode 100644 listings.json rename images/logo.png => logo.png (100%) delete mode 100755 page2/index.html create mode 100644 posts/2020-11-06-introducing-psl-blog.html create mode 100644 posts/2020-11-18-demo-day-creating-reform-files.html create mode 100644 posts/2020-11-23-demo-day-tax-cruncher.html create mode 100644 posts/2020-12-03-demo-day-cost-of-capital-calculator.html create mode 100644 posts/2020-12-23-2020-year-in-review.html create mode 100644 posts/2020-12-23-demo-day-tax-brain.html create mode 100644 posts/2021-01-28-demo-day-how-to-use-og-usa.html create mode 100644 posts/2021-01-29-demo-day-scf-microdf.html create mode 100644 posts/2021-03-02-demo-day-contributing-psl.html create mode 100644 posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html create mode 100644 posts/2021-03-08-demo-day-cs-api-stitch.html create mode 100644 posts/2021-04-05-demo-day-stacked-revenue-estimates.html create mode 100644 posts/2021-05-17-demo-day-jupyter-book-deploy.html create mode 100644 posts/2021-06-14-demo-day-tax-brain-python-api.html create mode 100644 posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html create mode 100644 posts/2021-08-09-demo-day-unit-testing.html create mode 100644 posts/2021-09-20-demo-day-cs-auto-deploy.html create mode 100644 posts/2021-11-01-demo-day-og-core.html create mode 100644 posts/2021-12-08-demo-day-synthimpute.html create mode 100644 posts/2021-12-28-2021-year-in-review.html create mode 100644 posts/2022-03-03-DC-workshop.html create mode 100644 posts/2022-04-12-demo-day-policyengine-us.html create mode 100644 posts/2022-04-18-demo-day-ccc-international.html create mode 100644 posts/2022-06-28-demo-day-github.html create mode 100644 posts/2022-07-14-demo-day-cambridge-cash-assistance.html create mode 100644 posts/2022-12-31-2022-year-in-review.html create mode 100644 posts/2023-12-28-2023-year-in-review.html create mode 100644 psl/psl-foundation/2020/12/23/2020-year-in-review/index.html create mode 100644 psl/psl-foundation/2021/12/28/2021-year-in-review/index.html create mode 100644 psl/psl-foundation/2022/12/31/2022-year-in-review/index.html create mode 100644 psl/psl-foundation/2023/12/28/2023-year-in-review/index.html mode change 100755 => 100644 robots.txt create mode 100644 search.json delete mode 100755 search/index.html delete mode 100755 settings.ini create mode 100644 site_libs/bootstrap/bootstrap-icons.css create mode 100644 site_libs/bootstrap/bootstrap-icons.woff create mode 100644 site_libs/bootstrap/bootstrap.min.css create mode 100644 site_libs/bootstrap/bootstrap.min.js create mode 100644 site_libs/clipboard/clipboard.min.js create mode 100644 site_libs/quarto-html/anchor.min.js create mode 100644 site_libs/quarto-html/popper.min.js create mode 100644 site_libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 site_libs/quarto-html/quarto.js create mode 100644 site_libs/quarto-html/tippy.css create mode 100644 site_libs/quarto-html/tippy.umd.min.js create mode 100644 site_libs/quarto-listing/list.min.js create mode 100644 site_libs/quarto-listing/quarto-listing.js create mode 100644 site_libs/quarto-nav/headroom.min.js create mode 100644 site_libs/quarto-nav/quarto-nav.js create mode 100644 site_libs/quarto-search/autocomplete.umd.js create mode 100644 site_libs/quarto-search/fuse.min.js create mode 100644 site_libs/quarto-search/quarto-search.js mode change 100755 => 100644 sitemap.xml create mode 100644 styles.css diff --git a/.nojekyll b/.nojekyll index e69de29..6888b87 100644 --- a/.nojekyll +++ b/.nojekyll @@ -0,0 +1 @@ +6d315867 \ No newline at end of file diff --git a/2020-year-in-review.html b/2020-year-in-review.html deleted file mode 100755 index 1ce4989..0000000 --- a/2020-year-in-review.html +++ /dev/null @@ -1,71 +0,0 @@ -
- -
-

2020: A year in review

Highlights from the Policy Simulation Library in 2020.

- - -

- - psl -   - - psl-foundation - - -

- - -
- -
-
    -

- -
- -

This year has been one to forget! -But 2020 did have its bright spots, especially in the PSL community. -This post reviews some of the highlights from the year.

- -

The Library was able to welcome two new models to the catalog in 2020: microdf and OpenFisca-UK. -microdf provides a number of useful tools for use with economic survey data. -OpenFisca-UK builds off the OpenFisca platform, offering a microsimulation model for tax and benefit programs in the UK.

- -

In addition, four new models were added to the Library as incubating projects. The ui-calculator model has received a lot of attention this year in the U.S., as it provides the capability to calculate unemployment insurance benefits across U.S. states, a major mode of delivering financial relief to individuals during the COVID crisis. -PCI-Outbreak directly relates to the COVID crisis, using machine learning and natural language processing to estimate the true extent of the COVID pandemic in China. -The model finds that actual COVID cases are significantly higher than what official statistics claim. -The COVID-MCS model considers COVID case counts and test positivity rates to measure whether or not U.S. communities are meeting certain benchmarks in controlling the spread of the disease. -On a lighter note, the Git-Tutorial project provides instruction and resources for learning to use Git and GitHub, with an emphasis on the workflow used by many projects in the PSL community.

- -

The organization surrounding the Policy Simulation Library has been bolstered in two ways. -First, we have formed a relationship with the Open Collective Foundation, who is now our fiscal host. -This allows PSL to accept tax deductible contributions that will support the efforts of the community. Second, we’ve formed the PSL Foundation, with an initial board that includes Linda Gibbs, Glenn Hubbard, and Jason DeBacker.

- -

Our outreach efforts have grown in 2020 to include the regular PSL Demo Day series and this PSL Blog. -Community members have also presented work with PSL models at the PyData Global Conference, the Tax Economists Forum, AEI, the Coiled Podcast, and the Virtual Global Village Podcast. -New users will also find a better experience learning how to use and contribute to PSL models as many PSL models have improved their documentation through the use of Jupyter Book (e.g., see the Tax-Calculator documentation).

- -

We love seeing the community around open source policymaking expand and are proud that PSL models have been used for important policy analysis in 2020, including analyzing economic policy responses to the pandemic and the platforms of presidential candidates. -We look forward to more progress in 2021 and welcome you to join the effort as a contributor, financially or as an open source developer.

- -

Best wishes from PSL for a happy and healthy new year!

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/2021-year-in-review.html b/2021-year-in-review.html deleted file mode 100755 index c7ab1ab..0000000 --- a/2021-year-in-review.html +++ /dev/null @@ -1,79 +0,0 @@ -
- -
-

2021: A year in review

Highlights from the Policy Simulation Library in 2021.

- - -

- - psl -   - - psl-foundation - - -

- - -
- -
-
    -

- -
- -

As 2021 winds down, I wanted to take a few minutes to reflect on the Policy Simulation Library’s efforts over the past year. -With an amazing community of contributors, supporters, and users, PSL has been able to make a real impact in 2021.

- -

The library saw two new projects achieve “cataloged” status: Tax Foundation’s Capital Cost Recovery model and the Federal Reserve Bank of New York’s DSGE.jl model. -Both models satisfy all the the PSL criteria for transparency and reproducibility. -Both are also written entirely in open source software: the Capital Cost Recovery model is in R and the DSGE model in Julia.

- -

An exciting new project to join the Library this year is PolicyEngine. -PolicyEngine is building open source tax and benefit mircosimulation models and very user-friendly interfaces to these models. -The goal of this project is to take policy analysis to the masses through intuitive web and mobile interfaces for policy models. -The UK version of the PolicyEngine app has already seen use from politicians interested in reforming the tax and benefit system in the UK.

- -

Another excellent new addition to the library is the Federal-State Tax Project. -This project provides data imputation tools to allow for state tax data that are representative of each state as well as federal totals. -These datasets can then be used in microsimulation models, such as Tax-Calculator to study the impact of federal tax laws across the states. -Matt Jensen and Don Boyd have published several pieces with these tools, including in State Tax Notes

- -

PSL Foundation became an official business entity in 2021. -While still awaiting a letter of determination for 501(c)(3) status from the IRS, PSL Foundation was able to raise more than $25,000 in the last few months of 2021 to support open source policy analysis!

- -

PSL community members continued to interact several times each week in our public calls. -The PSL Shop was launched in 2021 so that anyone can get themselves some PSL swag (with some of each purchase going back to the PSL Foundation to support the Library). -In addition, PSL hosted 20 Demo Day presentations from 11 different presenters! -These short talks covered everything from new projects to interesting applications of some of the first projects to join the Library, as well as general open source tools.

- -

As in past years, PSL cataloged and incubating models were found to be of great use in current policy debates. -Whether it was the ARPA, Biden administration proposals to expand the CTC, or California’s Basic Income Bill, the accessibility and ability to reproduce results from these open source projects has made them a boon to policy analysts.

- -

We are looking forward to a great 2022! -We expect the Library to continue to grow, foresee many interesting and helpful Demo Days, and are planning a DC PSL Workshop for March 2022. -We hope to see you around these or other events!

- -

Best wishes from PSL for a happy and healthy New Year!

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/2022-year-in-review.html b/2022-year-in-review.html deleted file mode 100755 index 1d58fe2..0000000 --- a/2022-year-in-review.html +++ /dev/null @@ -1,77 +0,0 @@ -
- -
-

2022: A year in review

Highlights from the Policy Simulation Library in 2022.

- - -

- - psl -   - - psl-foundation - - -

- - -
- -
-
    -

- -
- -

This has been another successful year for the Policy Simulation Library, whose great community of contributors continue to make innovative advances in open source policy analysis, and for the PSL Foundation, which supports the Library and its community. -We are so thankful for all those who have made financial or technical contributions to the PSL this year! -In this blog post, I want to take this time at the end of the year to reflect on a few of the highlights from 2022.

- -

PolicyEngine, a PSL Foundation fiscally-sponsored project, launched PolicyEngine US in April and has since seen many use cases of the model (check out the PolicyEngine year-in-review here). -PolicyEngine had begun by leveraging the OpenFisca platform, but has transitioned to their own-maintained PolicyEngine Core. -PolicyEngine Core and their related projects (such as PolicyEngine US and PolicyEngine UK) already meet all the criteria set forth by the Policy Simulation Library. -Keep an eye out for lots more excellent tax and benefit policy analysis tools from PolicyEngine in 2023 and beyond!

- -

PSL Foundation has partnered with QuantEcon, acting as a fiscal sponsor for their projects that provide training and training materials for economic modeling and econometrics using open source tools. -QuantEcon ran a massive open online class in India that had more than 1000 registrants in summer of 2022. -They also ran an online course for over 100 students from universities in Africa in 2022. -Further, with the funding received through their partnership with PSL Foundation, QuantEcon will continue these efforts in 2023 with a planned, in-person course in India.

- -

PSL hosted its first in-person workshop in March. -The workshop focused on open source tools for tax policy analysis including Tax-Calculator, Cost-of-Capital-Calculator, OG-USA, and PolicyEngine US. -The PSL event was, appropriately enough, hosted at the MLK Memorial Library in DC. -We filled the space with 30 attendees from think tanks, consultancies, and government agencies. -The workshop was a great success and we look forward to hosting more in-person workshops in the future.

- -

PSL’s bi-weekly Demo Day series continued throughout 2022, with 13 Demo Days this year. -In these, we saw a wide array of presenters from institutions such as the Federal Reserve Bank of Atlanta, PolicyEngine, Tax Foundation, National Center for Children in Poverty, IZA Institute of Labor Economics, Channels, the University of South Carolina, the Center for Growth and Opportunity, and the American Enterprise Institute. -You can go back and rewatch any of these presentations on YouTube.

- -

It’s been a fantastic year and we expect even more from the community and PSL Foundation in 2023. -PSL community members continue to interact several times each week on our public calls. -Check out the events page and join us in the New Year!

- -

From all of us at the PSL, best wishes for a happy and healthy New Year!

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/2023-year-in-review.html b/2023-year-in-review.html deleted file mode 100755 index 9265732..0000000 --- a/2023-year-in-review.html +++ /dev/null @@ -1,96 +0,0 @@ -
- -
-

2023: A year in review

-

Highlights from the Policy Simulation Library in 2023.

- - - -

- - psl -   - - psl-foundation - - -

- - -
- -
-
    -
-

- -
- -

While there haven’t been any blog posts in 2023 :wink:, it has been a productive year for the Policy Simulation Library (PSL) community and PSL Foundation!

- -

We’ve continued to serve our mission through education and outreach efforts. -We hosted 13 Demo Days in 2023, including presentations from individuals at the Congressional Budget Office, Allegheny County, NOAA, Johns Hopkins, QuantEcon, the City of New York, and other institutions. -Archived videos of the Demo Days are available on our YouTube Channel.

- -

In addition, we hosted an in person workshop at the National Tax Association’s annual conference in November. -This event featured the PolicyEngine-US project and was lead by Max Ghenis and Nikhil Woodruff, co-founders of PolicyEngine. -Attendees included individuals from the local area (Denver) and conference attendees, who represented academia, government, and think tanks. -Max and Nikhil provided an overview of PolicyEngine and then walked attendees through a hands-on exercise using the PolicyEngine US tool, having them write code to generate custom plots in a Google Colab notebook. -It was a lot of fun – and the pizza was decent too!

- -

Speaking of PolicyEngine, this fiscally-sponsored project of PSL Foundation had a banner year in terms of fundraising and development. -The group received several grants in 2023 and closed out the year with a large grant from Arnold Ventures. -They also wrote an NSF grant proposal which they are waiting to hear back from. -The group added an experienced nonprofit executive, Leigh Gibson, to their team. -Leigh provides support with fundraising and operations, and she’s been instrumental in these efforts. -In terms of software development, the PolicyEngine team has been able to greatly leverage volunteers (more than 60!) with Pavel Makarchuk coming on as Policy Modeling Manager to help coordinate these efforts. -With their community, PolicyEngine has codified numerous US state tax and benefit policies and has developed a robust method to create synthetic data for use in policy analysis. -Be on the lookout for a lot more from them in 2024.

- -

QuantEcon, another fiscally sponsored project, has also made tremendous contributions to open source economics in 2023. -Most importantly, they ran a very successful summer school in West Africa. -In addition, they have continued make key contributions to software tools useful for teaching and training economics tools. -These include Jupyteach, which Spencer Lyon shared in our Demo Day series. -With their online materials, textbooks, and workshops around the world, QuantEcon is shaping how researchers and policy analysts employ economic tools to solve real-world problems.

- -

PSL Foundation added a third fiscally sponsored project, Policy Change Index (PCI) in 2023. -PCI was founded by Weifeng Zhong, a Senior Research Fellow at the Mercatus Center at George Mason University, and uses natural language processing and machine learning to predict changes in policy among autocratic regimes. -PCI has had a very successful start with PCI-China, predicting policy changes in China, and PCI-Outbreak, predicting the extent of true COVID-19 case counts in China during the pandemic. -Currently, they are extending their work to include predictive indices for Russia, North Korea, and Iran. -PSL-F is excited for the opportunity to help support this important work.

- -

Other cataloged projects have continued to be widely used in 2023. -To note a few of these use cases, the United Nations has partnered with Richard Evans and Jason DeBacker, maintainers of OG-Core, to help bring the modeling platform to developing countries they are assisting. -Tax Foundation’s Capital Cost Recovery model has been updated to 2023 and used in their widely cited 2023 Tax Competitiveness Index. -And the Tax-Calculator and TaxData projects both continue to used by think tanks and researchers.

- -

As 2023 comes to a close, we look forward to 2024. -We’ll be launching a new PSLmodels.org website soon. -And there’ll be many more events – we hope you join in.

- -

From all of us at the PSL, best wishes for a happy and healthy New Year!

- -

Resources:

- - -
- -
\ No newline at end of file diff --git a/404.html b/404.html deleted file mode 100755 index 252db1f..0000000 --- a/404.html +++ /dev/null @@ -1,19 +0,0 @@ - - -
-

404

-

Page not found :(

-

The requested page could not be found.

-
diff --git a/CNAME b/CNAME deleted file mode 100755 index e134c41..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -blog.pslmodels.org diff --git a/DC-workshop.html b/DC-workshop.html deleted file mode 100755 index f6f0f09..0000000 --- a/DC-workshop.html +++ /dev/null @@ -1,66 +0,0 @@ -
- -
-

Policy Simulation Library DC Workshop: Open source tools for analyzing tax policy

Washington, DC open-source modeling workshop, March 25, 2022, 8:30am-1:00pm, Martin Luther King, Jr. Memorial Library.

- - -

- - PSL -   - - PSL-Foundation -   - - Workshop - - -

- - -
- -
-
    -

- -
- -

The Policy Simulation Library is hosting a workshop in Washington, DC on March 25 on open source tools for the analysis of tax policy. Participants will learn how to use open source models from the Library for revenue estimation, distributional analysis, and to simulate economic impacts of tax policy. The workshop is intended to be a hands-on experience and participants can expect to leave with the required software, documentation, and knowledge to continue using these tools. All models in the workshop are written in the Python programming language–familiarity with the language is helpful, but not required.

- -

Workshop Schedule:

- - -

The workshop will be held at the Martin Luther King Jr. Memorial Library in Washington, DC. Participants are expected to arrive by 8:30am and the program will conclude at 1:00pm. Breakfast and lunch will be provided. PSL Foundation is sponsoring the event and there is no cost to attend. Attendance is limited to 30 in order to make this a dynamic and interactive workshop.

- -

To register, please use this Google Form. Registration will close March 11. Participants will be expected to bring a laptop to the workshop where they can interact with the software in real time with the instructors. Registered participants will receive an email before the event with a list of software to install before the workshop.

- -

Please feel free to share this invitation with your colleagues.

- -

Questions about the workshop can be directed to Jason DeBacker at jason.debacker@gmail.com.

- -
-
\ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 5c1d0d4..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 onwards, fast.ai, 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. diff --git a/PSL/PSL-Foundation/Workshop/2022/03/03/DC-workshop/index.html b/PSL/PSL-Foundation/Workshop/2022/03/03/DC-workshop/index.html new file mode 100644 index 0000000..2ccdd0e --- /dev/null +++ b/PSL/PSL-Foundation/Workshop/2022/03/03/DC-workshop/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/README.md b/README.md deleted file mode 100755 index c51bef5..0000000 --- a/README.md +++ /dev/null @@ -1,58 +0,0 @@ -[//]: # (This template replaces README.md when someone creates a new repo with the fastpages template.) - -![](https://github.com/PSLmodels/blog/workflows/CI/badge.svg) -![](https://github.com/PSLmodels/blog/workflows/GH-Pages%20Status/badge.svg) -[![](https://img.shields.io/static/v1?label=fastai&message=fastpages&color=57aeac&labelColor=black&style=flat&logo=data:image/png;base64,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)](https://github.com/fastai/fastpages) - - -# [PSL blog](https://blog.pslmodels.org) - - -_powered by [fastpages](https://github.com/fastai/fastpages)_ - - -## How to contribute - -The `PSL blog` accepts posts as Jupyter notebooks or Markdown documents: - -* To submit a Jupyter post, create a PR with your `YYYY-MM-DD-post-title.ipynb` file in the `_notebooks` folder. -* To submit a Markdown post, create a PR with your `YYYY-MM-DD-post-title.md` file in the `_posts` folder. - -In both cases, please take the following steps: -1. Follow the Fastpages guides on writing blogs with [Jupyter](https://github.com/fastai/fastpages#writing-blog-posts-with-jupyter) and [Markdown](https://github.com/fastai/fastpages#writing-blog-posts-with-markdown), and include the required "front matter" with metadata. -2. [Preview the blog locally](_fastpages_docs/DEVELOPMENT.md) using the `make server` command from the root directory after drafting your post. -You'll need [Docker](https://docs.docker.com/get-docker/) installed on your machine to run the command. -3. Include a screenshot of the blog post in your PR. - -Please use the [nbdev & blogging channel](https://forums.fast.ai/c/fastai-users/nbdev/48) in the fastai forums for any questions or feature requests. - -## Technical guide - -* Make URLs concise but descriptive of the post. -* Use lowercase and dashes for all tags. -* Make each new sentence its own line (for easier code review). - -## Post formats - -Please follow the below guidance for each post type. - -### Demo Days recaps - -* Tag the post as `demo-days`. -* Title the post `Demo Day: {title}`. -* Show the video at the top of the post. -* Describe the motivation for the demo and what you demonstrated. -* Link materials shown in the demo, including code and/or Compute Studio simulations. - -See [PR #10](https://github.com/PSLmodels/blog/pull/10) as an example. - -## Style guide - -* Focus on PSL software and models; reserve policy analysis for think tank and op-ed reports. -* Write with a neutral tone. -* Favor active over passive voice. -* Capitalize post titles. -* Favor `Mmm DD`, `Mmm DD, YYYY`, or `YYYY-MM-DD` date formats over `MM/DD` and `MM/DD/YYYY`, which can be misinterpreted outside the US. -* Avoid "click here" links; for better [accessibility](https://webaccess.berkeley.edu/resources/tips/web-accessibility#accessible-links) and [SEO](https://www.lamar.edu/web-communication/resources/avoid-using-click-here.html), provide descriptive links. - -*Questions? Contact Max Ghenis (mghenis@gmail.com).* diff --git a/about.html b/about.html new file mode 100644 index 0000000..a91c295 --- /dev/null +++ b/about.html @@ -0,0 +1,555 @@ + + + + + + + + + +Policy Simulation Library Blog - PSL Blog + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + +
+ +
+
+

PSL Blog

+
+
+
+
+

Updates from the Policy Simulation Library.

+ + +
+
+ +
+ + +
+ + + + + \ No newline at end of file diff --git a/about/index.html b/about/index.html deleted file mode 100755 index 6f6195a..0000000 --- a/about/index.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -About | PSL blog - - - - - - - - - - - - - - - - - - -
-
-
- -
-

About

-
- -
-

The Policy Simulation Library (PSL) is a collection of models and other software for public-policy decisionmaking. -PSL is developed by independent projects that meet standards for transparency and accessibility. -The PSL community encourages collaborative contribution and makes the tools it develops accessible to a diverse group of users.1

- -
-
    -
  1. -

    This website is powered by fastpages, a blogging platform that natively supports Jupyter notebooks in addition to other formats. 

    -
  2. -
-
- -
- -
- -
-
- - diff --git a/announcements/2020/11/06/introducing-psl-blog/index.html b/announcements/2020/11/06/introducing-psl-blog/index.html new file mode 100644 index 0000000..145d389 --- /dev/null +++ b/announcements/2020/11/06/introducing-psl-blog/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/assets/badges/binder.svg b/assets/badges/binder.svg deleted file mode 100755 index 327f6b6..0000000 --- a/assets/badges/binder.svg +++ /dev/null @@ -1 +0,0 @@ - launchlaunchbinderbinder \ No newline at end of file diff --git a/assets/badges/colab.svg b/assets/badges/colab.svg deleted file mode 100755 index c08066e..0000000 --- a/assets/badges/colab.svg +++ /dev/null @@ -1 +0,0 @@ - Open in ColabOpen in Colab diff --git a/assets/badges/github.svg b/assets/badges/github.svg deleted file mode 100755 index e02d8ed..0000000 --- a/assets/badges/github.svg +++ /dev/null @@ -1 +0,0 @@ - View On GitHubView On GitHub \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100755 index 33b965f..0000000 --- a/assets/css/style.css +++ /dev/null @@ -1,479 +0,0 @@ -.highlight .c { color: #998; font-style: italic; } - -.highlight .err { color: #a61717; background-color: #e3d2d2; } - -.highlight .k { font-weight: bold; } - -.highlight .o { font-weight: bold; } - -.highlight .cm { color: #998; font-style: italic; } - -.highlight .cp { color: #999; font-weight: bold; } - -.highlight .c1 { color: #998; font-style: italic; } - -.highlight .cs { color: #999; font-weight: bold; font-style: italic; } - -.highlight .gd { color: #000; background-color: #fdd; } - -.highlight .gd .x { color: #000; background-color: #faa; } - -.highlight .ge { font-style: italic; } - -.highlight .gr { color: #a00; } - -.highlight .gh { color: #999; } - -.highlight .gi { color: #000; background-color: #dfd; } - -.highlight .gi .x { color: #000; background-color: #afa; } - -.highlight .go { color: #888; } - -.highlight .gp { color: #555; } - -.highlight .gs { font-weight: bold; } - -.highlight .gu { color: #aaa; } - -.highlight .gt { color: #a00; } - -.highlight .kc { font-weight: bold; } - -.highlight .kd { font-weight: bold; } - -.highlight .kp { font-weight: bold; } - -.highlight .kr { font-weight: bold; } - -.highlight .kt { color: #458; font-weight: bold; } - -.highlight .m { color: #099; } - -.highlight .s { color: #d14; } - -.highlight .na { color: #008080; } - -.highlight .nb { color: #0086B3; } - -.highlight .nc { color: #458; font-weight: bold; } - -.highlight .no { color: #008080; } - -.highlight .ni { color: #800080; } - -.highlight .ne { color: #900; font-weight: bold; } - -.highlight .nf { color: #900; font-weight: bold; } - -.highlight .nn { color: #555; } - -.highlight .nt { color: #000080; } - -.highlight .nv { color: #008080; } - -.highlight .ow { font-weight: bold; } - -.highlight .w { color: #bbb; } - -.highlight .mf { color: #099; } - -.highlight .mh { color: #099; } - -.highlight .mi { color: #099; } - -.highlight .mo { color: #099; } - -.highlight .sb { color: #d14; } - -.highlight .sc { color: #d14; } - -.highlight .sd { color: #d14; } - -.highlight .s2 { color: #d14; } - -.highlight .se { color: #d14; } - -.highlight .sh { color: #d14; } - -.highlight .si { color: #d14; } - -.highlight .sx { color: #d14; } - -.highlight .sr { color: #009926; } - -.highlight .s1 { color: #d14; } - -.highlight .ss { color: #990073; } - -.highlight .bp { color: #999; } - -.highlight .vc { color: #008080; } - -.highlight .vg { color: #008080; } - -.highlight .vi { color: #008080; } - -.highlight .il { color: #099; } - -html { font-size: 16px; } - -/** Reset some basic elements */ -body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; } - -/** Basic styling */ -body { font: 400 16px/1.5 -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif; color: #111111; background-color: #fdfdfd; -webkit-text-size-adjust: 100%; -webkit-font-feature-settings: "kern" 1; -moz-font-feature-settings: "kern" 1; -o-font-feature-settings: "kern" 1; font-feature-settings: "kern" 1; font-kerning: normal; display: flex; min-height: 100vh; flex-direction: column; overflow-wrap: break-word; } - -/** Set `margin-bottom` to maintain vertical rhythm */ -h1, h2, h3, h4, h5, h6, p, blockquote, pre, ul, ol, dl, figure, .highlight { margin-bottom: 15px; } - -hr { margin-top: 30px; margin-bottom: 30px; } - -/** `main` element */ -main { display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ } - -/** Images */ -img { max-width: 100%; vertical-align: middle; } - -/** Figures */ -figure > img { display: block; } - -figcaption { font-size: 14px; } - -/** Lists */ -ul, ol { margin-left: 30px; } - -li > ul, li > ol { margin-bottom: 0; } - -/** Headings */ -h1, h2, h3, h4, h5, h6 { font-weight: 400; } - -/** Links */ -a { color: #2a7ae2; text-decoration: none; } - -a:visited { color: #1756a9; } - -a:hover { color: #111111; text-decoration: underline; } - -.social-media-list a:hover, .pagination a:hover { text-decoration: none; } - -.social-media-list a:hover .username, .pagination a:hover .username { text-decoration: underline; } - -/** Blockquotes */ -blockquote { color: #828282; border-left: 4px solid #e8e8e8; padding-left: 15px; font-size: 1.125rem; font-style: italic; } - -blockquote > :last-child { margin-bottom: 0; } - -blockquote i, blockquote em { font-style: normal; } - -/** Code formatting */ -pre, code { font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; font-size: 0.9375em; border: 1px solid #e8e8e8; border-radius: 3px; background-color: #eeeeff; } - -code { padding: 1px 5px; } - -pre { padding: 8px 12px; overflow-x: auto; } - -pre > code { border: 0; padding-right: 0; padding-left: 0; } - -.highlight { border-radius: 3px; background: #eeeeff; } - -.highlighter-rouge .highlight { background: #eeeeff; } - -/** Wrapper */ -.wrapper { max-width: calc(1000px - (30px)); margin-right: auto; margin-left: auto; padding-right: 15px; padding-left: 15px; } - -@media screen and (min-width: 1200px) { .wrapper { max-width: calc(1000px - (30px * 2)); padding-right: 30px; padding-left: 30px; } } - -/** Clearfix */ -.wrapper:after { content: ""; display: table; clear: both; } - -/** Icons */ -.orange { color: #f66a0a; } - -.grey { color: #828282; } - -.svg-icon { width: 1.25em; height: 1.25em; display: inline-block; fill: currentColor; vertical-align: text-bottom; } - -/** Tables */ -table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse; border: 1px solid #e8e8e8; } - -table tr:nth-child(even) { background-color: #f7f7f7; } - -table th, table td { padding: 10px 15px; } - -table th { background-color: #f0f0f0; border: 1px solid #e0e0e0; } - -table td { border: 1px solid #e8e8e8; } - -@media screen and (max-width: 1000px) { table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; } } - -/** Site header */ -.site-header { border-top: 5px solid #424242; border-bottom: 1px solid #e8e8e8; min-height: 55.95px; line-height: 54px; position: relative; } - -.site-title { font-size: 1.625rem; font-weight: 300; letter-spacing: -1px; margin-bottom: 0; float: left; } - -@media screen and (max-width: 800px) { .site-title { padding-right: 45px; } } - -.site-title, .site-title:visited { color: #424242; } - -.site-nav { position: absolute; top: 9px; right: 15px; background-color: #fdfdfd; border: 1px solid #e8e8e8; border-radius: 5px; text-align: right; } - -.site-nav .nav-trigger { display: none; } - -.site-nav .menu-icon { float: right; width: 36px; height: 26px; line-height: 0; padding-top: 10px; text-align: center; } - -.site-nav .menu-icon > svg path { fill: #424242; } - -.site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; z-index: 2; cursor: pointer; } - -.site-nav input ~ .trigger { clear: both; display: none; } - -.site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; } - -.site-nav .page-link { color: #111111; line-height: 1.5; display: block; padding: 5px 10px; margin-left: 20px; } - -.site-nav .page-link:not(:last-child) { margin-right: 0; } - -@media screen and (min-width: 1000px) { .site-nav { position: static; float: right; border: none; background-color: inherit; } .site-nav label[for="nav-trigger"] { display: none; } .site-nav .menu-icon { display: none; } .site-nav input ~ .trigger { display: block; } .site-nav .page-link { display: inline; padding: 0; margin-left: auto; } .site-nav .page-link:not(:last-child) { margin-right: 20px; } } - -/** Site footer */ -.site-footer { border-top: 1px solid #e8e8e8; padding: 30px 0; } - -.footer-heading { font-size: 1.125rem; margin-bottom: 15px; } - -.feed-subscribe .svg-icon { padding: 5px 5px 2px 0; } - -.contact-list, .social-media-list, .pagination { list-style: none; margin-left: 0; } - -.footer-col-wrapper, .social-links { font-size: 0.9375rem; color: #828282; } - -.footer-col { margin-bottom: 15px; } - -.footer-col-1, .footer-col-2 { width: calc(50% - (30px / 2)); } - -.footer-col-3 { width: calc(100% - (30px / 2)); } - -@media screen and (min-width: 1200px) { .footer-col-1 { width: calc(35% - (30px / 2)); } .footer-col-2 { width: calc(20% - (30px / 2)); } .footer-col-3 { width: calc(45% - (30px / 2)); } } - -@media screen and (min-width: 1000px) { .footer-col-wrapper { display: flex; } .footer-col { width: calc(100% - (30px / 2)); padding: 0 15px; } .footer-col:first-child { padding-right: 15px; padding-left: 0; } .footer-col:last-child { padding-right: 0; padding-left: 15px; } } - -/** Page content */ -.page-content { padding: 30px 0; flex: 1 0 auto; } - -.page-heading { font-size: 2rem; } - -.post-list-heading { font-size: 1.75rem; } - -.post-list { margin-left: 0; list-style: none; } - -.post-list > li { margin-bottom: 30px; } - -.post-meta { font-size: 14px; color: #828282; } - -.post-link { display: block; font-size: 1.5rem; } - -/** Posts */ -.post-header { margin-bottom: 30px; } - -.post-title, .post-content h1 { font-size: 2.625rem; letter-spacing: -1px; line-height: 1.15; } - -@media screen and (min-width: 1200px) { .post-title, .post-content h1 { font-size: 2.625rem; } } - -.post-content { margin-bottom: 30px; } - -.post-content h1, .post-content h2, .post-content h3, .post-content h4, .post-content h5, .post-content h6 { margin-top: 30px; } - -.post-content h2 { font-size: 1.75rem; } - -@media screen and (min-width: 1200px) { .post-content h2 { font-size: 2rem; } } - -.post-content h3 { font-size: 1.375rem; } - -@media screen and (min-width: 1200px) { .post-content h3 { font-size: 1.625rem; } } - -.post-content h4 { font-size: 1.25rem; } - -.post-content h5 { font-size: 1.125rem; } - -.post-content h6 { font-size: 1.0625rem; } - -.social-media-list, .pagination { display: table; margin: 0 auto; } - -.social-media-list li, .pagination li { float: left; margin: 5px 10px 5px 0; } - -.social-media-list li:last-of-type, .pagination li:last-of-type { margin-right: 0; } - -.social-media-list li a, .pagination li a { display: block; padding: 10px 12px; border: 1px solid #e8e8e8; } - -.social-media-list li a:hover, .pagination li a:hover { border-color: #dbdbdb; } - -/** Pagination navbar */ -.pagination { margin-bottom: 30px; } - -.pagination li a, .pagination li div { min-width: 41px; text-align: center; box-sizing: border-box; } - -.pagination li div { display: block; padding: 7.5px; border: 1px solid transparent; } - -.pagination li div.pager-edge { color: #e8e8e8; border: 1px dashed; } - -/** Grid helpers */ -@media screen and (min-width: 1200px) { .one-half { width: calc(50% - (30px / 2)); } } - -/*-----------------------------------*/ -/*--- IMPORT STYLES FOR FASTPAGES ---*/ -.post img { display: block; vertical-align: top; margin-left: auto; margin-right: auto; } - -img.emoji { display: inline !important; vertical-align: baseline !important; } - -.post figcaption { text-align: center; font-size: .8rem; font-style: italic; color: light-grey; } - -.page-content { -webkit-font-smoothing: antialiased !important; text-rendering: optimizeLegibility !important; font-family: "Segoe UI", SegoeUI, Roboto, "Segoe WP", "Helvetica Neue", "Helvetica", "Tahoma", "Arial", sans-serif !important; } - -.post-content p, .post-content li { font-size: 20px; color: #515151; } - -.post-link { font-weight: normal; } - -h1 { margin-top: 2.5rem !important; } - -h2 { margin-top: 2rem !important; } - -h3, h4 { margin-top: 1.5rem !important; } - -p { margin-top: 1rem !important; margin-bottom: 1rem !important; } - -h1, h2, h3, h4 { font-weight: normal !important; margin-bottom: 0.5rem !important; } - -h1 code, h2 code, h3 code, h4 code { font-size: 100%; } - -pre { margin-bottom: 1.5rem !important; } - -.post-title { margin-top: .5rem !important; } - -li h3, li h4 { margin-top: .05rem !important; margin-bottom: .05rem !important; } - -li .post-meta-description { color: #585858; font-size: 15px; margin-top: .05rem !important; margin-bottom: .05rem !important; } - -details.description[open] summary::after { content: attr(data-open); } - -details.description:not([open]) summary::after { content: attr(data-close); } - -.notebook-badge-image { border: 0 !important; } - -.footnotes { font-size: 12px !important; } - -.footnotes p, .footnotes li { font-size: 12px !important; } - -.social-media-list .svg-icon, .pagination .svg-icon { width: 25px !important; height: 23px !important; } - -.anchor-link { opacity: 0; padding-left: 0.375em; \-webkit-text-stroke: 1.75px white; \-webkit-transition: opacity 0.2s ease-in-out 0.1s; \-moz-transition: opacity 0.2s ease-in-out 0.1s; \-ms-transition: opacity 0.2s ease-in-out 0.1s; } - -h1:hover .anchor-link, h2:hover .anchor-link, h3:hover .anchor-link, h4:hover .anchor-link, h5:hover .anchor-link, h6:hover .anchor-link { opacity: 1; } - -.category-tags { margin-top: .25rem !important; margin-bottom: .25rem !important; font-size: 105%; } - -.post-meta-title, .post-meta { margin-top: .25em !important; margin-bottom: .25em !important; font-size: 105%; } - -.page-description { margin-top: .5rem !important; margin-bottom: .5rem !important; color: #585858; font-size: 115%; } - -.category-tags-icon { font-size: 75% !important; padding-left: 0.375em; opacity: 35%; } - -.category-tags-link { color: #bb8181 !important; font-size: 13px !important; } - -.js-search-results { padding-top: 0.2rem; } - -.search-results-list-item { padding-bottom: 1rem; } - -.search-results-list-item .search-result-title { font-size: 16px; color: #d9230f; } - -.search-result-rel-url { color: silver; } - -.search-results-list-item a { display: block; color: #777; } - -.search-results-list-item a:hover, .search-results-list-item a:focus { text-decoration: none; } - -.search-results-list-item a:hover .search-result-title { text-decoration: underline; } - -.search-result-rel-date { color: #6d788a; font-size: 14px; } - -.search-result-preview { color: #777; font-size: 16px; margin-top: .02rem !important; margin-bottom: .02rem !important; } - -.search-result-highlight { color: #2e0137; font-weight: bold; } - -table { white-space: normal; max-width: 100%; font-size: 100%; border: none; } - -table th { text-align: center !important; } - -::-webkit-scrollbar { width: 14px; height: 18px; } - -::-webkit-scrollbar-thumb { height: 6px; border: 4px solid rgba(0, 0, 0, 0); background-clip: padding-box; -webkit-border-radius: 7px; background-color: #9D9D9D; -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05); } - -::-webkit-scrollbar-button { width: 0; height: 0; display: none; } - -::-webkit-scrollbar-corner { background-color: transparent; } - -.output_text.output_execute_result pre { white-space: pre-wrap; } - -.svg-icon.orange { width: 30px; height: 23px; } - -.code_cell { margin: 1.5rem 0px !important; } - -pre code { font-size: 15px !important; } - -/*-----------------------------------*/ -/*----- ADD YOUR STYLES BELOW -------*/ -.language-python + .language-plaintext { border-left: 1px solid grey; margin-left: 1rem !important; } - -[class^="language-"]:not(.language-plaintext) pre, [class^="language-"]:not(.language-plaintext) code { background-color: #323443 !important; color: #f8f8f2; } - -.language-python + .language-plaintext code { background-color: white !important; } - -.language-python + .language-plaintext pre { background-color: white !important; } - -.input_area pre, .input_area div { margin-bottom: 1.0rem !important; margin-top: 1.5rem !important; padding-bottom: 0 !important; padding-top: 0 !important; background: #323443 !important; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-family: Menlo, Monaco, Consolas, "Lucida Console", Roboto, Ubuntu, monospace; border-radius: 5px; font-size: 105%; } - -.output_area pre, .output_area div { margin-bottom: 1rem !important; margin-top: 0rem !important; padding-bottom: 0 !important; padding-top: 0 !important; } - -.input_area pre { border-left: 1px solid lightcoral; } - -.output_area pre { border-left: 1px solid grey; margin-left: 1rem !important; font-size: 16px; } - -.code_cell table { width: auto; } - -/* Dracula Theme v1.2.5 https://github.com/zenorocha/dracula-theme Copyright 2016, All rights reserved Code licensed under the MIT license */ -.highlight { background: #323443 !important; color: #f8f8f2 !important; } - -.highlight pre, .highlight code { background: #323443; color: #f8f8f2; font-size: 110%; } - -.highlight .hll, .highlight .s, .highlight .sa, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .si, .highlight .sx, .highlight .sr, .highlight .s1, .highlight .ss { color: #e7997a; } - -.highlight .go { color: #44475a; } - -.highlight .err, .highlight .g, .highlight .l, .highlight .n, .highlight .x, .highlight .ge, .highlight .gr, .highlight .gh, .highlight .gi, .highlight .gp, .highlight .gs, .highlight .gu, .highlight .gt, .highlight .ld, .highlight .no, .highlight .nd, .highlight .pi, .highlight .ni, .highlight .ne, .highlight .nn, .highlight .nx, .highlight .py, .highlight .w, .highlight .bp { color: #f8f8f2; background-color: #323443 !important; } - -.highlight .p { font-weight: bold; color: #66d9ef; } - -.highlight .ge { text-decoration: underline; } - -.highlight .bp { font-style: italic; } - -.highlight .c, .highlight .ch, .highlight .cm, .highlight .cpf, .highlight .cs { color: #6272a4; } - -.highlight .c1 { color: gray; } - -.highlight .kd, .highlight .kt, .highlight .nb, .highlight .nl, .highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm { color: #8be9fd; } - -.highlight .kd, .highlight .nb, .highlight .nl, .highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm { font-style: italic; } - -.highlight .fm, .highlight .na, .highlight .nc, .highlight .nf { color: #ace591; } - -.highlight .k, .highlight .o, .highlight .cp, .highlight .kc, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .nt, .highlight .ow { color: #ff79c6; } - -.highlight .kc { color: #ace591; } - -.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .mo, .highlight .il { color: #bd93f9; } - -.highlight .gd { color: #ff5555; } - -p code { font-size: 19px; } - -/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/assets/css/style.css.map b/assets/css/style.css.map deleted file mode 100755 index 5a76d7b..0000000 --- a/assets/css/style.css.map +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 3, - "file": "style.css", - "sources": [ - "style.scss", - "../../tmp/jekyll-remote-theme-20231229-1-7f1xdb/_sass/minima/skins/classic.scss", - "../../tmp/jekyll-remote-theme-20231229-1-7f1xdb/_sass/minima/skins/auto.scss", - "../../tmp/jekyll-remote-theme-20231229-1-7f1xdb/_sass/minima/initialize.scss", - "_sass/minima/custom-variables.scss", - "../../tmp/jekyll-remote-theme-20231229-1-7f1xdb/_sass/minima/_base.scss", - "../../tmp/jekyll-remote-theme-20231229-1-7f1xdb/_sass/minima/_layout.scss", - "_sass/minima/custom-styles.scss", - "_sass/minima/fastpages-styles.scss", - "_sass/minima/fastpages-dracula-highlight.scss" - ], - "sourcesContent": [ - "@import\n \"minima/skins/classic\",\n \"minima/initialize\";\n", - "@charset \"utf-8\";\n\n$color-scheme-auto: false;\n$color-scheme-dark: false;\n@import \"minima/skins/auto\";\n", - "@charset \"utf-8\";\n\n// Default color scheme settings\n// These are overridden in classic.css and dark.scss\n\n$color-scheme-auto: true !default;\n$color-scheme-dark: false !default;\n\n\n// Light mode\n// ----------\n\n$lm-brand-color: #828282 !default;\n$lm-brand-color-light: lighten($lm-brand-color, 40%) !default;\n$lm-brand-color-dark: darken($lm-brand-color, 25%) !default;\n\n$lm-site-title-color: $lm-brand-color-dark !default;\n\n$lm-text-color: #111111 !default;\n$lm-background-color: #fdfdfd !default;\n$lm-code-background-color: #eeeeff !default;\n\n$lm-link-base-color: #2a7ae2 !default;\n$lm-link-visited-color: darken($lm-link-base-color, 15%) !default;\n$lm-link-hover-color: $lm-text-color !default;\n\n$lm-border-color-01: $lm-brand-color-light !default;\n$lm-border-color-02: lighten($lm-brand-color, 35%) !default;\n$lm-border-color-03: $lm-brand-color-dark !default;\n\n$lm-table-text-color: lighten($lm-text-color, 18%) !default;\n$lm-table-zebra-color: lighten($lm-brand-color, 46%) !default;\n$lm-table-header-bg-color: lighten($lm-brand-color, 43%) !default;\n$lm-table-header-border: lighten($lm-brand-color, 37%) !default;\n$lm-table-border-color: $lm-border-color-01 !default;\n\n\n// Syntax highlighting styles should be adjusted appropriately for every \"skin\"\n// ----------------------------------------------------------------------------\n\n@mixin lm-highlight {\n .highlight {\n .c { color: #998; font-style: italic } // Comment\n .err { color: #a61717; background-color: #e3d2d2 } // Error\n .k { font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #998; font-style: italic } // Comment.Multiline\n .cp { color: #999; font-weight: bold } // Comment.Preproc\n .c1 { color: #998; font-style: italic } // Comment.Single\n .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #a00 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #a00 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #458; font-weight: bold } // Keyword.Type\n .m { color: #099 } // Literal.Number\n .s { color: #d14 } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #0086B3 } // Name.Builtin\n .nc { color: #458; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #900; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #000080 } // Name.Tag\n .nv { color: #008080 } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #bbb } // Text.Whitespace\n .mf { color: #099 } // Literal.Number.Float\n .mh { color: #099 } // Literal.Number.Hex\n .mi { color: #099 } // Literal.Number.Integer\n .mo { color: #099 } // Literal.Number.Oct\n .sb { color: #d14 } // Literal.String.Backtick\n .sc { color: #d14 } // Literal.String.Char\n .sd { color: #d14 } // Literal.String.Doc\n .s2 { color: #d14 } // Literal.String.Double\n .se { color: #d14 } // Literal.String.Escape\n .sh { color: #d14 } // Literal.String.Heredoc\n .si { color: #d14 } // Literal.String.Interpol\n .sx { color: #d14 } // Literal.String.Other\n .sr { color: #009926 } // Literal.String.Regex\n .s1 { color: #d14 } // Literal.String.Single\n .ss { color: #990073 } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #008080 } // Name.Variable.Class\n .vg { color: #008080 } // Name.Variable.Global\n .vi { color: #008080 } // Name.Variable.Instance\n .il { color: #099 } // Literal.Number.Integer.Long\n }\n}\n\n\n// Dark mode\n// ---------\n\n$dm-brand-color: #999999 !default;\n$dm-brand-color-light: lighten($dm-brand-color, 5%) !default;\n$dm-brand-color-dark: darken($dm-brand-color, 35%) !default;\n\n$dm-site-title-color: $dm-brand-color-light !default;\n\n$dm-text-color: #bbbbbb !default;\n$dm-background-color: #181818 !default;\n$dm-code-background-color: #212121 !default;\n\n$dm-link-base-color: #79b8ff !default;\n$dm-link-visited-color: $dm-link-base-color !default;\n$dm-link-hover-color: $dm-text-color !default;\n\n$dm-border-color-01: $dm-brand-color-dark !default;\n$dm-border-color-02: $dm-brand-color-light !default;\n$dm-border-color-03: $dm-brand-color !default;\n\n$dm-table-text-color: $dm-text-color !default;\n$dm-table-zebra-color: lighten($dm-background-color, 4%) !default;\n$dm-table-header-bg-color: lighten($dm-background-color, 10%) !default;\n$dm-table-header-border: lighten($dm-background-color, 21%) !default;\n$dm-table-border-color: $dm-border-color-01 !default;\n\n\n// Syntax highlighting styles should be adjusted appropriately for every \"skin\"\n// List of tokens: https://github.com/rouge-ruby/rouge/wiki/List-of-tokens\n// Some colors come from Material Theme Darker:\n// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/settings/specific/darker-hc.ts\n// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/color-set.ts\n// ----------------------------------------------------------------------------\n\n@mixin dm-highlight {\n .highlight {\n .c { color: #545454; font-style: italic } // Comment\n .err { color: #f07178; background-color: #e3d2d2 } // Error\n .k { color: #89DDFF; font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #545454; font-style: italic } // Comment.Multiline\n .cp { color: #545454; font-weight: bold } // Comment.Preproc\n .c1 { color: #545454; font-style: italic } // Comment.Single\n .cs { color: #545454; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #f07178 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #f07178 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #FFCB6B; font-weight: bold } // Keyword.Type\n .m { color: #F78C6C } // Literal.Number\n .s { color: #C3E88D } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #EEFFFF } // Name.Builtin\n .nc { color: #FFCB6B; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #82AAFF; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #FFCB6B } // Name.Tag\n .nv { color: #EEFFFF } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #EEFFFF } // Text.Whitespace\n .mf { color: #F78C6C } // Literal.Number.Float\n .mh { color: #F78C6C } // Literal.Number.Hex\n .mi { color: #F78C6C } // Literal.Number.Integer\n .mo { color: #F78C6C } // Literal.Number.Oct\n .sb { color: #C3E88D } // Literal.String.Backtick\n .sc { color: #C3E88D } // Literal.String.Char\n .sd { color: #C3E88D } // Literal.String.Doc\n .s2 { color: #C3E88D } // Literal.String.Double\n .se { color: #EEFFFF } // Literal.String.Escape\n .sh { color: #C3E88D } // Literal.String.Heredoc\n .si { color: #C3E88D } // Literal.String.Interpol\n .sx { color: #C3E88D } // Literal.String.Other\n .sr { color: #C3E88D } // Literal.String.Regex\n .s1 { color: #C3E88D } // Literal.String.Single\n .ss { color: #C3E88D } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #FFCB6B } // Name.Variable.Class\n .vg { color: #EEFFFF } // Name.Variable.Global\n .vi { color: #EEFFFF } // Name.Variable.Instance\n .il { color: #F78C6C } // Literal.Number.Integer.Long\n }\n}\n\n\n// Mode selection\n// --------------\n\n\n// Classic skin (always light mode)\n// Assign outside of the if construct to establish global variable scope\n\n$brand-color: $lm-brand-color;\n$brand-color-light: $lm-brand-color-light;\n$brand-color-dark: $lm-brand-color-dark;\n\n$site-title-color: $lm-site-title-color;\n\n$text-color: $lm-text-color;\n$background-color: $lm-background-color;\n$code-background-color: $lm-code-background-color;\n\n$link-base-color: $lm-link-base-color;\n$link-visited-color: $lm-link-visited-color;\n$link-hover-color: $lm-link-hover-color;\n\n$border-color-01: $lm-border-color-01;\n$border-color-02: $lm-border-color-02;\n$border-color-03: $lm-border-color-03;\n\n$table-text-color: $lm-table-text-color;\n$table-zebra-color: $lm-table-zebra-color;\n$table-header-bg-color: $lm-table-header-bg-color;\n$table-header-border: $lm-table-header-border;\n$table-border-color: $lm-table-border-color;\n\n\n@if $color-scheme-auto {\n\n // Auto mode\n\n :root {\n --minima-brand-color: #{$lm-brand-color};\n --minima-brand-color-light: #{$lm-brand-color-light};\n --minima-brand-color-dark: #{$lm-brand-color-dark};\n\n --minima-site-title-color: #{$lm-site-title-color};\n\n --minima-text-color: #{$lm-text-color};\n --minima-background-color: #{$lm-background-color};\n --minima-code-background-color: #{$lm-code-background-color};\n\n --minima-link-base-color: #{$lm-link-base-color};\n --minima-link-visited-color: #{$lm-link-visited-color};\n --minima-link-hover-color: #{$lm-link-hover-color};\n\n --minima-border-color-01: #{$lm-border-color-01};\n --minima-border-color-02: #{$lm-border-color-02};\n --minima-border-color-03: #{$lm-border-color-03};\n\n --minima-table-text-color: #{$lm-table-text-color};\n --minima-table-zebra-color: #{$lm-table-zebra-color};\n --minima-table-header-bg-color: #{$lm-table-header-bg-color};\n --minima-table-header-border: #{$lm-table-header-border};\n --minima-table-border-color: #{$lm-table-border-color};\n }\n\n @include lm-highlight;\n\n @media (prefers-color-scheme: dark) {\n :root {\n --minima-brand-color: #{$dm-brand-color};\n --minima-brand-color-light: #{$dm-brand-color-light};\n --minima-brand-color-dark: #{$dm-brand-color-dark};\n\n --minima-site-title-color: #{$dm-site-title-color};\n\n --minima-text-color: #{$dm-text-color};\n --minima-background-color: #{$dm-background-color};\n --minima-code-background-color: #{$dm-code-background-color};\n\n --minima-link-base-color: #{$dm-link-base-color};\n --minima-link-visited-color: #{$dm-link-visited-color};\n --minima-link-hover-color: #{$dm-link-hover-color};\n\n --minima-border-color-01: #{$dm-border-color-01};\n --minima-border-color-02: #{$dm-border-color-02};\n --minima-border-color-03: #{$dm-border-color-03};\n\n --minima-table-text-color: #{$dm-table-text-color};\n --minima-table-zebra-color: #{$dm-table-zebra-color};\n --minima-table-header-bg-color: #{$dm-table-header-bg-color};\n --minima-table-header-border: #{$dm-table-header-border};\n --minima-table-border-color: #{$dm-table-border-color};\n }\n\n @include dm-highlight;\n }\n\n $brand-color: var(--minima-brand-color);\n $brand-color-light: var(--minima-brand-color-light);\n $brand-color-dark: var(--minima-brand-color-dark);\n\n $site-title-color: var(--minima-site-title-color);\n\n $text-color: var(--minima-text-color);\n $background-color: var(--minima-background-color);\n $code-background-color: var(--minima-code-background-color);\n\n $link-base-color: var(--minima-link-base-color);\n $link-visited-color: var(--minima-link-visited-color);\n $link-hover-color: var(--minima-link-hover-color);\n\n $border-color-01: var(--minima-border-color-01);\n $border-color-02: var(--minima-border-color-02);\n $border-color-03: var(--minima-border-color-03);\n\n $table-text-color: var(--minima-table-text-color);\n $table-zebra-color: var(--minima-table-zebra-color);\n $table-header-bg-color: var(--minima-table-header-bg-color);\n $table-header-border: var(--minima-table-header-border);\n $table-border-color: var(--minima-table-border-color);\n\n\n} @else if $color-scheme-dark {\n\n // Dark skin (always dark mode)\n\n $brand-color: $dm-brand-color;\n $brand-color-light: $dm-brand-color-light;\n $brand-color-dark: $dm-brand-color-dark;\n\n $site-title-color: $dm-site-title-color;\n\n $text-color: $dm-text-color;\n $background-color: $dm-background-color;\n $code-background-color: $dm-code-background-color;\n\n $link-base-color: $dm-link-base-color;\n $link-visited-color: $dm-link-visited-color;\n $link-hover-color: $dm-link-hover-color;\n\n $border-color-01: $dm-border-color-01;\n $border-color-02: $dm-border-color-02;\n $border-color-03: $dm-border-color-03;\n\n $table-text-color: $dm-table-text-color;\n $table-zebra-color: $dm-table-zebra-color;\n $table-header-bg-color: $dm-table-header-bg-color;\n $table-header-border: $dm-table-header-border;\n $table-border-color: $dm-table-border-color;\n\n @include dm-highlight;\n\n\n} @else {\n\n // Classic skin syntax highlighting\n @include lm-highlight;\n\n}\n", - "@charset \"utf-8\";\n\n// Define defaults for each variable.\n\n$base-font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Apple Color Emoji\", Roboto, Helvetica, Arial, sans-serif !default;\n$code-font-family: \"Menlo\", \"Inconsolata\", \"Consolas\", \"Roboto Mono\", \"Ubuntu Mono\", \"Liberation Mono\", \"Courier New\", monospace;\n$base-font-size: 16px !default;\n$base-font-weight: 400 !default;\n$small-font-size: $base-font-size * 0.875 !default;\n$base-line-height: 1.5 !default;\n\n$spacing-unit: 30px !default;\n\n$table-text-align: left !default;\n\n// Width of the content area\n$content-width: 800px !default;\n\n$on-palm: 600px !default;\n$on-laptop: 800px !default;\n\n$on-medium: $on-palm !default;\n$on-large: $on-laptop !default;\n\n// Use media queries like this:\n// @include media-query($on-palm) {\n// .wrapper {\n// padding-right: $spacing-unit / 2;\n// padding-left: $spacing-unit / 2;\n// }\n// }\n// Notice the following mixin uses max-width, in a deprecated, desktop-first\n// approach, whereas media queries used elsewhere now use min-width.\n@mixin media-query($device) {\n @media screen and (max-width: $device) {\n @content;\n }\n}\n\n@mixin relative-font-size($ratio) {\n font-size: #{$ratio}rem;\n}\n\n// Import pre-styling-overrides hook and style-partials.\n@import\n \"minima/custom-variables\", // Hook to override predefined variables.\n \"minima/base\", // Defines element resets.\n \"minima/layout\", // Defines structure and style based on CSS selectors.\n \"minima/custom-styles\" // Hook to override existing styles.\n;\n", - "// override defalt minima variables \n\n// width of the content area\n// can be set as \"px\" or \"%\"\n$content-width: 1000px;\n$on-palm: 800px;\n$on-laptop: 1000px;\n$on-medium: 1000px;\n$on-large: 1200px;\n", - "html {\n font-size: $base-font-size;\n}\n\n/**\n * Reset some basic elements\n */\nbody, h1, h2, h3, h4, h5, h6,\np, blockquote, pre, hr,\ndl, dd, ol, ul, figure {\n margin: 0;\n padding: 0;\n\n}\n\n\n\n/**\n * Basic styling\n */\nbody {\n font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;\n color: $text-color;\n background-color: $background-color;\n -webkit-text-size-adjust: 100%;\n -webkit-font-feature-settings: \"kern\" 1;\n -moz-font-feature-settings: \"kern\" 1;\n -o-font-feature-settings: \"kern\" 1;\n font-feature-settings: \"kern\" 1;\n font-kerning: normal;\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n overflow-wrap: break-word;\n}\n\n\n\n/**\n * Set `margin-bottom` to maintain vertical rhythm\n */\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\nul, ol, dl, figure,\n%vertical-rhythm {\n margin-bottom: $spacing-unit * .5;\n}\n\nhr {\n margin-top: $spacing-unit;\n margin-bottom: $spacing-unit;\n}\n\n/**\n * `main` element\n */\nmain {\n display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */\n}\n\n\n\n/**\n * Images\n */\nimg {\n max-width: 100%;\n vertical-align: middle;\n}\n\n\n\n/**\n * Figures\n */\nfigure > img {\n display: block;\n}\n\nfigcaption {\n font-size: $small-font-size;\n}\n\n\n\n/**\n * Lists\n */\nul, ol {\n margin-left: $spacing-unit;\n}\n\nli {\n > ul,\n > ol {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Headings\n */\nh1, h2, h3, h4, h5, h6 {\n font-weight: $base-font-weight;\n}\n\n\n\n/**\n * Links\n */\na {\n color: $link-base-color;\n text-decoration: none;\n\n &:visited {\n color: $link-visited-color;\n }\n\n &:hover {\n color: $link-hover-color;\n text-decoration: underline;\n }\n\n .social-media-list &:hover {\n text-decoration: none;\n\n .username {\n text-decoration: underline;\n }\n }\n}\n\n\n/**\n * Blockquotes\n */\nblockquote {\n color: $brand-color;\n border-left: 4px solid $border-color-01;\n padding-left: $spacing-unit * .5;\n @include relative-font-size(1.125);\n font-style: italic;\n\n > :last-child {\n margin-bottom: 0;\n }\n\n i, em {\n font-style: normal;\n }\n}\n\n\n\n/**\n * Code formatting\n */\npre,\ncode {\n font-family: $code-font-family;\n font-size: 0.9375em;\n border: 1px solid $border-color-01;\n border-radius: 3px;\n background-color: $code-background-color;\n}\n\ncode {\n padding: 1px 5px;\n}\n\npre {\n padding: 8px 12px;\n overflow-x: auto;\n\n > code {\n border: 0;\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n.highlight {\n border-radius: 3px;\n background: $code-background-color;\n @extend %vertical-rhythm;\n\n .highlighter-rouge & {\n background: $code-background-color;\n }\n}\n\n\n\n/**\n * Wrapper\n */\n.wrapper {\n max-width: calc(#{$content-width} - (#{$spacing-unit}));\n margin-right: auto;\n margin-left: auto;\n padding-right: $spacing-unit * .5;\n padding-left: $spacing-unit * .5;\n @extend %clearfix;\n\n @media screen and (min-width: $on-large) {\n max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));\n padding-right: $spacing-unit;\n padding-left: $spacing-unit;\n }\n}\n\n\n\n/**\n * Clearfix\n */\n%clearfix:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n\n\n/**\n * Icons\n */\n\n.orange {\n color: #f66a0a;\n}\n\n.grey {\n color: #828282;\n}\n\n.svg-icon {\n width: 1.25em;\n height: 1.25em;\n display: inline-block;\n fill: currentColor;\n vertical-align: text-bottom;\n}\n\n\n/**\n * Tables\n */\ntable {\n margin-bottom: $spacing-unit;\n width: 100%;\n text-align: $table-text-align;\n color: $table-text-color;\n border-collapse: collapse;\n border: 1px solid $table-border-color;\n tr {\n &:nth-child(even) {\n background-color: $table-zebra-color;\n }\n }\n th, td {\n padding: ($spacing-unit * 33.3333333333 * .01) ($spacing-unit * .5);\n }\n th {\n background-color: $table-header-bg-color;\n border: 1px solid $table-header-border;\n }\n td {\n border: 1px solid $table-border-color;\n }\n\n @include media-query($on-laptop) {\n display: block;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n}\n", - "/**\n * Site header\n */\n.site-header {\n border-top: 5px solid $border-color-03;\n border-bottom: 1px solid $border-color-01;\n min-height: $spacing-unit * 1.865;\n line-height: $base-line-height * $base-font-size * 2.25;\n\n // Positioning context for the mobile navigation icon\n position: relative;\n}\n\n.site-title {\n @include relative-font-size(1.625);\n font-weight: 300;\n letter-spacing: -1px;\n margin-bottom: 0;\n float: left;\n\n @include media-query($on-palm) {\n padding-right: 45px;\n }\n\n &,\n &:visited {\n color: $site-title-color;\n }\n}\n\n.site-nav {\n position: absolute;\n top: 9px;\n right: $spacing-unit * .5;\n background-color: $background-color;\n border: 1px solid $border-color-01;\n border-radius: 5px;\n text-align: right;\n\n .nav-trigger {\n display: none;\n }\n\n .menu-icon {\n float: right;\n width: 36px;\n height: 26px;\n line-height: 0;\n padding-top: 10px;\n text-align: center;\n\n > svg path {\n fill: $border-color-03;\n }\n }\n\n label[for=\"nav-trigger\"] {\n display: block;\n float: right;\n width: 36px;\n height: 36px;\n z-index: 2;\n cursor: pointer;\n }\n\n input ~ .trigger {\n clear: both;\n display: none;\n }\n\n input:checked ~ .trigger {\n display: block;\n padding-bottom: 5px;\n }\n\n .page-link {\n color: $text-color;\n line-height: $base-line-height;\n display: block;\n padding: 5px 10px;\n\n // Gaps between nav items, but not on the last one\n &:not(:last-child) {\n margin-right: 0;\n }\n margin-left: 20px;\n }\n\n @media screen and (min-width: $on-medium) {\n position: static;\n float: right;\n border: none;\n background-color: inherit;\n\n label[for=\"nav-trigger\"] {\n display: none;\n }\n\n .menu-icon {\n display: none;\n }\n\n input ~ .trigger {\n display: block;\n }\n\n .page-link {\n display: inline;\n padding: 0;\n\n &:not(:last-child) {\n margin-right: 20px;\n }\n margin-left: auto;\n }\n }\n}\n\n\n\n/**\n * Site footer\n */\n.site-footer {\n border-top: 1px solid $border-color-01;\n padding: $spacing-unit 0;\n}\n\n.footer-heading {\n @include relative-font-size(1.125);\n margin-bottom: $spacing-unit * .5;\n}\n\n.feed-subscribe .svg-icon {\n padding: 5px 5px 2px 0\n}\n\n.contact-list,\n.social-media-list {\n list-style: none;\n margin-left: 0;\n}\n\n.footer-col-wrapper,\n.social-links {\n @include relative-font-size(0.9375);\n color: $brand-color;\n}\n\n.footer-col {\n margin-bottom: $spacing-unit * .5;\n}\n\n.footer-col-1,\n.footer-col-2 {\n width: calc(50% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-3 {\n width: calc(100% - (#{$spacing-unit} / 2));\n}\n\n@media screen and (min-width: $on-large) {\n .footer-col-1 {\n width: calc(35% - (#{$spacing-unit} / 2));\n }\n\n .footer-col-2 {\n width: calc(20% - (#{$spacing-unit} / 2));\n }\n\n .footer-col-3 {\n width: calc(45% - (#{$spacing-unit} / 2));\n }\n}\n\n@media screen and (min-width: $on-medium) {\n .footer-col-wrapper {\n display: flex\n }\n\n .footer-col {\n width: calc(100% - (#{$spacing-unit} / 2));\n padding: 0 ($spacing-unit * .5);\n\n &:first-child {\n padding-right: $spacing-unit * .5;\n padding-left: 0;\n }\n\n &:last-child {\n padding-right: 0;\n padding-left: $spacing-unit * .5;\n }\n }\n}\n\n\n\n/**\n * Page content\n */\n.page-content {\n padding: $spacing-unit 0;\n flex: 1 0 auto;\n}\n\n.page-heading {\n @include relative-font-size(2);\n}\n\n.post-list-heading {\n @include relative-font-size(1.75);\n}\n\n.post-list {\n margin-left: 0;\n list-style: none;\n\n > li {\n margin-bottom: $spacing-unit;\n }\n}\n\n.post-meta {\n font-size: $small-font-size;\n color: $brand-color;\n}\n\n.post-link {\n display: block;\n @include relative-font-size(1.5);\n}\n\n\n\n/**\n * Posts\n */\n.post-header {\n margin-bottom: $spacing-unit;\n}\n\n.post-title,\n.post-content h1 {\n @include relative-font-size(2.625);\n letter-spacing: -1px;\n line-height: 1.15;\n\n @media screen and (min-width: $on-large) {\n @include relative-font-size(2.625);\n }\n}\n\n.post-content {\n margin-bottom: $spacing-unit;\n\n h1, h2, h3, h4, h5, h6 { margin-top: $spacing-unit }\n\n h2 {\n @include relative-font-size(1.75);\n\n @media screen and (min-width: $on-large) {\n @include relative-font-size(2);\n }\n }\n\n h3 {\n @include relative-font-size(1.375);\n\n @media screen and (min-width: $on-large) {\n @include relative-font-size(1.625);\n }\n }\n\n h4 {\n @include relative-font-size(1.25);\n }\n\n h5 {\n @include relative-font-size(1.125);\n }\n h6 {\n @include relative-font-size(1.0625);\n }\n}\n\n\n.social-media-list {\n display: table;\n margin: 0 auto;\n li {\n float: left;\n margin: 5px 10px 5px 0;\n &:last-of-type { margin-right: 0 }\n a {\n display: block;\n padding: 10px 12px;\n border: 1px solid $border-color-01;\n &:hover { border-color: $border-color-02 }\n }\n }\n}\n\n\n\n/**\n * Pagination navbar\n */\n.pagination {\n margin-bottom: $spacing-unit;\n @extend .social-media-list;\n li {\n a, div {\n min-width: 41px;\n text-align: center;\n box-sizing: border-box;\n }\n div {\n display: block;\n padding: $spacing-unit * .25;\n border: 1px solid transparent;\n\n &.pager-edge {\n color: $border-color-01;\n border: 1px dashed;\n }\n }\n }\n}\n\n\n\n/**\n * Grid helpers\n */\n@media screen and (min-width: $on-large) {\n .one-half {\n width: calc(50% - (#{$spacing-unit} / 2));\n }\n}\n", - "/*-----------------------------------*/\n/*--- IMPORT STYLES FOR FASTPAGES ---*/\n@import \"minima/fastpages-styles\"; \n\n\n\n/*-----------------------------------*/\n/*----- ADD YOUR STYLES BELOW -------*/\n\n// If you want to turn off dark background for syntax highlighting, comment or delete the below line.\n@import \"minima/fastpages-dracula-highlight\"; \n", - "//Default Overrides For Styles In Minima \n// If you wish to override any of this CSS, do so in _sass/minima/custom-styles.css\n\n.post img {\n display: block;\n // border:1px solid #021a40;\n vertical-align: top;\n margin-left: auto;\n margin-right: auto;\n}\n\nimg.emoji{\n display: inline !important;\n vertical-align: baseline !important;\n}\n\n.post figcaption {\n text-align: center;\n font-size: .8rem;\n font-style: italic;\n color: light-grey;\n}\n\n.page-content {\n -webkit-font-smoothing: antialiased !important;\n text-rendering: optimizeLegibility !important;\n font-family: \"Segoe UI\", SegoeUI, Roboto, \"Segoe WP\", \"Helvetica Neue\", \"Helvetica\", \"Tahoma\", \"Arial\", sans-serif !important;\n}\n\n// make non-headings slightly lighter\n.post-content p, .post-content li {\n font-size: 20px;\n color: #515151;\n}\n\n.post-link{\n font-weight: normal;\n}\n\n// change padding of headings\nh1 {\n margin-top:2.5rem !important;\n}\n\nh2 {\n margin-top:2rem !important; \n}\n\nh3, h4 {\n margin-top:1.5rem !important; \n}\n\np {\n margin-top:1rem !important; \n margin-bottom:1rem !important; \n}\n\nh1, h2, h3, h4 {\n font-weight: normal !important;\n margin-bottom:0.5rem !important; \n code {\n font-size: 100%;\n }\n}\n\npre {\n margin-bottom:1.5rem !important; \n}\n\n// make sure the post title doesn't have too much spacing\n.post-title { margin-top: .5rem !important; }\n\nli {\n h3, h4 {\n margin-top:.05rem !important;\n margin-bottom:.05rem !important;\n }\n .post-meta-description {\n color: rgb(88, 88, 88);\n font-size: 15px;\n margin-top:.05rem !important;\n margin-bottom:.05rem !important;\n }\n}\n\n\n\n// Code Folding\n details.description[open] summary::after {\n content: attr(data-open);\n}\n\ndetails.description:not([open]) summary::after {\n content: attr(data-close);\n}\n\n// Notebook badges\n.notebook-badge-image {\n border:0 !important;\n}\n\n// Adjust font size for footnotes.\n.footnotes {\n font-size: 12px !important;\n p, li{\n font-size: 12px !important;\n } \n}\n\n// Adjust with of social media icons were getting cut off\n.social-media-list{\n .svg-icon {\n width: 25px !important;\n height: 23px !important;\n }\n}\n\n// Make Anchor Links Appear Only on Hover\n\n.anchor-link {\n opacity: 0;\n padding-left: 0.375em;\n \\-webkit-text-stroke: 1.75px white;\n \\-webkit-transition: opacity 0.2s ease-in-out 0.1s;\n \\-moz-transition: opacity 0.2s ease-in-out 0.1s;\n \\-ms-transition: opacity 0.2s ease-in-out 0.1s;\n}\n\nh1:hover .anchor-link,\nh2:hover .anchor-link,\nh3:hover .anchor-link,\nh4:hover .anchor-link,\nh5:hover .anchor-link,\nh6:hover .anchor-link {\n opacity: 1;\n}\n\n\n// category tags\n.category-tags {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n font-size: 105%;\n}\n\n// Custom styling for homepage post previews\n.post-meta-title, .post-meta{\n margin-top: .25em !important;\n margin-bottom: .25em !important;\n font-size: 105%;\n}\n\n.page-description {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n color: #585858;\n font-size: 115%;\n}\n\n// Custom styling for category tags\n.category-tags-icon {\n font-size: 75% !important;\n padding-left: 0.375em;\n opacity: 35%;\n}\n.category-tags-link {\n color:rgb(187, 129, 129) !important;\n font-size: 13px !important;\n}\n\n// Search Page Styles\n.js-search-results {padding-top: 0.2rem;}\n.search-results-list-item {padding-bottom: 1rem;}\n.search-results-list-item .search-result-title {\n font-size: 16px;\n color: #d9230f;\n}\n.search-result-rel-url {color: silver;}\n.search-results-list-item a {display: block; color: #777;}\n.search-results-list-item a:hover, .search-results-list-item a:focus {text-decoration: none;}\n.search-results-list-item a:hover .search-result-title {text-decoration: underline;}\n\n.search-result-rel-date {\n color: rgb(109, 120, 138);\n font-size: 14px;\n}\n\n.search-result-preview {\n color: #777;\n font-size: 16px;\n margin-top:.02rem !important;\n margin-bottom:.02rem !important;\n}\n.search-result-highlight {\n color: #2e0137;\n font-weight:bold;\n}\n\ntable {\n white-space: normal;\n max-width: 100%;\n font-size: 100%;\n border:none;\n th{\n text-align: center! important;\n }\n}\n\n// customize scrollbars\n::-webkit-scrollbar {\n width: 14px;\n height: 18px;\n}\n::-webkit-scrollbar-thumb {\n height: 6px;\n border: 4px solid rgba(0, 0, 0, 0);\n background-clip: padding-box;\n -webkit-border-radius: 7px;\n background-color: #9D9D9D;\n -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05);\n}\n::-webkit-scrollbar-button {\n width: 0;\n height: 0;\n display: none;\n}\n::-webkit-scrollbar-corner {\n background-color: transparent;\n}\n\n// Wrap text outputs instead of horizontal scroll\n.output_text.output_execute_result {\n pre{\n white-space: pre-wrap;\n }\n}\n\n\n// Handling large charts on mobile devices\n// @media only screen and (max-width: 1200px) {\n// /* for mobile phone and tablet devices */\n// .output_wrapper{\n// overflow: scroll;\n// }\n// }\n\n.svg-icon.orange{\n width: 30px;\n height: 23px;\n}\n\n.code_cell {\n margin: 1.5rem 0px !important;\n}\n\npre code {\n font-size: 15px !important;\n}\n", - "// Override Syntax Highlighting In Minima With the Dracula Theme: https://draculatheme.com/\n// If you wish to override any of this CSS, do so in _sass/minima/custom-styles.css\n \n$dt-gray-dark: #282a36; // Background\n$dt-code-cell-background: #323443;\n$dt-gray: #44475a; // Current Line & Selection\n$dt-gray-light: #f8f8f2; // Foreground\n$dt-blue: #6272a4; // Comment\n$dt-cyan: #8be9fd;\n$dt-green: #50fa7b;\n$dt-orange: #ffb86c;\n$dt-pink: #ff79c6;\n$dt-purple: #bd93f9;\n$dt-red: #ff5555;\n$dt-yellow: #f1fa8c;\n$dt-green-light: rgb(172, 229, 145);\n\n.language-python + .language-plaintext {\n border-left: 1px solid grey;\n margin-left: 1rem !important;\n}\n\n// ensure dark background for code in markdown\n[class^=\"language-\"]:not(.language-plaintext) pre,\n[class^=\"language-\"]:not(.language-plaintext) code {\n background-color: $dt-code-cell-background !important;\n color: $dt-gray-light;\n}\n\n.language-python + .language-plaintext code { background-color: white !important; }\n.language-python + .language-plaintext pre { background-color: white !important; }\n\n// for Jupyter Notebook HTML Code Cells modified from https://www.fast.ai/public/css/hyde.css\n\n.input_area pre, .input_area div {\n margin-bottom:1.0rem !important;\n margin-top:1.5rem !important;\n padding-bottom:0 !important;\n padding-top:0 !important;\n background: #323443 !important;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n font-family: Menlo, Monaco, Consolas, \"Lucida Console\", Roboto, Ubuntu, monospace;\n border-radius: 5px;\n font-size: 105%;\n}\n.output_area pre, .output_area div {\n margin-bottom:1rem !important;\n margin-top:0rem !important;\n padding-bottom:0 !important;\n padding-top:0 !important;\n}\n.input_area pre {\n border-left: 1px solid lightcoral;\n}\n.output_area pre {\n border-left: 1px solid grey;\n margin-left: 1rem !important;\n font-size: 16px;\n}\n\n.code_cell table { width: auto; }\n\n/* Dracula Theme v1.2.5\n *\n * https://github.com/zenorocha/dracula-theme\n *\n * Copyright 2016, All rights reserved\n *\n * Code licensed under the MIT license\n *\n */\n\n.highlight {\n background: $dt-code-cell-background !important;\n color: $dt-gray-light !important;\n pre, code {\n background: $dt-code-cell-background;\n color: $dt-gray-light;\n font-size: 110%;\n }\n \n .hll,\n .s,\n .sa,\n .sb,\n .sc,\n .dl,\n .sd,\n .s2,\n .se,\n .sh,\n .si,\n .sx,\n .sr,\n .s1,\n .ss {\n color:rgb(231, 153, 122);\n }\n \n .go {\n color: $dt-gray;\n }\n \n .err,\n .g,\n .l,\n .n,\n .x,\n .ge,\n .gr,\n .gh,\n .gi,\n .gp,\n .gs,\n .gu,\n .gt,\n .ld,\n .no,\n .nd,\n .pi,\n .ni,\n .ne,\n .nn,\n .nx,\n .py,\n .w,\n .bp {\n color: $dt-gray-light;\n background-color: $dt-code-cell-background !important;\n }\n \n .p {\n font-weight: bold;\n color: rgb(102, 217, 239);\n }\n \n .ge {\n text-decoration: underline;\n }\n \n .bp {\n font-style: italic;\n }\n \n .c,\n .ch,\n .cm,\n .cpf,\n .cs {\n color: $dt-blue;\n }\n\n .c1 {\n color: gray;\n }\n \n .kd,\n .kt,\n .nb,\n .nl,\n .nv,\n .vc,\n .vg,\n .vi,\n .vm {\n color: $dt-cyan;\n }\n \n .kd,\n .nb,\n .nl,\n .nv,\n .vc,\n .vg,\n .vi,\n .vm {\n font-style: italic;\n }\n \n .fm,\n .na,\n .nc,\n .nf\n {\n color: $dt-green-light;\n }\n \n .k,\n .o,\n .cp,\n .kc,\n .kn,\n .kp,\n .kr,\n .nt,\n .ow {\n color: $dt-pink;\n }\n \n .kc {\n color: $dt-green-light; \n }\n \n .m,\n .mb,\n .mf,\n .mh,\n .mi,\n .mo,\n .il {\n color: $dt-purple;\n }\n \n .gd {\n color: $dt-red;\n }\n}\n\np code{\n font-size: 19px;\n}\n" - ], - "names": [], - "mappings": "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" -} \ No newline at end of file diff --git a/assets/js/search-data.json b/assets/js/search-data.json deleted file mode 100755 index d8d20a5..0000000 --- a/assets/js/search-data.json +++ /dev/null @@ -1,352 +0,0 @@ -{ - - - "post0": { - "title": "2023: A year in review", - "content": ". . While there haven’t been any blog posts in 2023 :wink:, it has been a productive year for the Policy Simulation Library (PSL) community and PSL Foundation! . We’ve continued to serve our mission through education and outreach efforts. We hosted 13 Demo Days in 2023, including presentations from individuals at the Congressional Budget Office, Allegheny County, NOAA, Johns Hopkins, QuantEcon, the City of New York, and other institutions. Archived videos of the Demo Days are available on our YouTube Channel. . In addition, we hosted an in person workshop at the National Tax Association’s annual conference in November. This event featured the PolicyEngine-US project and was lead by Max Ghenis and Nikhil Woodruff, co-founders of PolicyEngine. Attendees included individuals from the local area (Denver) and conference attendees, who represented academia, government, and think tanks. Max and Nikhil provided an overview of PolicyEngine and then walked attendees through a hands-on exercise using the PolicyEngine US tool, having them write code to generate custom plots in a Google Colab notebook. It was a lot of fun – and the pizza was decent too! . Speaking of PolicyEngine, this fiscally-sponsored project of PSL Foundation had a banner year in terms of fundraising and development. The group received several grants in 2023 and closed out the year with a large grant from Arnold Ventures. They also wrote an NSF grant proposal which they are waiting to hear back from. The group added an experienced nonprofit executive, Leigh Gibson, to their team. Leigh provides support with fundraising and operations, and she’s been instrumental in these efforts. In terms of software development, the PolicyEngine team has been able to greatly leverage volunteers (more than 60!) with Pavel Makarchuk coming on as Policy Modeling Manager to help coordinate these efforts. With their community, PolicyEngine has codified numerous US state tax and benefit policies and has developed a robust method to create synthetic data for use in policy analysis. Be on the lookout for a lot more from them in 2024. . QuantEcon, another fiscally sponsored project, has also made tremendous contributions to open source economics in 2023. Most importantly, they ran a very successful summer school in West Africa. In addition, they have continued make key contributions to software tools useful for teaching and training economics tools. These include Jupyteach, which Spencer Lyon shared in our Demo Day series. With their online materials, textbooks, and workshops around the world, QuantEcon is shaping how researchers and policy analysts employ economic tools to solve real-world problems. . PSL Foundation added a third fiscally sponsored project, Policy Change Index (PCI) in 2023. PCI was founded by Weifeng Zhong, a Senior Research Fellow at the Mercatus Center at George Mason University, and uses natural language processing and machine learning to predict changes in policy among autocratic regimes. PCI has had a very successful start with PCI-China, predicting policy changes in China, and PCI-Outbreak, predicting the extent of true COVID-19 case counts in China during the pandemic. Currently, they are extending their work to include predictive indices for Russia, North Korea, and Iran. PSL-F is excited for the opportunity to help support this important work. . Other cataloged projects have continued to be widely used in 2023. To note a few of these use cases, the United Nations has partnered with Richard Evans and Jason DeBacker, maintainers of OG-Core, to help bring the modeling platform to developing countries they are assisting. Tax Foundation’s Capital Cost Recovery model has been updated to 2023 and used in their widely cited 2023 Tax Competitiveness Index. And the Tax-Calculator and TaxData projects both continue to used by think tanks and researchers. . As 2023 comes to a close, we look forward to 2024. We’ll be launching a new PSLmodels.org website soon. And there’ll be many more events – we hope you join in. . From all of us at the PSL, best wishes for a happy and healthy New Year! . Resources: . PSL Models | PSL Foundation | PSL Twitter Feed | PSL YouTube channel | PSL on Open Collective | PSL Shop for PSL branded merchandise | .", - "url": "https://blog.pslmodels.org/2023-year-in-review", - "relUrl": "/2023-year-in-review", - "date": " • Dec 28, 2023" - } - - - - - ,"post1": { - "title": "2022: A year in review", - "content": ". . This has been another successful year for the Policy Simulation Library, whose great community of contributors continue to make innovative advances in open source policy analysis, and for the PSL Foundation, which supports the Library and its community. We are so thankful for all those who have made financial or technical contributions to the PSL this year! In this blog post, I want to take this time at the end of the year to reflect on a few of the highlights from 2022. . PolicyEngine, a PSL Foundation fiscally-sponsored project, launched PolicyEngine US in April and has since seen many use cases of the model (check out the PolicyEngine year-in-review here). PolicyEngine had begun by leveraging the OpenFisca platform, but has transitioned to their own-maintained PolicyEngine Core. PolicyEngine Core and their related projects (such as PolicyEngine US and PolicyEngine UK) already meet all the criteria set forth by the Policy Simulation Library. Keep an eye out for lots more excellent tax and benefit policy analysis tools from PolicyEngine in 2023 and beyond! . PSL Foundation has partnered with QuantEcon, acting as a fiscal sponsor for their projects that provide training and training materials for economic modeling and econometrics using open source tools. QuantEcon ran a massive open online class in India that had more than 1000 registrants in summer of 2022. They also ran an online course for over 100 students from universities in Africa in 2022. Further, with the funding received through their partnership with PSL Foundation, QuantEcon will continue these efforts in 2023 with a planned, in-person course in India. . PSL hosted its first in-person workshop in March. The workshop focused on open source tools for tax policy analysis including Tax-Calculator, Cost-of-Capital-Calculator, OG-USA, and PolicyEngine US. The PSL event was, appropriately enough, hosted at the MLK Memorial Library in DC. We filled the space with 30 attendees from think tanks, consultancies, and government agencies. The workshop was a great success and we look forward to hosting more in-person workshops in the future. . PSL’s bi-weekly Demo Day series continued throughout 2022, with 13 Demo Days this year. In these, we saw a wide array of presenters from institutions such as the Federal Reserve Bank of Atlanta, PolicyEngine, Tax Foundation, National Center for Children in Poverty, IZA Institute of Labor Economics, Channels, the University of South Carolina, the Center for Growth and Opportunity, and the American Enterprise Institute. You can go back and rewatch any of these presentations on YouTube. . It’s been a fantastic year and we expect even more from the community and PSL Foundation in 2023. PSL community members continue to interact several times each week on our public calls. Check out the events page and join us in the New Year! . From all of us at the PSL, best wishes for a happy and healthy New Year! . Resources: . PSL Foundation | PSL Twitter Feed | PSL YouTube channel | PSL on Open Collective | PSL Shop for PSL branded merchandise | .", - "url": "https://blog.pslmodels.org/2022-year-in-review", - "relUrl": "/2022-year-in-review", - "date": " • Dec 31, 2022" - } - - - - - ,"post2": { - "title": "Demo Day: How does targeted cash assistance affect incentives to work?", - "content": ". In this week’s Demo Day, I shared my paper published at the Center for Growth and Opportunity in June. “How does targeted cash assistance affect incentives to work?” analyzed a program Mayor Sumbul Siddiqui proposed in Cambridge, Massachusetts to provide $500 per month for 18 months to all families with dependents and income below 200% of the poverty line. . Targeted programs like these are common in guaranteed income pilots, and in some enacted policies, and I find that it would cost-effectively reduce poverty: if expanded to Massachusetts, it would cost $1.2 billion per year and cut child poverty 42%. . However, that targeting comes at a cost. Using the OpenFisca US microsimulation model (supported by the Center for Growth and Opportunity and cataloged by the Policy Simulation Library), I find that the program would deepen an existing welfare cliff at 200% of the poverty line. For example, a family of four would lose over $19,000 total—$9,000 from the cash assistance and $10,000 from other benefits—once they earn a dollar above 200% of the poverty line (about $55,000). To recover those lost benefits, they would have to earn an additional $26,000, a range I call the “earnings dead zone”. . My presentation reviews these trends in both slides and the PolicyEngine US app for computing the impacts of tax and benefit policy. For example, I show how repealing the SNAP emergency allotment would smooth out welfare cliffs, while reducing resources available to low-income families, and how a universal child allowance avoids work disincentives while less cost-effectively reducing poverty. . Policymakers face trade-offs between equity and efficiency, and typically labor supply responses consider marginal tax rates. With their infinite marginal tax rates, welfare cliffs are a less explored area, even though they surface in several parts of the tax and benefit system. This paper makes a start, but more research is yet to be done. .", - "url": "https://blog.pslmodels.org/demo-day-cambridge-cash-assistance", - "relUrl": "/demo-day-cambridge-cash-assistance", - "date": " • Jul 14, 2022" - } - - - - - ,"post3": { - "title": "Demo Day: Getting Started with GitHub", - "content": ". Git and GitHub often present themselves as barriers to entry to would-be contributors to PSL projects, even for those who are otherwise experienced with policy modeling. But these tools are critical to collaboration on open source projects. In the Demo Day video linked above, I cover some of the basics to get set up and begin contributing to an open source project. . There are four steps I outline: . Create a “fork” of the repository you are interested in. A fork is a copy of the source code that resides on GitHub (i.e., in the cloud). A fork gives you control over a copy of the source code. You will be able to merge in changes to the code on this fork, even if you don’t have permissions to do so with the original repository. | “Clone” the fork. Cloning will download a copy of the source code from your fork onto your local machine. But cloning is more than just downloading the source code. It will include the version history of the code and automatically create a link between the local files and the remote files on your fork. | Configure your local files to talk to both your fork (which has a default name of origin) and the original repository you forked from (which typically has the default name of upstream). Do this by using your command prompt or terminal to navigate to the directory you just cloned. From there, run: git remote add upstream URL_to_original_repo.git . And check that this worked by giving the command: . git remote -v . | If things worked, you should see URLs to your fork and the upstream repository with “(fetch)” and “(push)” by them More info on this is in the Git docs. . Now that you have copies of the source code on your fork and on your local machine, you are ready to begin contributing. As you make changes to the source code, you’ll want to work on development branches. Branches are copies of the code. Ideally, you keep your “main” (or “master”) branch clean (i.e., your best version of the code) and develop the code on branches. When you’ve completed the development work (e.g., adding a new feature) you will them merge this into the “main” branch. | I hope this helps you get started contributing to open source projects. Git and GitHub are valuable tools and there is lots more to learn, but these basics will get you going. For more information, see the links below. If you want to get started working with a project in the Library, feel free to reach out to me through the relevant repo (@jdebacker on GitHub) or drop into a PSL Community Call (dates on the PSL Calendar). . Resources: . PSL Git Tutorial | Git Basics | .", - "url": "https://blog.pslmodels.org/demo-day-github", - "relUrl": "/demo-day-github", - "date": " • Jun 28, 2022" - } - - - - - ,"post4": { - "title": "Demo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator", - "content": ". In the Demo Day video shared here, I show how to use open source tools to analyze international corporate tax competitiveness. The two main tools illustrated are the Cost-of-Capital-Calculator (CCC), a model to compute measures of the tax burden on new investments, and Tax Foundation’s International Tax Competitiveness Index (ITCI). . Tax Foundation has made many helpful resources available online. Their measures of international business tax policy are a great example of this. The ICTI outputs and inputs are all well documented, with source code to reproduce results available on GitHub. . I plug Tax Foundation’s country-by-country data into CCC functions using it’s Python API. Because CCC is designed to flexibly take array or scalar data, operating on rows of tabular data, such as that in the ITCI, is relatively straight-forward. The Google Colab notebook I walk through in this Demo Day, can be a helpful example to follow if you’d like to do something similar to this with the Tax Foundation data - or your own data source. From the basic building blocks there (reading in data, calling CCC functions), you can extend the analysis in a number of ways. For example adding additional years of data (Tax Foundation posts their data back to 2014), modifying economic assumptions, or creating counter-factual policy experiments across sets of countries. . If you find this example useful, or have questions or suggestions about this type of analysis, please feel free to reach out to me. . Resources: . Colab Notebook | Tax Foundation International Tax Competitiveness Index 2021 | GitHub repo for Tax Foundation ITCI data | Cost-of-Capital-Calculator documentation | .", - "url": "https://blog.pslmodels.org/demo-day-ccc-international", - "relUrl": "/demo-day-ccc-international", - "date": " • Apr 18, 2022" - } - - - - - ,"post5": { - "title": "Demo Day: Modeling taxes and benefits with the PolicyEngine US web app", - "content": ". PolicyEngine is a nonprofit that builds free, open-source software to compute the impact of public policy. After launching our UK app in October 2021, we’ve just launched our US app, which calculates households’ federal taxes and several benefit programs, both under current law and under customizable policy reforms. . In this Demo Day, I provide background on PolicyEngine and demonstrate how to use PolicyEngine US (a Policy Simulation Library cataloged model) to answer a novel policy question: . How would doubling both (a) the Child Tax Credit and (b) the Supplemental Nutrition Assistance Program (SNAP) net income limit affect a single parent in California with $1,000 monthly rent and $50 monthly broadband costs? . By bringing together tax and benefit models into a web interface, we can answer this question quickly without programming experience, as well as an unlimited array of questions like it. The result is a table breaking down the household’s net income by program, as well as graphs of net income and marginal tax rates as the household’s earnings vary. . I close with a quick demo of PolicyEngine UK, which adds society-wide results like the impact of reforms on the budget, poverty, and inequality, as well as contributed policy parameters. We’re planning to bring those features to PolicyEngine US, along with state tax and benefit programs in all 50 states, over the next two years (if not sooner). . Feel free to explore the app and reach out with any questions at max@policyengine.org. . Resources: . PolicyEngine US | Presentation slides | PolicyEngine blog post on launching PolicyEngine US | .", - "url": "https://blog.pslmodels.org/demo-day-policyengine-us", - "relUrl": "/demo-day-policyengine-us", - "date": " • Apr 12, 2022" - } - - - - - ,"post6": { - "title": "Policy Simulation Library DC Workshop: Open source tools for analyzing tax policy", - "content": ". . The Policy Simulation Library is hosting a workshop in Washington, DC on March 25 on open source tools for the analysis of tax policy. Participants will learn how to use open source models from the Library for revenue estimation, distributional analysis, and to simulate economic impacts of tax policy. The workshop is intended to be a hands-on experience and participants can expect to leave with the required software, documentation, and knowledge to continue using these tools. All models in the workshop are written in the Python programming language–familiarity with the language is helpful, but not required. . Workshop Schedule: . 8:15-8:45a: Breakfast | 8:45-9:00a: Introduction | 9:00-9:50a: Using Tax-Calculator for revenue estimation and distributional analysis (Matt Jensen) | 10:00-10:50a: Estimating effective tax rates on investment with Cost-of-Capital-Calculator (Jason DeBacker) | 11:00-11:50a: Macroeconomic modeling of fiscal policy with OG-Core and OG-USA (Richard W. Evans) | noon-1:00p: Lunch and demonstration of PolicyEngine (Max Ghenis) | . The workshop will be held at the Martin Luther King Jr. Memorial Library in Washington, DC. Participants are expected to arrive by 8:30am and the program will conclude at 1:00pm. Breakfast and lunch will be provided. PSL Foundation is sponsoring the event and there is no cost to attend. Attendance is limited to 30 in order to make this a dynamic and interactive workshop. . To register, please use this Google Form. Registration will close March 11. Participants will be expected to bring a laptop to the workshop where they can interact with the software in real time with the instructors. Registered participants will receive an email before the event with a list of software to install before the workshop. . Please feel free to share this invitation with your colleagues. . Questions about the workshop can be directed to Jason DeBacker at jason.debacker@gmail.com. .", - "url": "https://blog.pslmodels.org/DC-workshop", - "relUrl": "/DC-workshop", - "date": " • Mar 3, 2022" - } - - - - - ,"post7": { - "title": "2021: A year in review", - "content": ". . As 2021 winds down, I wanted to take a few minutes to reflect on the Policy Simulation Library’s efforts over the past year. With an amazing community of contributors, supporters, and users, PSL has been able to make a real impact in 2021. . The library saw two new projects achieve “cataloged” status: Tax Foundation’s Capital Cost Recovery model and the Federal Reserve Bank of New York’s DSGE.jl model. Both models satisfy all the the PSL criteria for transparency and reproducibility. Both are also written entirely in open source software: the Capital Cost Recovery model is in R and the DSGE model in Julia. . An exciting new project to join the Library this year is PolicyEngine. PolicyEngine is building open source tax and benefit mircosimulation models and very user-friendly interfaces to these models. The goal of this project is to take policy analysis to the masses through intuitive web and mobile interfaces for policy models. The UK version of the PolicyEngine app has already seen use from politicians interested in reforming the tax and benefit system in the UK. . Another excellent new addition to the library is the Federal-State Tax Project. This project provides data imputation tools to allow for state tax data that are representative of each state as well as federal totals. These datasets can then be used in microsimulation models, such as Tax-Calculator to study the impact of federal tax laws across the states. Matt Jensen and Don Boyd have published several pieces with these tools, including in State Tax Notes . PSL Foundation became an official business entity in 2021. While still awaiting a letter of determination for 501(c)(3) status from the IRS, PSL Foundation was able to raise more than $25,000 in the last few months of 2021 to support open source policy analysis! . PSL community members continued to interact several times each week in our public calls. The PSL Shop was launched in 2021 so that anyone can get themselves some PSL swag (with some of each purchase going back to the PSL Foundation to support the Library). In addition, PSL hosted 20 Demo Day presentations from 11 different presenters! These short talks covered everything from new projects to interesting applications of some of the first projects to join the Library, as well as general open source tools. . As in past years, PSL cataloged and incubating models were found to be of great use in current policy debates. Whether it was the ARPA, Biden administration proposals to expand the CTC, or California’s Basic Income Bill, the accessibility and ability to reproduce results from these open source projects has made them a boon to policy analysts. . We are looking forward to a great 2022! We expect the Library to continue to grow, foresee many interesting and helpful Demo Days, and are planning a DC PSL Workshop for March 2022. We hope to see you around these or other events! . Best wishes from PSL for a happy and healthy New Year! . Resources: . PSL Foundation | PSL Twitter Feed | PSL YouTube channel | PSL on Open Collective | .", - "url": "https://blog.pslmodels.org/2021-year-in-review", - "relUrl": "/2021-year-in-review", - "date": " • Dec 28, 2021" - } - - - - - ,"post8": { - "title": "Demo Day: Using synthimpute for data fusion", - "content": ". Suppose a policy analyst sought to estimate the impact of a policy that changed income tax rates and benefit rules while also adding a progressive wealth tax. The standard approach is to use a microsimulation model, where the rules are programmed as code, and then to run that program over a representative sample of households. Unfortunately, no single US government survey captures all the households characteristics needed to analyze this policy; in particular, the reliable tax and benefit information lies in surveys like the Current Population Survey (CPS), while wealth lies in the Survey of Consumer Finances (SCF). . Assuming the analyst wanted to start with the CPS, they have several options to estimate wealth for households to levy the progressive wealth tax. Two typical approaches include: . Linear regression, predicting wealth from other household characteristics common to the CPS and SCF. | Matching, in which each CPS household is matched with the most similar household in the SCF. | Neither of these approaches, however, aim to estimate the distribution of wealth conditional on other characteristics. Linear regression explicitly estimates the mean prediction, but that could miss the tails of wealth from whom most of the wealth tax revenue will be collected. . Instead, the analyst could apply quantile regression to estimate the distribution of wealth conditional on other characteristics, and then measure the effectiveness of the estimation using quantile loss. . In this Demo Day, I present the concepts of microsimulation, imputation, and quantile loss to motivate the synthimpute Python package I’ve developed with my PolicyEngine colleague Nikhil Woodruff. In an experiment predicting wealth on a holdout set from the SCF, my former colleague Deepak Singh and I found that random forests significantly outperform OLS and matching for quantile regression, and this is the approach applied in synthimpute for both data fusion and data synthesis. The synthimpute API will be familiar to users of scikit-learn and statsmodels , with the difference being that synthimpute ‘s rf_impute function returns a random value from the predicted distribution; it can also skew the predictions to meet a target total. . We’ve used synthimpute to fuse data for research reports at the UBI Center and to enhance the PolicyEngine web app for UK tax and benefit simulation, and we welcome new users and contributors. Feel free to explore the repository or contact me with questions at max@policyengine.org. . Resources: . synthimpute package on GitHub | Presentation slides | UBI Center report on land value taxation in the UK, using synthimpute to impute land value from the UK Wealth and Assets Survey to the Family Resources Survey | PolicyEngine UK carbon tax example, using synthimpute to impute carbon emissions from the Living Costs and Food Survey to the Family Resources Survey | Notebook comparing random forests to matching and other techniques using a holdout set from the US Survey of Consumer Finances | My blog post on quantile regression for Towards Data Science, which laid the groundwork for synthimpute | .", - "url": "https://blog.pslmodels.org/demo-day-synthimpute", - "relUrl": "/demo-day-synthimpute", - "date": " • Dec 8, 2021" - } - - - - - ,"post9": { - "title": "Demo Day: The OG-Core platform", - "content": ". The OG-Core model is a general equilibrium, overlapping generations (OG) model suitable for evaluating fiscal policy. Since the work of Alan Auerbach and Laurence Kotlikoff in the 1980s, this class of model has become a standard in the macroeconomic analysis of tax and spending policy. This is for good reason. OG models are able to capture the impacts of taxes and spending in the short and long run, examine incidence of policy across generations of people (not just short run or steady state analysis of a cross-section of the economy), and capture important economic dynamics (e.g., crowding out effects of deficit-financed policy). . In the PSL Demo Day presentation linked above, I cover the basics of OG-Core: its history, its API, and how country-specific models can use OG-Core as a dependency. In brief, OG-Core provides a general overlapping generations framework, from which parameters can be calibrated to represent particular economies. Think of it this way: an economic model is just a set of parameters plus a system of equations. OG-Core spells out all of the equations to represent an economy with heterogeneous agents, production and government sectors, open economy options, and detailed policy rules. OG-Core also includes default values for all parameters, along with parameter metadata and parameter validation rules. A country specific application is then just a particular parameterization of the general OG-Core model. . As an example of a country-specific application, one can look at the OG-USA model. This model provides a calibration of OG-Core to the United States. The source code in that project allows one to go from raw data sources to the estimation and calibration procedures used to determine parameter values representing the United States, to parameter values in formats suitable for use in OG-Core. Country-specific models like OG-USA include (where available) links to microsimulation models of tax and spending programs to allow detailed microdata of actual and counterfactual policies to inform the net tax-transfer functions used in the OG-Core model. For those interested in building their own country-specific model, the OG-USA project provides a good example to work from. . We encourage you to take a look at OG-Core and related projects. New contributions and applications are always welcome. If you have questions or comments, reach out through the relevant repositories on Github to me, @jdebacker, or Rick Evans, @rickecon. . Resources: . OG-Core documentation | OG-USA documentation package for unit testing in Python | Tax-Calculator documentation | OG-UK repository | OpenFisca-UK repository | Slides from the Demo Day presentation | .", - "url": "https://blog.pslmodels.org/demo-day-og-core", - "relUrl": "/demo-day-og-core", - "date": " • Nov 1, 2021" - } - - - - - ,"post10": { - "title": "Demo Day: Deploying apps on Compute Studio", - "content": ". . Compute Studio (C/S) is a platform for publishing and sharing computational models and data visualizations. In this demo day, I show how to publish your own project on C/S using the new automated deployments feature. You can find an in depth guide to publishing on C/S in the developer docs. . C/S supports two types of projects: models and data visualizations. Models are fed some inputs and return a result. Data visualizations are web servers backed by popular open-source libraries like Bokeh, Dash, or Streamlit. Models are good for long-running processes and producing archivable results that can be shared and returned to easily. Data visualizations are good for highly interactive and custom user experiences. . Now that you’ve checked out the developer docs and set up your model or data-viz, you can head over to the C/S publishing page https://compute.studio/new/ to publish your project. Note that this page is still very much under construction and may look different in a few weeks. . . Next, you will be sent to the second stage in the publish flow where you will provide more details on how to connect your project on C/S: . . Clicking “Connect App” will take you to the project home page: . . Go to the “Settings” button in the top-right corner and this will take you to the project dashboard where you can modify everything from the social preview of your project to the amount of compute resources it needs: . . The “Builds” link in the sidebar will take you to the builds dashboard where you can create your first build: . . It’s time to create the first build. You can do so by clicking “New Build”. This will take you to the build status page. While the build is being scheduled, the page will look like this: . . You can click the “Build History” link and it will show that the build has been started: . . The build status page should be updated at this point and will look something like this: . . C/S automated deployments are built on top of Github Actions. Unfortunately, the logs in Github Actions are not available through the Github API until after the workflow is completely finished. The build status dashboard will update as the build progresses and once it’s done, you will have full access to the logs from the build. These will contain outputs from installing your project and the outputs from your project’s tests. . In this case, the build failed. We can inspect the logs to see that an import error caused the failure: . . . I pushed an update to my fork of Tax-Cruncher on Github and restarted the build by clicking “Failure. Start new Build”. The next build succeeded and we can click “Release” to publish the project: . . The builds dashboard now shows the two builds: . . Finally, let’s go run our new model: . . It may take a few seconds for the page to load. This is because the model code and all of its dependencies are being loaded onto the C/S servers for the first time: . . The steps for publishing a data visualization are very similar. The main idea is that you tell C/S what Python file your app lives in and C/S will know how to run it given your data visualization technology choice. .", - "url": "https://blog.pslmodels.org/demo-day-cs-auto-deploy", - "relUrl": "/demo-day-cs-auto-deploy", - "date": " • Sep 20, 2021" - } - - - - - ,"post11": { - "title": "Demo Day: Unit testing for open source projects", - "content": ". Unit testing is the testing of individual units or functions of a software application. This differs from regression testing that focuses on the verification of final outputs. Instead, unit testing tests each smallest testable component of your code. This helps to more easily identify and trace errors in the code. . Writing unit tests is good practice, though not one that’s always followed. The biggest barrier to writing unit tests is that doing so takes time. You might wonder “why am I testing code that runs?” But there are a number benefits to writing unit tests: . It ensures that the code does what you expect it to do | You’ll better understand what your code is doing | You will reduce time tracking down bugs in your code | . Often, writing unit tests will save you time in the longer run because it reduces debugging time and because it forces you to think more about what your code does, which often leads to the development of more efficient code. And for open source projects, or projects with many contributors, writing unit tests is important in reducing the likelihood that errors are introduced into your code. This is why the PSL catalog criteria requires projects to provide at least some level of unit testing. . In the PSL Demo Day video linked above, I illustrate how to implement unit tests in R using the testthat package. There are essentially three steps to this process: . Create a directory to put your testing script in, e.g., a folder called tests | Create one or more scripts that define your tests. Each test is represented as a call of the test_that function and contain an statement that will evaluate as true or false (e.g., you may use the expect_equal function to verify that a function returns expected values given certain inputs). | You will want to use test in the name of these tests scripts as well as something descriptive of what is tested. | . | Create a script that will run your tests. Here you’ll need to import the testthat package and you’ll need to call the script(s) you are testing to load their functions. | Then you’ll use the test_dir function to pass the directory in which the script(s) you created in Step 2 reside. | . | Check out the video to see examples of how each of these steps is executed. I’ve also found this blog post on unit tests with testthat to be helpful. . Unit testing in Python seems to be more developed and straightforward with the excellent pytest package. While pytest offers many options for parameterizing tests, running tests in parallel, and more, the basic steps remain the same as those outlined above: . Create a directory for your test modules (call this folder tests as pytest will look for that name). | Create test modules that define each test Tests are defined much like any other function in Python, the but will involve some assertion statement is triggered upon test failure. | You will want to use test in the name of these tests modules as well as something descriptive of what is tested. | . | You won’t need to create a script to run your tests as with testthat, but you may create a pytest.ini file to customize your tests options. | That’s about it to get started writing unit tests for your code. PSL cataloged projects provide many excellent examples of a variety of unit tests, so search them for examples to build from. In a future Demo Day and blog post, we’ll talk about continuous integration testing to help get even more out of you unit tests. . Resources: . testthat package for unit testing in R | pytest package for unit testing in Python | PSL catalog criteria | Unit tests for the capital-cost-recovery model | .", - "url": "https://blog.pslmodels.org/demo-day-unit-testing", - "relUrl": "/demo-day-unit-testing", - "date": " • Aug 9, 2021" - } - - - - - ,"post12": { - "title": "Demo Day: Constructing tax data for the 50 states", - "content": ". Federal income tax reform impacts can vary dramatically across states. The cap on state and local tax deductions (SALT) is a well-known example, but other policies also have differential effects because important tax-relevant features vary across states such as the income distribution, relative importance of wage, business, and retirement income, and family size and structure. Analyzing how policy impacts vary across states requires data that faithfully represent the characteristics of the 50 states. . This Demo Day described a method and software for constructing state weights for microdata files that (1) come as close as possible to targets for individual states, while (2) ensuring that the state weights for each tax record sum to its national weight. The latter objective ensures that the sum of state impacts for a tax reform equals the national impact. . This project developed state weights for a data file with more than 200,000 microdata records. The weighted data file comes within 0.01% of desired values for more than 95% of approximately 10,000 targets. . The goal of the slides and video was to enable a motivated Python-skilled user of the PSL TaxData and Tax-Calculator projects to reproduce project results: 50-state weights for TaxData’s primary output, the puf.csv microdata file (based primarily on an IRS Public Use File), using early-stage open-source software developed in the project. Thus, the demo is technical and focused on nuts and bolts. . The methods and software can also be used to: . Create geographic-area weights for other microdata files | Apportion state weights to Congressional Districts or counties, if suitable targets can be developed | Create state-specific microdata files suitable for modeling state income taxes | . The main topics covered in the slides and video are: . Creating national and state targets from IRS summary data | Preparing a national microdata file for state weighting | Approaches to constructing geographic weights | Running software that implements the Poisson-modeling approach used in the project | Measures of quality of the results | .", - "url": "https://blog.pslmodels.org/demo-day-constructing-tax-data-for-the-50-states", - "relUrl": "/demo-day-constructing-tax-data-for-the-50-states", - "date": " • Jul 16, 2021" - } - - - - - ,"post13": { - "title": "Demo Day: Using the TaxBrain Python API", - "content": ". . The TaxBrain project was primarily created to serve as the backend of the Tax-Brain web-application. But at its core, TaxBrain is a Python package that greatly simplifies tax policy analysis. For this PSL Demo-Day, I demonstrated TaxBrain’s capabilities as a standalone package, and how to use it to produce high-level summaries of the revenue impacts of proposed tax policies. The Jupyter Notebook from the presentation can be found here. . TaxBrain’s Python API allows you to run a full analysis of income tax policies in just three lines of code: . from taxbrain import TaxBrain tb = TaxBrain(START_YEAR, END_YEAR, use_cps=True, reform=REFORM_POLICY) tb.run() . Where START_YEAR and END_YEAR are the first and last years, respectively, of the analysis; use_cps is a boolean indicator that you want to use the CPS-based microdata file prepared for use with Tax-Calculator; and REFORM_POLICY is either a JSON file or Python dictionary that specifies a reform suitable for Tax-Calculator. The forthcoming release of TaxBrain will also include a feature that allows you to perform a stacked revenue analysis as well. The inspiration for this feature was presented by Jason DeBacker in a previous demo-day. . Once TaxBrain has been run, there are a number of methods and functions included in the package to create tables and plots to summarize the results. I used the Biden 2020 campaign proposal in the demo and the resulting figures are below. The first is a “volcano plot” that makes it easy to see the magnitude of the change in tax liability individuals across the income distribution face. Each dot represents a tax unit, and the x and y variables can be customized based on the user’s needs. . . The second gives a higher-level look at how taxes change in each income bin. It breaks down what percentage of each income bin faces a tax increase or decrease, and the size of that change. . . The final plot shown in the demo simply shows tax liabilities by year over the budget window. . . The last feature I showed was TaxBrain’s automated reports. TaxBrain uses saved results and an included report template to write a report summarizing the findings of your simulation. The reports include tables and figures similar to what you may find in similar write ups by the Joint Committee on Taxation or Tax Policy Center including a summary of significant changes caused by the reform, and all you need is one line of code: . report(tb, name='Biden Proposal', outdir='biden', author='Anderson Frailey') . The above code will save a PDF copy of the report in a directory called biden along with PNG files for each of the graphs created and the raw Markdown text used for the report, which you can then edit as needed if you would like to add content to the report that is not already included. Screenshots of the default report are included below. . . There are of course downsides to using TaxBrain instead of Tax-Calculator directly. Specifically, it’s more difficult, and sometimes impossible, to perform custom tasks like modeling a feature of the tax code that hasn’t been added to Tax-Calculator yet or advanced work with marginal tax rates. But for day-to-day tax modeling, the TaxBrain Python package can significantly simply any workflow. . Resources: . Tax-Brain GitHub repo | Tax-Brain Documentation | .", - "url": "https://blog.pslmodels.org/demo-day-tax-brain-python-api", - "relUrl": "/demo-day-tax-brain-python-api", - "date": " • Jun 14, 2021" - } - - - - - ,"post14": { - "title": "Demo Day: Updating Jupyter Book documentation with GitHub Actions", - "content": ". Open source projects must maintain clear and up-to-date documentation in order to attract users and contributors. Because of this, PSL sets minimum standards for documentation among cataloged projects in its model criteria. A recent innovation in executable books, Jupyter Book, has provided an excellent format for model documentation and has been widely adopted by PSL projects (see for example OG-USA, Tax-Brain, Tax-Calculator). . Jupyter Book allows one to write documents with executable code and text together, as in Jupyter notebooks. But Jupyter Book pushes this further by allowing documents with multiple sections, better integration of TeX for symbols and equations, BibTex style references and citations, links between sections, and Sphinx integration (for auto-built documentation of model APIs from source code). Importantly for sharing documentation, Jupyter Books can easily be compiled to HTML, PDF, or other formats. Portions of a Jupyter Book that contain executable code can be downloaded as Jupyter Notebooks or opened in Google Colab or binder . The Jupyter Book documentation is excellent and will help you get started creating your “book” (tip: pay close attention to formatting details, including proper whitespace). What I do here is outline how you can easily deploy your documentation to the web and keep it up-to-date with your project. . I start from the assumption that you have the source files to build your Jupyter Book checked into the main branch of your project (these maybe yml , md , rst , ipynb or other files). For version control purposes and to keep your repo trim, you generally don’t want to check the built documentation files to this branch (tip: consider adding the folder these files will go to (e.g., /_build to your .gitignore ). When these files are in place and you can successfully build your book locally, it’s time for the first step. . Step 1: Add two GH Actions to your project’s workflow: . An action to check that your documentation files build without an error. I like to run this on each push to a PR. The action won’t hang on warnings, but will fail if your Jupyter Book doesn’t build at all. An example of this action from the OG-USA repo is here: | name: Check that docs build on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. with: persist-credentials: false - name: Setup Miniconda uses: conda-incubator/setup-miniconda@v2 with: activate-environment: ogusa-dev environment-file: environment.yml python-version: 3.7 auto-activate-base: false - name: Build # Build Jupyter Book shell: bash -l {0} run: | pip install jupyter-book pip install sphinxcontrib-bibtex==1.0.0 pip install -e . cd docs jb build ./book . To use this in your repo, you’ll just need to change a few settings such as the name of the environment and perhaps the Python version and path to the book source files. Note that in the above yml file sphinxcontrib-bibtex is pinned. You maybe able to unpin this, but OG-USA needed this pin for documentation to compile property due to changes in the jupyter-book and sphinxcontrib-bibtex packages. . An action that builds and deploys the Jupyter Book to GH Pages. The OG-USA project uses the deploy action from James Ives in this action. This is something that you will want to run when PRs are merged into your main branch so that the documentation is kept up-to-date with the project. To modify this action for your repo, you’ll need to change the repo name, the environment name, and potentially the Python version, branch name, and path to the book source files. | Step 2: Once the action in (2) above is run, your compiled Jupyter Book docs will be pushed to a gh-pages branch in your repository (the action will create this branch for you if it doesn’t already exist). At this point, you should be able to see your docs at the url https://GH_org_name.github.io/Repo_name . But it probably won’t look very good until you complete this next step. To have your Jupyter Book render on the web as you see it on your machine, you will want to push and merge an empty file with the name .nojekyll into your repo’s gh-pages branch. . That’s it! With these actions, you’ll be sure that your book continues to compile and a new version will be published to the web with with each merge to your main branch, ensuring that your documentation stays up-to-date. . Some additional tips: . Use Sphinx to document your projects API. By doing so you’ll automate an important part of your project’s documentation – as long as the docstrings are updated when the source code is, the Jupyter Book you are publishing to the web will be kept in sync with no additional work needed. | You can have your gh-pages-hosted documentation point to a custom URL. | Project maintainers should ensure that docs are updated with PRs that are relevant (e.g., if the PR changes an the source code affecting a user interface, then documentation showing example usage should be updated) and help contributors make the necessary changes to the documentation source files. | .", - "url": "https://blog.pslmodels.org/demo-day-jupyter-book-deploy", - "relUrl": "/demo-day-jupyter-book-deploy", - "date": " • May 17, 2021" - } - - - - - ,"post15": { - "title": "Demo Day: Producing stacked revenue estimates with the Tax-Calculator Python API", - "content": ". It’s often useful to be able to identify the effects of specific provisions individually and not just the overall impact of a proposal with many provisions. Indeed, when revenue estimates of tax law changes are reported (such as this JCT analysis of the American Rescue Plan Act of 2021), they are typically reported on a provision-by-provision basis. Finding the provision-by-provision revenue estimates is cumbersome with the Tax-Brain web application both because it’s hard to iterate over many provisions and because the order matters when stacking estimates, so that one needs to keep this order in mind as parameter values are updated for each additional provision in a full proposal. . In the PSL Demo Day on April 5, 2021, I show how to use the Python API of Tax-Calculator to efficiently produce stacked revenue estimates. In fact, after some initial setup, this can be done with just 12 lines of code (plus a few more to make the output look nice). The Google Colab notebook that illustrates this approach can be found at this link, but here I’ll walk through the four steps that are involved: . Divide up the full proposal into strings of JSON text that contain each provision you want to analyze. My example breaks up the Biden 2020 campaign proposal into seven provisions, but this is illustrative and you can make more or less provisions depending on the detail you would like to see. | Create a dictionary that contains, as its values, the JSON strings. A couple notes on this. First, the dictionary keys should be descriptive of the provisions as they will become the labels for each provision in the final table of revenue estimates we produce. Second, order matters here. You’ll want to be sure the current law baseline is first (the value for this will be an empty dictionary). Then you specify the provisions. The order you specify will likely affect your revenue estimates from a given provision (for instance, expanding/restricting a deduction has a larger revenue effect when rates are higher), but there are not hard and fast rules on the “right” order. Traditionally, rate changes are stacked first and tax expenditures later in the order. | Iterate over this dictionary. With a dictionary of provisions in hand, we can write a “for loop” to iterate over the provision, simulating the Tax-Calculator model at each step. Note that when the Policy class object in Tax-Calculator is modified, it only needs to be told the changes in tax law parameters relative to its current state. In other words, when we are stacking provisions, estimating the incremental effect of each, you can think of the Policy object having a baseline policy that is represented by the current law baseline plus all provisions that have been analyzed before the provision at the current iteration. The Policy class was created in this way so that one can easily represent policy changes, requiring the user to only input the set of parameters that are modified, not every single parameter’s value under the hypothetical policy. But this also makes it parsimonious to stack provisions as we are doing here. Notice that the JSON strings for each provision (created in Step 1) can be specified independent of the stacking order. We only needed to slice the full set of proposals into discrete chunks, we didn’t need to worry about creating specifications of cumulative policy changes. | Format output for presentation. After we’ve run a Tax-Calculator simulation for the current law baseline plus each provision (and each year in the budget window), we’ve got all the output we need. With this output, we can quickly create a table that will nicely present our stacked revenue estimate. One good check to do here is to create totals across all provisions and compare this to the simulated revenue effects of running the full set of proposals in one go. This check helps to ensure that you didn’t make an error in specifying your JSON strings. For example, it’s easy to leave out one or more provisions, especially if there are many. | I hope this provides a helpful template for your own analysis. Note that one can modify this code in several useful ways. For example, within the for-loops, the Behavioral-Responses can be called to produce revenue estimates that take into account behavioral feedback. Or one could store the individual income tax and payroll tax revenue impacts separately (rather than return the combined values as in the example notebook). Additional outputs (even the full set of microdata after each provision is applied) can be stored for even more analysis. . In the future, look for Tax-Brain to add stacked revenue estimates to its capabilities. It’ll still be important for users to carve up their full list of policy changes into sets of provisions as we did in Steps 1 and 2 above, but Tax-Brain will then take care of the rest behind the scenes. . Resources: . Colab Notebook with example | Biden campaign reform file in PSL Examples | .", - "url": "https://blog.pslmodels.org/demo-day-stacked-revenue-estimates", - "relUrl": "/demo-day-stacked-revenue-estimates", - "date": " • Apr 5, 2021" - } - - - - - ,"post16": { - "title": "Demo Day: Stitching together apps on Compute Studio", - "content": ". In Demo Day 8, I talked about connecting multiple apps on Compute Studio with PSL Stitch. The source code for PSL stitch can be found in this repository. . Stitch is composed of three components: . A python package that can be run like a normal Python package. | A RESTful API built with FastAPI that is called remotely to create simulations on Compute Studio. | A GUI built with ReactJS that makes calls to the REST API to create and monitor simulations. | . One of the cool things about this app is that it uses ParamTools to read the JSON files under the hood. This means that it can read links to data in other Compute Studio runs, files on GitHub, or just plain JSON. Here are some example parameters: . policy parameters: cs://PSLmodels:Tax-Brain@49779/inputs/adjustment/policy | tax-cruncher parameters: {"sage": [{"value": 25}]} | business tax parameters: {"CIT_rate": [{"value": 0.25, "year": 2021}]} | . After clicking run, three simulations will be created on Compute Studio and the app will update as soon as the simulations have finished: . . . Once they are done, the simulations are best viewed and interacted with on Compute Studio, but you can still inspect the JSON response from the Compute Studio API: . . I created this app to show that it’s possible to build apps on top of the Compute Studio API. I think PSL Stitch is a neat example of how to do this, but I am even more excited to see what others build next. . Also, this is an open source project and has lots of room for improvement. If you are interested in learning web technologies related to REST APIs and frontend development with JavaScript, then this project could be a good place to start! . Resources: . PSL Stitch | Source code | Compute Studio API Docs | .", - "url": "https://blog.pslmodels.org/demo-day-cs-api-stitch", - "relUrl": "/demo-day-cs-api-stitch", - "date": " • Mar 8, 2021" - } - - - - - ,"post17": { - "title": "Demo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher", - "content": "Check out the video: . . Show notes: . I demonstrate how to move a policy reform file from Tax-Brain to Tax-Cruncher using the Compute.Studio API. See the Demo C/S simulation linked below for text instructions that accompany the video. . Resources: . Demo C/S simulation with instructions | .", - "url": "https://blog.pslmodels.org/demo-day-taxbrain-to-taxcruncher", - "relUrl": "/demo-day-taxbrain-to-taxcruncher", - "date": " • Mar 2, 2021" - } - - - - - ,"post18": { - "title": "Demo Day: Contributing to PSL projects", - "content": ". In the most recent PSL Demo Day, I illustrate how to contribute to PSL projects. The open source nature of projects in the PSL catalog allows anyone to contribute. The modularity of the code, coupled with robust testing, means that one can bite off small pieces that help improve the models and remain confident those changes work as expected. . To begin the process of finding where to contribute to PSL projects, I advise looking through the PSL GitHub Organization to see what projects interest you. Once a project of interest is identified, looking over the open “Issues” can provide a sense of where model maintainers and users are looking for help (see especially the “Help Wanted” tags). It is also completely appropriate to create a new Issue to express interest in helping and ask for direction on where that might best be done given your experience and preferences. . When you are ready to begin to contribute to a project, you’ll want to fork and clone the GitHub repository to help you get the files on your local machine and ready for you to work with. Many PSL projects outline the detailed steps to get you up and running. For example, see the Tax-Calculator Contributor Guide, which outlines the step-by-step process for doing this and confirming that everything works as expected on your computer. . After you are set up and ready to begin modifying source code for the PSL project(s) you’re interested in contributing to, you can reference the PSL-incubating Git-Tutorial project that provides more details on the Git workflow followed by most PSL projects. . As you contribute, you may want to get more involved in the community. A couple ways to do this are to join any of the PSL community events, all of which are open to the public, and to post to the PSL Discourse Forums. These are great places to meet community members and ask questions about how and where to best contribute. . I hope this helps you get started as a PSL contributor – we look forward to getting you involved in making policy analysis better and more transparent! . Resources: . PSL Git-Tutorial | PSL community events | PSL Discourse Forums | Tax-Calculator Contributor Guide | PSL GitHub Organization | .", - "url": "https://blog.pslmodels.org/demo-day-contributing-psl", - "relUrl": "/demo-day-contributing-psl", - "date": " • Mar 2, 2021" - } - - - - - ,"post19": { - "title": "Demo Day: Running the scf and microdf Python packages in Google Colab", - "content": ". For Monday’s PSL Demo Day, I showed how to use the scf and microdf PSL Python packages from the Google Colab web-based Jupyter notebook interface. . The scf package extracts data from the Federal Reserve’s Survey of Consumer Finances, the canonical source of US wealth microdata. scf has a single function: load(years, columns) , which then returns a pandas DataFrame with the specified column(s), each record’s survey weight, and the year (when multiple years are requested). . The microdf package analyzes survey microdata, such as that returned by the scf.load function. It offers a consistent paradigm for calculating statistics like means, medians, sums, and inequality statistics like the Gini index. Most functions are structured as follows: f(df, col, w, groupby) where df is a pandas DataFrame of survey microdata, col is a column(s) name to be summarized, w is the weight column, and groupby is the column(s) to group records in before summarizing. . Using Google Colab, I showed how to use these packages to quickly calculate mean, median, and total wealth from the SCF data, without having to install any software or leave the browser. I also demonstrated how to use the groupby argument of microdf functions to show how different measures of wealth inequality have changed over time. Finally, I previewed some of what’s to come with scf and microdf : imputations, extrapolations, inflation, visualization, and documentation, to name a few priorities. . Resources: . Slides | Demo notebook in Google Colab | Simulation from the demonstration | scf GitHub repo | microdf GitHub repo | microdf documentation | .", - "url": "https://blog.pslmodels.org/demo-day-scf-microdf", - "relUrl": "/demo-day-scf-microdf", - "date": " • Jan 29, 2021" - } - - - - - ,"post20": { - "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", - "content": ". . . In this PSL Demo Day, I demonstrate how to use the open source OG-USA macroeconomic model of U.S. fiscal policy. Jason DeBacker and I (Richard Evans) have been the core maintainers of this project and repository for the last six years. This demo is organized into the following sections. The YouTube webinar linked above took place on January 11, 2021. . A brief note about value of the PSL community | Description of the OG-USA model | Using OG-USA on Compute Studio | . Brief note about the value of the PSL community . The Policy Simulation Library is a decentralized organization of open source policy models. The Policy Simulation Library GitHub organization houses many open source repositories, each of which represents a curated policy project by a diverse group of maintainers. The projects that have met the highest standards of best practices and documentation are designated as psl-cataloged , while newer projects that are in earlier stages are designated as psl-incubating . The philosophy and goal of the PSL environment is to make policy modeling open and transparent. It also allows more collaboration and cross-project contributions and interactions. . The Policy Simulation Library group has been holding these PSL Demo Day webinars since the end of 2020. The video of each webinar is available on the Policy Simulation Library YouTube channel. These videos are a great resource for learning the different models available in the PSL community, how the models interact, how to contribute to them, and what is on the horizon in their development. Also excellent in many of the PSL Demo Day webinars is a demonstration of how to use the models on the Compute Studio web application platform. . I have been a participant in and contributor to the PSL community since its inception. I love economic policy modeling. And I learned how sophisticated and complicated economic policy models can be. And any simulation can have hundreds of underlying assumptions, some of which may not be explicitly transparent. I think models that are used for public policy analysis have a philosophical imperative to be open source. This allows others to verify results and test sensitivity to assumptions. . Another strong benefit of open source modeling is that it is fundamentally apolitical. With proprietary closed-source policy models, an outside observer might criticize the results of the model based on the perceived political biases of the modeler or the sponsoring organization. With open-source models, a critic can be redirected to the underlying assumptions, structure, and content of the model. This is constructive criticism and debate that moves the science foreward. In the current polarized political environment in the U.S., open-source modeling can provide a constructive route for bipartisan cooperation and the democratization of computational modeling. Furthermore, open-source modeling and workflow encourages the widest forms of collaboration and contributions. . Description of OG-USA model . OG-USA is an open-source overlapping generations, dynamic general equilibrium, heterogeneous agent, macroeconomic model of U.S. fiscal policy. The GitHub repository for the OG-USA source code is github.com/PSLmodels/OG-USA. This repository contains all the source code and instructions for loading and running OG-USA and all of its dependencies on your local machine. We will probably do another PSL Demo Day on how to run OG-USA locally. This Demo Day webinar is about running OG-USA on the Compute Studio web application. See Section “Using OG-USA on Compute.Studio” below. . As a heterogeneous agent macroeconomic model, OG-USA allows for distributional analyses at the individual and firm level. That is, you can simulate the model and answer questions like, “How will an increase in the top three personal income tax rates affect people of different ages and income levels?” Microsimulation models can answer these types of distributional analysis questions as well. However, the difference between a macroeconomic model and a microsimulation model is that the macroeconomic models can simulate how each of those individuals and firms will respond to a policy change (e.g., lower labor supply or increased investment demand) and how those behavioral responses will add up and feed back into the macroeconomy (e.g., the effect on GDP, government revenue, government debt, interest rates, and wages). . OG-USA is a large-scale model and comprises tens of thousands of lines of code. The status of all of this code being publicly available on the internet with all collaboration and updates also public makes this an open source project. However, it is not enough to simply post one’s code. We have gone to great lengths to make in-line comments or “docstring” in the code to clarify the purpose of each function and line of code. For example, look in the OG-USA/ogusa/household.py module. The first function on line 18 is the marg_ut_cons() function. As is described in its docstring, its purpose is to “Compute the marginal utility of consumption.” . These in-code docstrings are not enough. We have also created textbook style OG-USA documentation at pslmodels.github.io/OG-USA/ using the Jupyter Book medium. This form of documentation has the advantage of being in book form and available online. It allows us to update the documentation in the open-source repository so changes and versions can be tracked. It describes the OG-USA API, OG-USA theory, and `OG-USA calibration. As with the model, this documentation is always a work in progress. But being open-source allows outside contributors to help with its updated and error checking. . One particular strength of the OG-USA model I want to highlight is its interaction with microsimulation models to incorporate information about tax incentives faced by the heterogeneous households in the model. We have interfaced OG-USA with microsimulation models in India and in the European Commission. OG-USA ‘s default for modeling the United States is to use the open-source Tax-Calculator microsimulation model, which was described by Anderson Frailey in the last Demo Day of 2020. However, DeBacker and I currently have a project in which we use OG-USA to simulate policies using the Tax Policy Center’s microsimulation model. The way OG-USA interfaces with microsimulation models to incorporate rich tax data is described in the documentation in the calibration chapter entitled, “Tax Functions”. . Using OG-USA on Compute Studio . In the demonstration, I focus on how to run experiments and simulations with OG-USA using the Compute Studio web application platform rather than installing running the model on your local machine. To use OG-USA on this web application, you will need a Compute Studio account. Once you have an account, you can start running any model available through the site. For some models, you will have to pay for the compute time, although the cost of running these models is very modest. However, all Compute Studio simulations of the OG-USA model are currently sponsored by the Open Source Economics Laboratory. This subsidy will probably run out in the next year. But we are always looking for funding for these models. . Once you are signed up and logged in to your Compute Studio account, you can go to the OG-USA model on Compute Studio at compute.studio/PSLmodels/OG-USA. The experiment that we simulated in the demonstration is available at compute.studio/PSLmodels/OG-USA/206. The description at the top of the simulation page describes the changes we made. You can look through the input page by clicking on the “Inputs” tab. We ran the model by clicking the green “Run” button at the lower left of the page. The model took about 5 hours to run, so I pre-computed the results that we discussed in the demo. The outputs of the experiment are available in the “Outputs” tab on the page. I also demonstrated how one can click the “Download Results” button at the bottom of the “Outputs” tab to download more results from the simulation. However, the full set of results is only available by installing and running the OG-USA model simulation on your local machine. . The benefits of the Compute Studio web application are that running the OG-USA model is much easier for the non-expert, and the multiple-hour computation time can be completed on a remote machine in the cloud. . Resources . PSL Demo Day YouTube webinar: “How to use OG-USA” | OG-USA on Compute Studio | Simulation from the demonstration | OG-USA GitHub repo | OG-USA documentation | Tax-Calculator GitHub repo | .", - "url": "https://blog.pslmodels.org/demo-day-how-to-use-og-usa", - "relUrl": "/demo-day-how-to-use-og-usa", - "date": " • Jan 28, 2021" - } - - - - - ,"post21": { - "title": "Demo Day: Tax-Brain", - "content": ". For this PSL demo-day I showed how to use the Tax-Brain web-application, hosted on Compute Studio, to analyze proposed individual income tax policies. Tax-Brain integrates the Tax-Calculator and Behavioral-Responses models to make running both static and dynamic analyses of the US federal income and payroll taxes simple. The web interface for the model makes it possible for anyone to run their own analyses without writing a single line of code. . We started the demo by simply walking through the interface and features of the web-app before creating our own sample reform to model. This reform, which to my knowledge does not reflect any proposals currently up for debate, included changes to the income and payroll tax rates, bringing back personal exemptions, modifying the standard deduction, and implementing a universal basic income. . While the model ran, I explained how Tax-Brain validated all of the user inputs, the data behind the model, and how the final tax liability projections are determined. We concluded by looking through the variety of tables and graphs Tax-Brain produces and how they can easily be shared with others. . Resources: . Simulation from the demonstration | Tax-Brain GitHub repo | Tax-Calculator documentation | Behavioral-Responses documentation | .", - "url": "https://blog.pslmodels.org/demo-day-tax-brain", - "relUrl": "/demo-day-tax-brain", - "date": " • Dec 23, 2020" - } - - - - - ,"post22": { - "title": "2020: A year in review", - "content": ". . This year has been one to forget! But 2020 did have its bright spots, especially in the PSL community. This post reviews some of the highlights from the year. . The Library was able to welcome two new models to the catalog in 2020: microdf and OpenFisca-UK. microdf provides a number of useful tools for use with economic survey data. OpenFisca-UK builds off the OpenFisca platform, offering a microsimulation model for tax and benefit programs in the UK. . In addition, four new models were added to the Library as incubating projects. The ui-calculator model has received a lot of attention this year in the U.S., as it provides the capability to calculate unemployment insurance benefits across U.S. states, a major mode of delivering financial relief to individuals during the COVID crisis. PCI-Outbreak directly relates to the COVID crisis, using machine learning and natural language processing to estimate the true extent of the COVID pandemic in China. The model finds that actual COVID cases are significantly higher than what official statistics claim. The COVID-MCS model considers COVID case counts and test positivity rates to measure whether or not U.S. communities are meeting certain benchmarks in controlling the spread of the disease. On a lighter note, the Git-Tutorial project provides instruction and resources for learning to use Git and GitHub, with an emphasis on the workflow used by many projects in the PSL community. . The organization surrounding the Policy Simulation Library has been bolstered in two ways. First, we have formed a relationship with the Open Collective Foundation, who is now our fiscal host. This allows PSL to accept tax deductible contributions that will support the efforts of the community. Second, we’ve formed the PSL Foundation, with an initial board that includes Linda Gibbs, Glenn Hubbard, and Jason DeBacker. . Our outreach efforts have grown in 2020 to include the regular PSL Demo Day series and this PSL Blog. Community members have also presented work with PSL models at the PyData Global Conference, the Tax Economists Forum, AEI, the Coiled Podcast, and the Virtual Global Village Podcast. New users will also find a better experience learning how to use and contribute to PSL models as many PSL models have improved their documentation through the use of Jupyter Book (e.g., see the Tax-Calculator documentation). . We love seeing the community around open source policymaking expand and are proud that PSL models have been used for important policy analysis in 2020, including analyzing economic policy responses to the pandemic and the platforms of presidential candidates. We look forward to more progress in 2021 and welcome you to join the effort as a contributor, financially or as an open source developer. . Best wishes from PSL for a happy and healthy new year! . Resources: . PSL Twitter Feed | PSL YouTube | PSL on Open Collective | .", - "url": "https://blog.pslmodels.org/2020-year-in-review", - "relUrl": "/2020-year-in-review", - "date": " • Dec 23, 2020" - } - - - - - ,"post23": { - "title": "Demo Day: Cost-of-Capital-Calculator Web Application", - "content": ". In the PSL Demo Day video linked above, I demonstrate how to use the Cost-of-Capital-Calculator (CCC) web application on Compute-Studio. CCC computes various measures of the impact of the tax system on business investment. These include the Hall-Jorgenson cost of capital, marginal effective tax rates, and effective average tax rates (following the methodology of Devereux and Griffith (1999)). . I begin by illustrating the various parameters available for the user to manipulate. These include parameters of the business and individual income tax systems, as well as parameters representing economic assumptions (e.g., inflation rates and nominal interest rates) and parameters dictating financial and accounting policy (e.g., the fraction of financing using debt). Note that all default values for tax policy parameters represent the “baseline policy”, which is defined as the current law policy in the year being analyzed (which itself is a parameter the user can change). Other parameters are estimated using historical data following the methodology of CBO (2014). . Next, I change a few parameters and run the model. In this example, I move the corporate income tax rate up to 28% and lower bonus depreciation for assets with depreciable lives of 20 years or less to 50%. . Finally, I discuss how to interpret output. The web app returns a table and three figures summarizing marginal effective total tax rates on new investments. This selection of output helps give one a sense of the the overall changes, as well as effects across asset types, industries, and type of financing. For the full model output, one can click on “Download Results”. Doing so will download four CSV files contain several measures of the impact of the tax system on investment for very fine asset and industry categories. Users can take these files and create tables and visualizations relevant to their own use case. . Please take the model for a spin and simulate your own reform. If you have questions, comments, or suggestions, please let me know on the PSL Discourse (non-technical questions) or by opening an issue in the CCC GitHub repository (technical questions). . Resources: . Compute Studio simulation used in the demonstration | Cost-of-Capital-Calculator web app | Cost-of-Capital-Calculator documentation | Cost-of-Capital-Calculator GitHub repository | .", - "url": "https://blog.pslmodels.org/demo-day-cost-of-capital-calculator", - "relUrl": "/demo-day-cost-of-capital-calculator", - "date": " • Dec 3, 2020" - } - - - - - ,"post24": { - "title": "Demo Day: Tax-Cruncher", - "content": ". For the Demo Day on November 16, I showed how to calculate a taxpayer’s liabilities under current law and under a policy reform with Tax-Cruncher. The Tax-Cruncher web application takes two sets of inputs: a taxpayer’s demographic and financial information and the provisions of a tax reform. . For the first Demo Day example (3:50), we looked at how eliminating the state and local tax (SALT) deduction cap and applying payroll tax to earnings above $400,000 would affect a high earner. In particular, our hypothetical filer had $500,000 in wages, $100,000 in capital gains, and $100,000 in itemizable expenses. You can see the results at Compute Studio simulation #634. . For the second example (17:50), we looked at how expanding the Earned Income Tax Credit (EITC) and Child Tax Credit would impact a family with $45,000 in wages and two young children. You can see the results at Compute Studio simulation #636. . Resources: . Tax-Cruncher | Tax-Cruncher-Biden | .", - "url": "https://blog.pslmodels.org/demo-day-tax-cruncher", - "relUrl": "/demo-day-tax-cruncher", - "date": " • Nov 23, 2020" - } - - - - - ,"post25": { - "title": "Demo Day: Building policy reform files", - "content": "Check out the video: . We will host Demo Days every two weeks until the end of the year. You can see our schedule on our events page. . . Show notes: . I demonstrate how to build policy reform files using the Tax-Brain webapp on Compute Studio. (Useful links below.) This is an introductory lesson that ends with a cliffhanger. We don’t run the model. But we do generate an individual income and payroll tax reform file that is compatible with a range of policy simulation models and analytic tools, some designed for policy decision makers, others for taxpayers and benefits recipients interested in assessing their own circumstances. . Beyond individual and payroll tax analysis, the reform file can be used with models that assess pass-through and corporate taxation of businesses, as well as a variety of income benefit programs. A wide range of use cases will occupy future events. . Resources: . Demo C/S simulation | IRS Form 1040 | PSL Catalog | PSL Events | .", - "url": "https://blog.pslmodels.org/demo-day-creating-reform-files", - "relUrl": "/demo-day-creating-reform-files", - "date": " • Nov 18, 2020" - } - - - - - ,"post26": { - "title": "Introducing the PSL Blog", - "content": "Our mission at the Policy Simulation Library is to improve public policy by opening up models and data preparation routines for policy analysis. To support and showcase our diverse community of users and developers, we engage across several mediums: a monthly newsletter, a Q&A forum, (now-virtual) meetups, our Twitter feed, our YouTube channel, documentation for models in our catalog, and of course, issues and pull requests on GitHub. . Today, we’re adding a new medium: the PSL Blog. We’ll use this space to share major updates on our catalog, provide tutorials, and summarize events or papers that involve our models. . If you’d like to share your work on our blog, or to suggest content, drop me a line. To follow along, add the PSL blog’s RSS feed or subscribe to our newsletter. . Happy reading, . Max Ghenis . Editor, PSL Blog .", - "url": "https://blog.pslmodels.org/introducing-psl-blog", - "relUrl": "/introducing-psl-blog", - "date": " • Nov 6, 2020" - } - - - - - - - - - ,"page1": { - "title": "About", - "content": "The Policy Simulation Library (PSL) is a collection of models and other software for public-policy decisionmaking. PSL is developed by independent projects that meet standards for transparency and accessibility. The PSL community encourages collaborative contribution and makes the tools it develops accessible to a diverse group of users.1 . This website is powered by fastpages, a blogging platform that natively supports Jupyter notebooks in addition to other formats. ↩ . |", - "url": "https://blog.pslmodels.org/about/", - "relUrl": "/about/", - "date": "" - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ,"page12": { - "title": "", - "content": "Sitemap: {{ “sitemap.xml” | absolute_url }} | .", - "url": "https://blog.pslmodels.org/robots.txt", - "relUrl": "/robots.txt", - "date": "" - } - - - -} \ No newline at end of file diff --git a/assets/js/search.js b/assets/js/search.js deleted file mode 100755 index 6dcdcf7..0000000 --- a/assets/js/search.js +++ /dev/null @@ -1,296 +0,0 @@ -// from https://github.com/pmarsceill/just-the-docs/blob/master/assets/js/just-the-docs.js#L47 - -(function (jtd, undefined) { - -// Event handling - -jtd.addEvent = function(el, type, handler) { - if (el.attachEvent) el.attachEvent('on'+type, handler); else el.addEventListener(type, handler); -} -jtd.removeEvent = function(el, type, handler) { - if (el.detachEvent) el.detachEvent('on'+type, handler); else el.removeEventListener(type, handler); -} -jtd.onReady = function(ready) { - // in case the document is already rendered - if (document.readyState!='loading') ready(); - // modern browsers - else if (document.addEventListener) document.addEventListener('DOMContentLoaded', ready); - // IE <= 8 - else document.attachEvent('onreadystatechange', function(){ - if (document.readyState=='complete') ready(); - }); -} - -// Show/hide mobile menu - -// function initNav() { -// const mainNav = document.querySelector('.js-main-nav'); -// const pageHeader = document.querySelector('.js-page-header'); -// const navTrigger = document.querySelector('.js-main-nav-trigger'); - -// jtd.addEvent(navTrigger, 'click', function(e){ -// e.preventDefault(); -// var text = navTrigger.innerText; -// var textToggle = navTrigger.getAttribute('data-text-toggle'); - -// mainNav.classList.toggle('nav-open'); -// pageHeader.classList.toggle('nav-open'); -// navTrigger.classList.toggle('nav-open'); -// navTrigger.innerText = textToggle; -// navTrigger.setAttribute('data-text-toggle', text); -// textToggle = text; -// }) -// } - - -// Site search - -function initSearch() { - var request = new XMLHttpRequest(); - request.open('GET', '/assets/js/search-data.json', true); - - request.onload = function(){ - if (request.status >= 200 && request.status < 400) { - // Success! - var data = JSON.parse(request.responseText); - - - lunr.tokenizer.separator = /[\s\-/]+/ - - - var index = lunr(function () { - this.ref('id'); - this.field('title', { boost: 200 }); - this.field('content', { boost: 2 }); - this.field('url'); - this.metadataWhitelist = ['position'] - - for (var i in data) { - this.add({ - id: i, - title: data[i].title, - content: data[i].content, - url: data[i].url - }); - } - }); - - searchResults(index, data); - } else { - // We reached our target server, but it returned an error - console.log('Error loading ajax request. Request status:' + request.status); - } - }; - - request.onerror = function(){ - // There was a connection error of some sort - console.log('There was a connection error'); - }; - - request.send(); - - function searchResults(index, data) { - var index = index; - var docs = data; - var searchInput = document.querySelector('.js-search-input'); - var searchResults = document.querySelector('.js-search-results'); - - function hideResults() { - searchResults.innerHTML = ''; - searchResults.classList.remove('active'); - } - - jtd.addEvent(searchInput, 'keydown', function(e){ - switch (e.keyCode) { - case 38: // arrow up - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - active.classList.remove('active'); - if (active.parentElement.previousSibling) { - var previous = active.parentElement.previousSibling.querySelector('.search-result'); - previous.classList.add('active'); - } - } - return; - case 40: // arrow down - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - if (active.parentElement.nextSibling) { - var next = active.parentElement.nextSibling.querySelector('.search-result'); - active.classList.remove('active'); - next.classList.add('active'); - } - } else { - var next = document.querySelector('.search-result'); - if (next) { - next.classList.add('active'); - } - } - return; - case 13: // enter - e.preventDefault(); - var active = document.querySelector('.search-result.active'); - if (active) { - active.click(); - } else { - var first = document.querySelector('.search-result'); - if (first) { - first.click(); - } - } - return; - } - }); - - jtd.addEvent(searchInput, 'keyup', function(e){ - switch (e.keyCode) { - case 27: // When esc key is pressed, hide the results and clear the field - hideResults(); - searchInput.value = ''; - return; - case 38: // arrow up - case 40: // arrow down - case 13: // enter - e.preventDefault(); - return; - } - - hideResults(); - - var input = this.value; - if (input === '') { - return; - } - - var results = index.query(function (query) { - var tokens = lunr.tokenizer(input) - query.term(tokens, { - boost: 10 - }); - query.term(tokens, { - wildcard: lunr.Query.wildcard.TRAILING - }); - }); - - if (results.length > 0) { - searchResults.classList.add('active'); - var resultsList = document.createElement('ul'); - resultsList.classList.add('search-results-list'); - searchResults.appendChild(resultsList); - - for (var i in results) { - var result = results[i]; - var doc = docs[result.ref]; - - var resultsListItem = document.createElement('li'); - resultsListItem.classList.add('search-results-list-item'); - resultsList.appendChild(resultsListItem); - - var resultLink = document.createElement('a'); - resultLink.classList.add('search-result'); - resultLink.setAttribute('href', doc.url); - resultsListItem.appendChild(resultLink); - - var resultTitle = document.createElement('div'); - resultTitle.classList.add('search-result-title'); - resultTitle.innerText = doc.title; - resultLink.appendChild(resultTitle); - - var resultRelUrl = document.createElement('span'); - resultRelUrl.classList.add('search-result-rel-date'); - resultRelUrl.innerText = doc.date; - resultTitle.appendChild(resultRelUrl); - - var metadata = result.matchData.metadata; - var contentFound = false; - for (var j in metadata) { - if (metadata[j].title) { - var position = metadata[j].title.position[0]; - var start = position[0]; - var end = position[0] + position[1]; - resultTitle.innerHTML = doc.title.substring(0, start) + '' + doc.title.substring(start, end) + '' + doc.title.substring(end, doc.title.length)+''+doc.date+''; - - } else if (metadata[j].content && !contentFound) { - contentFound = true; - - var position = metadata[j].content.position[0]; - var start = position[0]; - var end = position[0] + position[1]; - var previewStart = start; - var previewEnd = end; - var ellipsesBefore = true; - var ellipsesAfter = true; - for (var k = 0; k < 3; k++) { - var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2); - var nextDot = doc.content.lastIndexOf('.', previewStart - 2); - if ((nextDot > 0) && (nextDot > nextSpace)) { - previewStart = nextDot + 1; - ellipsesBefore = false; - break; - } - if (nextSpace < 0) { - previewStart = 0; - ellipsesBefore = false; - break; - } - previewStart = nextSpace + 1; - } - for (var k = 0; k < 10; k++) { - var nextSpace = doc.content.indexOf(' ', previewEnd + 1); - var nextDot = doc.content.indexOf('.', previewEnd + 1); - if ((nextDot > 0) && (nextDot < nextSpace)) { - previewEnd = nextDot; - ellipsesAfter = false; - break; - } - if (nextSpace < 0) { - previewEnd = doc.content.length; - ellipsesAfter = false; - break; - } - previewEnd = nextSpace; - } - var preview = doc.content.substring(previewStart, start); - if (ellipsesBefore) { - preview = '... ' + preview; - } - preview += '' + doc.content.substring(start, end) + ''; - preview += doc.content.substring(end, previewEnd); - if (ellipsesAfter) { - preview += ' ...'; - } - - var resultPreview = document.createElement('div'); - resultPreview.classList.add('search-result-preview'); - resultPreview.innerHTML = preview; - resultLink.appendChild(resultPreview); - } - } - } - } - }); - - // jtd.addEvent(searchInput, 'blur', function(){ - // setTimeout(function(){ hideResults() }, 300); - // }); - } - } - -// function pageFocus() { -// var mainContent = document.querySelector('.js-main-content'); -// mainContent.focus(); -// } - - // Document ready - - jtd.onReady(function(){ - // initNav(); - // pageFocus(); - if (typeof lunr !== 'undefined') { - initSearch(); - } - }); - - })(window.jtd = window.jtd || {}); \ No newline at end of file diff --git a/assets/js/vendor/lunr.min.js b/assets/js/vendor/lunr.min.js deleted file mode 100755 index 34b279d..0000000 --- a/assets/js/vendor/lunr.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6 - * Copyright (C) 2019 Oliver Nightingale - * @license MIT - */ -!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.6",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg deleted file mode 100755 index 2f54ade..0000000 --- a/assets/minima-social-icons.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/categories/index.html b/categories/index.html deleted file mode 100755 index 336c7a1..0000000 --- a/categories/index.html +++ /dev/null @@ -1,721 +0,0 @@ -
- - -

Contents

- - - - - - - - -

announcements

- - - - - - -

apps

- - - - - - -

benefits

- - - - - - - - - -

business-taxation

- - - - - - - - - -

compute-studio

- - - - - - - - - -

corporate-income-tax

- - - - - - - - - -

cost-of-capital-calculator

- - - - - - - - - -

data

- - - - - - -

data-fusion

- - - - - - -

demo-days

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

documentation

- - - - - - -

getting-started

- - - - - - -

GH-actions

- - - - - - -

git

- - - - - - - - - -

github

- - - - - - - - - -

individual-income-tax

- - - - - - - - - - - - - - - -

jupyter-book

- - - - - - -

macroeconomics

- - - - - - -

microdf

- - - - - - -

OG-USA

- - - - - - -

open-source

- - - - - - -

overlapping-generations

- - - - - - -

policy-simulation-library

- - - - - - - - - -

PSL

- - - - - - - - - - - - -

psl

- - - - - - - - - - - - - - - -

PSL-Foundation

- - - - - - -

psl-foundation

- - - - - - - - - - - - - - - -

python

- - - - - - - - - -

Python

- - - - - - -

R

- - - - - - -

scf

- - - - - - -

synthimpute

- - - - - - -

tax

- - - - - - -

tax-brain

- - - - - - - - - - - - -

Tax-Calculator

- - - - - - -

tax-calculator

- - - - - - - - - -

tax-cruncher

- - - - - - -

taxes

- - - - - - - - - -

unit-testing

- - - - - - -

us

- - - - - - - - - - - - - - - - - - -

workflow

- - - - - - -

Workshop

- - - - - - - - - - -
\ No newline at end of file diff --git a/demo-day-cambridge-cash-assistance.html b/demo-day-cambridge-cash-assistance.html deleted file mode 100755 index 3f575e6..0000000 --- a/demo-day-cambridge-cash-assistance.html +++ /dev/null @@ -1,60 +0,0 @@ -
- -
-

Demo Day: How does targeted cash assistance affect incentives to work?

How a proposed program in Cambridge, Massachusetts would affect poverty and incentives.

- - -

- - demo-days -   - - benefits -   - - us - - -

- - -
- -
-
    -
-
- -
- -
- -

In this week’s Demo Day, I shared my paper published at the Center for Growth and Opportunity in June. -“How does targeted cash assistance affect incentives to work?” analyzed a program Mayor Sumbul Siddiqui proposed in Cambridge, Massachusetts to provide $500 per month for 18 months to all families with dependents and income below 200% of the poverty line.

- -

Targeted programs like these are common in guaranteed income pilots, and in some enacted policies, and I find that it would cost-effectively reduce poverty: if expanded to Massachusetts, it would cost $1.2 billion per year and cut child poverty 42%.

- -

However, that targeting comes at a cost. -Using the OpenFisca US microsimulation model (supported by the Center for Growth and Opportunity and cataloged by the Policy Simulation Library), I find that the program would deepen an existing welfare cliff at 200% of the poverty line. -For example, a family of four would lose over $19,000 total—$9,000 from the cash assistance and $10,000 from other benefits—once they earn a dollar above 200% of the poverty line (about $55,000). -To recover those lost benefits, they would have to earn an additional $26,000, a range I call the “earnings dead zone”.

- -

My presentation reviews these trends in both slides and the PolicyEngine US app for computing the impacts of tax and benefit policy. -For example, I show how repealing the SNAP emergency allotment would smooth out welfare cliffs, while reducing resources available to low-income families, and how a universal child allowance avoids work disincentives while less cost-effectively reducing poverty.

- -

Policymakers face trade-offs between equity and efficiency, and typically labor supply responses consider marginal tax rates. -With their infinite marginal tax rates, welfare cliffs are a less explored area, even though they surface in several parts of the tax and benefit system. -This paper makes a start, but more research is yet to be done.

- -
-
\ No newline at end of file diff --git a/demo-day-ccc-international.html b/demo-day-ccc-international.html deleted file mode 100755 index 693bcf2..0000000 --- a/demo-day-ccc-international.html +++ /dev/null @@ -1,72 +0,0 @@ -
- -
-

Demo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator

Using Cost-of-Capital-Calculator with data on international business tax policies.

- - -

- - demo-days -   - - cost-of-capital-calculator -   - - business-taxation -   - - corporate-income-tax -   - - taxes - - -

- - -
- -
-
    -
-
- -
- -
- -

In the Demo Day video shared here, I show how to use open source tools to analyze international corporate tax competitiveness. -The two main tools illustrated are the Cost-of-Capital-Calculator (CCC), a model to compute measures of the tax burden on new investments, and Tax Foundation’s International Tax Competitiveness Index (ITCI).

- -

Tax Foundation has made many helpful resources available online. -Their measures of international business tax policy are a great example of this. -The ICTI outputs and inputs are all well documented, with source code to reproduce results available on GitHub.

- -

I plug Tax Foundation’s country-by-country data into CCC functions using it’s Python API. -Because CCC is designed to flexibly take array or scalar data, operating on rows of tabular data, such as that in the ITCI, is relatively straight-forward. -The Google Colab notebook I walk through in this Demo Day, can be a helpful example to follow if you’d like to do something similar to this with the Tax Foundation data - or your own data source. -From the basic building blocks there (reading in data, calling CCC functions), you can extend the analysis in a number of ways. -For example adding additional years of data (Tax Foundation posts their data back to 2014), modifying economic assumptions, or creating counter-factual policy experiments across sets of countries.

- -

If you find this example useful, or have questions or suggestions about this type of analysis, please feel free to reach out to me.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-constructing-tax-data-for-the-50-states.html b/demo-day-constructing-tax-data-for-the-50-states.html deleted file mode 100755 index 1d178aa..0000000 --- a/demo-day-constructing-tax-data-for-the-50-states.html +++ /dev/null @@ -1,75 +0,0 @@ -
- -
-

Demo Day: Constructing tax data for the 50 states

A new dataset to facilitate state-level analysis of federal tax reforms.

- - -

- - demo-days -   - - tax -   - - data -   - - us - - -

- - -
- -
-
    -
-
- -
- -
- -

Federal income tax reform impacts can vary dramatically across states. -The cap on state and local tax deductions (SALT) is a well-known example, but other policies also have differential effects because important tax-relevant features vary across states such as the income distribution, relative importance of wage, business, and retirement income, and family size and structure. -Analyzing how policy impacts vary across states requires data that faithfully represent the characteristics of the 50 states.

- -

This Demo Day described a method and software for constructing state weights for microdata files that (1) come as close as possible to targets for individual states, while (2) ensuring that the state weights for each tax record sum to its national weight. -The latter objective ensures that the sum of state impacts for a tax reform equals the national impact.

- -

This project developed state weights for a data file with more than 200,000 microdata records. -The weighted data file comes within 0.01% of desired values for more than 95% of approximately 10,000 targets.

- -

The goal of the slides and video was to enable a motivated Python-skilled user of the PSL TaxData and Tax-Calculator projects to reproduce project results: 50-state weights for TaxData’s primary output, the puf.csv microdata file (based primarily on an IRS Public Use File), using early-stage open-source software developed in the project. -Thus, the demo is technical and focused on nuts and bolts.

- -

The methods and software can also be used to:

-
    -
  • Create geographic-area weights for other microdata files
  • -
  • Apportion state weights to Congressional Districts or counties, if suitable targets can be developed
  • -
  • Create state-specific microdata files suitable for modeling state income taxes
  • -
- -

The main topics covered in the slides and video are:

-
    -
  • Creating national and state targets from IRS summary data
  • -
  • Preparing a national microdata file for state weighting
  • -
  • Approaches to constructing geographic weights
  • -
  • Running software that implements the Poisson-modeling approach used in the project
  • -
  • Measures of quality of the results
  • -
- -
-
\ No newline at end of file diff --git a/demo-day-contributing-psl.html b/demo-day-contributing-psl.html deleted file mode 100755 index 4aec1ff..0000000 --- a/demo-day-contributing-psl.html +++ /dev/null @@ -1,75 +0,0 @@ -
- -
-

Demo Day: Contributing to PSL projects

How to help software projects in the Policy Simulation Library.

- - -

- - demo-days -   - - PSL -   - - git -   - - github - - -

- - -
- -
-
    -
-
- -
- -
- -

In the most recent PSL Demo Day, I illustrate how to contribute to PSL projects. - The open source nature of projects in the PSL catalog allows anyone to contribute. - The modularity of the code, coupled with robust testing, means that one can bite off small pieces that help improve the models and remain confident those changes work as expected.

- -

To begin the process of finding where to contribute to PSL projects, I advise looking through the PSL GitHub Organization to see what projects interest you. -Once a project of interest is identified, looking over the open “Issues” can provide a sense of where model maintainers and users are looking for help (see especially the “Help Wanted” tags). -It is also completely appropriate to create a new Issue to express interest in helping and ask for direction on where that might best be done given your experience and preferences.

- -

When you are ready to begin to contribute to a project, you’ll want to fork and clone the GitHub repository to help you get the files on your local machine and ready for you to work with. -Many PSL projects outline the detailed steps to get you up and running. -For example, see the Tax-Calculator Contributor Guide, which outlines the step-by-step process for doing this and confirming that everything works as expected on your computer.

- -

After you are set up and ready to begin modifying source code for the PSL project(s) you’re interested in contributing to, you can reference the PSL-incubating Git-Tutorial project that provides more details on the Git workflow followed by most PSL projects.

- -

As you contribute, you may want to get more involved in the community. -A couple ways to do this are to join any of the PSL community events, all of which are open to the public, and to post to the PSL Discourse Forums. -These are great places to meet community members and ask questions about how and where to best contribute.

- -

I hope this helps you get started as a PSL contributor – we look forward to getting you involved in making policy analysis better and more transparent!

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-cost-of-capital-calculator.html b/demo-day-cost-of-capital-calculator.html deleted file mode 100755 index 367b0bc..0000000 --- a/demo-day-cost-of-capital-calculator.html +++ /dev/null @@ -1,76 +0,0 @@ -
- -
-

Demo Day: Cost-of-Capital-Calculator Web Application

Computing the impact of taxes on business investment incentives under alternative policy scenarios.

- - -

- - demo-days -   - - cost-of-capital-calculator -   - - business-taxation -   - - corporate-income-tax - - -

- - -
- -
-
    -
-
- -
- -
- -

In the PSL Demo Day video linked above, I demonstrate how to use the Cost-of-Capital-Calculator (CCC) web application on Compute-Studio. -CCC computes various measures of the impact of the tax system on business investment. -These include the Hall-Jorgenson cost of capital, marginal effective tax rates, and effective average tax rates (following the methodology of Devereux and Griffith (1999)).

- -

I begin by illustrating the various parameters available for the user to manipulate. -These include parameters of the business and individual income tax systems, as well as parameters representing economic assumptions (e.g., inflation rates and nominal interest rates) and parameters dictating financial and accounting policy (e.g., the fraction of financing using debt). -Note that all default values for tax policy parameters represent the “baseline policy”, which is defined as the current law policy in the year being analyzed (which itself is a parameter the user can change). -Other parameters are estimated using historical data following the methodology of CBO (2014).

- -

Next, I change a few parameters and run the model. -In this example, I move the corporate income tax rate up to 28% and lower bonus depreciation for assets with depreciable lives of 20 years or less to 50%.

- -

Finally, I discuss how to interpret output. -The web app returns a table and three figures summarizing marginal effective total tax rates on new investments. -This selection of output helps give one a sense of the the overall changes, as well as effects across asset types, industries, and type of financing. -For the full model output, one can click on “Download Results”. -Doing so will download four CSV files contain several measures of the impact of the tax system on investment for very fine asset and industry categories. -Users can take these files and create tables and visualizations relevant to their own use case.

- -

Please take the model for a spin and simulate your own reform. -If you have questions, comments, or suggestions, please let me know on the PSL Discourse (non-technical questions) or by opening an issue in the CCC GitHub repository (technical questions).

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-creating-reform-files.html b/demo-day-creating-reform-files.html deleted file mode 100755 index 13bf02f..0000000 --- a/demo-day-creating-reform-files.html +++ /dev/null @@ -1,61 +0,0 @@ -
- -
-

Demo Day: Building policy reform files

The first in Policy Simulation Library's new live demo series describes specifying tax reforms.

- - -

- - demo-days - - -

- - -
- -
-
    -

Check out the video:

- -
- -
- -

We will host Demo Days every two weeks until the end of the year. -You can see our schedule on our events page.

- -
- -

Show notes:

- -

I demonstrate how to build policy reform files using the Tax-Brain webapp on Compute Studio. -(Useful links below.) -This is an introductory lesson that ends with a cliffhanger. -We don’t run the model. -But we do generate an individual income and payroll tax reform file that is compatible with a range of policy simulation models and analytic tools, some designed for policy decision makers, others for taxpayers and benefits recipients interested in assessing their own circumstances.

- -

Beyond individual and payroll tax analysis, the reform file can be used with models that assess pass-through and corporate taxation of businesses, as well as a variety of income benefit programs. -A wide range of use cases will occupy future events.

- -

Resources:

- - - -
-
\ No newline at end of file diff --git a/demo-day-cs-api-stitch.html b/demo-day-cs-api-stitch.html deleted file mode 100755 index d506895..0000000 --- a/demo-day-cs-api-stitch.html +++ /dev/null @@ -1,83 +0,0 @@ -
- -
-

Demo Day: Stitching together apps on Compute Studio

Creating an app with the Compute Studio API.

- - -

- - demo-days -   - - PSL - - -

- - -
- -
-
    -
-
- -
- -
- -

In Demo Day 8, I talked about connecting multiple apps on Compute Studio with PSL Stitch. The source code for PSL stitch can be found in this repository.

- -

Stitch is composed of three components:

- -
    -
  • A python package that can be run like a normal Python package.
  • -
  • A RESTful API built with FastAPI that is called remotely to create simulations on Compute Studio.
  • -
  • A GUI built with ReactJS that makes calls to the REST API to create and monitor simulations.
  • -
- -

One of the cool things about this app is that it uses ParamTools to read the JSON files under the hood. This means that it can read links to data in other Compute Studio runs, files on GitHub, or just plain JSON. Here are some example parameters:

- -
    -
  • policy parameters: cs://PSLmodels:Tax-Brain@49779/inputs/adjustment/policy -
  • -
  • tax-cruncher parameters: {"sage": [{"value": 25}]} -
  • -
  • business tax parameters: {"CIT_rate": [{"value": 0.25, "year": 2021}]} -
  • -
- -

After clicking run, three simulations will be created on Compute Studio and the app will update as soon as the simulations have finished:

- -

Getting started

- -

CS Simulations

- -

Once they are done, the simulations are best viewed and interacted with on Compute Studio, but you can still inspect the JSON response from the Compute Studio API:

- -

Simulation Complete

- -

I created this app to show that it’s possible to build apps on top of the Compute Studio API. I think PSL Stitch is a neat example of how to do this, but I am even more excited to see what others build next.

- -

Also, this is an open source project and has lots of room for improvement. If you are interested in learning web technologies related to REST APIs and frontend development with JavaScript, then this project could be a good place to start!

- -

Resources:

- - - -
-
\ No newline at end of file diff --git a/demo-day-cs-auto-deploy.html b/demo-day-cs-auto-deploy.html deleted file mode 100755 index c13206b..0000000 --- a/demo-day-cs-auto-deploy.html +++ /dev/null @@ -1,106 +0,0 @@ -
- -
-

Demo Day: Deploying apps on Compute Studio

How to deploy apps on Compute Studio using the new automated deployments feature.

- - -

- - demo-days -   - - policy-simulation-library -   - - compute-studio - - -

- - -
- -
-
- -
- -
- -
- -

Compute Studio (C/S) is a platform for publishing and sharing computational models and data visualizations. In this demo day, I show how to publish your own project on C/S using the new automated deployments feature. You can find an in depth guide to publishing on C/S -in the developer docs.

- -

C/S supports two types of projects: models and data visualizations. Models are fed some inputs and return a result. Data visualizations are web servers backed by popular open-source libraries like Bokeh, Dash, or Streamlit. Models are good for long-running processes and producing archivable results that can be shared and returned to easily. Data visualizations are good for highly interactive and custom user experiences.

- -

Now that you’ve checked out the developer docs and set up your model or data-viz, you can head over to the C/S publishing page https://compute.studio/new/ to publish your project. Note that this page is still very much under construction and may look different in a few weeks.

- -

Publish page

- -

Next, you will be sent to the second stage in the publish flow where you will provide more details on how to connect your project on C/S:

- -

Connect Project page

- -

Clicking “Connect App” will take you to the project home page:

- -

Project home page

- -

Go to the “Settings” button in the top-right corner and this will take you to the project dashboard where you can modify everything from the social preview of your project to the amount of compute resources it needs:

- -

Project dashboard

- -

The “Builds” link in the sidebar will take you to the builds dashboard where you can create your first build:

- -

Build history dashboard

- -

It’s time to create the first build. You can do so by clicking “New Build”. This will take you to the build status page. While the build is being scheduled, the page will look like this:

- -

Build scheduled page

- -

You can click the “Build History” link and it will show that the build has been started:

- -

Build history dashboard

- -

The build status page should be updated at this point and will look something like this:

- -

Build status page

- -

C/S automated deployments are built on top of Github Actions. Unfortunately, the logs in Github Actions are not available through the Github API until after the workflow is completely finished. The build status dashboard will update as the build progresses and once it’s done, you will have full access to the logs from the build. These will contain outputs from installing your project and the outputs from your project’s tests.

- -

In this case, the build failed. We can inspect the logs to see that an import error caused the failure:

- -

Build failed status page

- -

Build failed status page with logs

- -

I pushed an update to my fork of Tax-Cruncher on Github and restarted the build by clicking “Failure. Start new Build”. The next build succeeded and we can click “Release” to publish the project:

- -

Build status page success

- -

The builds dashboard now shows the two builds:

- -

Updated build history page

- -

Finally, let’s go run our new model:

- -

Run project page

- -

It may take a few seconds for the page to load. This is because the model code and all of its dependencies are being loaded onto the C/S servers for the first time:

- -

Run project page with inputs form

- -

The steps for publishing a data visualization are very similar. The main idea is that you tell C/S what Python file your app lives in and C/S will know how to run it given your data visualization technology choice.

- -
-
\ No newline at end of file diff --git a/demo-day-github.html b/demo-day-github.html deleted file mode 100755 index 13c5fdc..0000000 --- a/demo-day-github.html +++ /dev/null @@ -1,96 +0,0 @@ -
- -
-

Demo Day: Getting Started with GitHub

The basics of forking and cloning repositories and working on branches.

- - -

- - demo-days -   - - github -   - - git -   - - workflow -   - - getting-started - - -

- - -
- -
-
    -
-
- -
- -
- -

Git and GitHub often present themselves as barriers to entry to would-be contributors to PSL projects, even for those who are otherwise experienced with policy modeling. -But these tools are critical to collaboration on open source projects. -In the Demo Day video linked above, I cover some of the basics to get set up and begin contributing to an open source project.

- -

There are four steps I outline:

-
    -
  1. Create a “fork” of the repository you are interested in. -A fork is a copy of the source code that resides on GitHub (i.e., in the cloud). -A fork gives you control over a copy of the source code. You will be able to merge in changes to the code on this fork, even if you don’t have permissions to do so with the original repository.
  2. -
  3. Clone” the fork. -Cloning will download a copy of the source code from your fork onto your local machine. -But cloning is more than just downloading the source code. -It will include the version history of the code and automatically create a link between the local files and the remote files on your fork.
  4. -
  5. Configure your local files to talk to both your fork (which has a default name of origin) and the original repository you forked from (which typically has the default name of upstream). -Do this by using your command prompt or terminal to navigate to the directory you just cloned. -From there, run: -
    -
    git remote add upstream URL_to_original_repo.git
    -
    -

    And check that this worked by giving the command:

    -
    -
    git remote -v
    -
    -
  6. -
- -

If things worked, you should see URLs to your fork and the upstream repository with “(fetch)” and “(push)” by them -More info on this is in the Git docs.

- -
    -
  1. Now that you have copies of the source code on your fork and on your local machine, you are ready to begin contributing. -As you make changes to the source code, you’ll want to work on development branches. -Branches are copies of the code. Ideally, you keep your “main” (or “master”) branch clean (i.e., your best version of the code) and develop the code on branches. -When you’ve completed the development work (e.g., adding a new feature) you will them merge this into the “main” branch.
  2. -
- -

I hope this helps you get started contributing to open source projects. -Git and GitHub are valuable tools and there is lots more to learn, but these basics will get you going. -For more information, see the links below. -If you want to get started working with a project in the Library, feel free to reach out to me through the relevant repo (@jdebacker on GitHub) or drop into a PSL Community Call (dates on the PSL Calendar).

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-how-to-use-og-usa.html b/demo-day-how-to-use-og-usa.html deleted file mode 100755 index 37c8fe1..0000000 --- a/demo-day-how-to-use-og-usa.html +++ /dev/null @@ -1,106 +0,0 @@ -
- -
-

Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy

How to model the macroeconomic effects of tax reform with a web app.

- - -

- - demo-days -   - - OG-USA -   - - Tax-Calculator -   - - open-source -   - - policy-simulation-library -   - - compute-studio -   - - us - - -

- - -
- -
-

- -
- -
- -
- -
- -

In this PSL Demo Day, I demonstrate how to use the open source OG-USA macroeconomic model of U.S. fiscal policy. Jason DeBacker and I (Richard Evans) have been the core maintainers of this project and repository for the last six years. This demo is organized into the following sections. The YouTube webinar linked above took place on January 11, 2021.

- - - -

Brief note about the value of the PSL community

- -

The Policy Simulation Library is a decentralized organization of open source policy models. The Policy Simulation Library GitHub organization houses many open source repositories, each of which represents a curated policy project by a diverse group of maintainers. The projects that have met the highest standards of best practices and documentation are designated as psl-cataloged , while newer projects that are in earlier stages are designated as psl-incubating . The philosophy and goal of the PSL environment is to make policy modeling open and transparent. It also allows more collaboration and cross-project contributions and interactions.

- -

The Policy Simulation Library group has been holding these PSL Demo Day webinars since the end of 2020. The video of each webinar is available on the Policy Simulation Library YouTube channel. These videos are a great resource for learning the different models available in the PSL community, how the models interact, how to contribute to them, and what is on the horizon in their development. Also excellent in many of the PSL Demo Day webinars is a demonstration of how to use the models on the Compute Studio web application platform.

- -

I have been a participant in and contributor to the PSL community since its inception. I love economic policy modeling. And I learned how sophisticated and complicated economic policy models can be. And any simulation can have hundreds of underlying assumptions, some of which may not be explicitly transparent. I think models that are used for public policy analysis have a philosophical imperative to be open source. This allows others to verify results and test sensitivity to assumptions.

- -

Another strong benefit of open source modeling is that it is fundamentally apolitical. With proprietary closed-source policy models, an outside observer might criticize the results of the model based on the perceived political biases of the modeler or the sponsoring organization. With open-source models, a critic can be redirected to the underlying assumptions, structure, and content of the model. This is constructive criticism and debate that moves the science foreward. In the current polarized political environment in the U.S., open-source modeling can provide a constructive route for bipartisan cooperation and the democratization of computational modeling. Furthermore, open-source modeling and workflow encourages the widest forms of collaboration and contributions.

- -

Description of OG-USA model

- -

OG-USA is an open-source overlapping generations, dynamic general equilibrium, heterogeneous agent, macroeconomic model of U.S. fiscal policy. The GitHub repository for the OG-USA source code is github.com/PSLmodels/OG-USA. This repository contains all the source code and instructions for loading and running OG-USA and all of its dependencies on your local machine. We will probably do another PSL Demo Day on how to run OG-USA locally. This Demo Day webinar is about running OG-USA on the Compute Studio web application. See Section “Using OG-USA on Compute.Studio” below.

- -

As a heterogeneous agent macroeconomic model, OG-USA allows for distributional analyses at the individual and firm level. That is, you can simulate the model and answer questions like, “How will an increase in the top three personal income tax rates affect people of different ages and income levels?” Microsimulation models can answer these types of distributional analysis questions as well. However, the difference between a macroeconomic model and a microsimulation model is that the macroeconomic models can simulate how each of those individuals and firms will respond to a policy change (e.g., lower labor supply or increased investment demand) and how those behavioral responses will add up and feed back into the macroeconomy (e.g., the effect on GDP, government revenue, government debt, interest rates, and wages).

- -

OG-USA is a large-scale model and comprises tens of thousands of lines of code. The status of all of this code being publicly available on the internet with all collaboration and updates also public makes this an open source project. However, it is not enough to simply post one’s code. We have gone to great lengths to make in-line comments or “docstring” in the code to clarify the purpose of each function and line of code. For example, look in the OG-USA/ogusa/household.py module. The first function on line 18 is the marg_ut_cons() function. As is described in its docstring, its purpose is to “Compute the marginal utility of consumption.”

- -

These in-code docstrings are not enough. We have also created textbook style OG-USA documentation at pslmodels.github.io/OG-USA/ using the Jupyter Book medium. This form of documentation has the advantage of being in book form and available online. It allows us to update the documentation in the open-source repository so changes and versions can be tracked. It describes the OG-USA API, OG-USA theory, and `OG-USA calibration. As with the model, this documentation is always a work in progress. But being open-source allows outside contributors to help with its updated and error checking.

- -

One particular strength of the OG-USA model I want to highlight is its interaction with microsimulation models to incorporate information about tax incentives faced by the heterogeneous households in the model. We have interfaced OG-USA with microsimulation models in India and in the European Commission. OG-USA ‘s default for modeling the United States is to use the open-source Tax-Calculator microsimulation model, which was described by Anderson Frailey in the last Demo Day of 2020. However, DeBacker and I currently have a project in which we use OG-USA to simulate policies using the Tax Policy Center’s microsimulation model. The way OG-USA interfaces with microsimulation models to incorporate rich tax data is described in the documentation in the calibration chapter entitled, “Tax Functions”.

- -

Using OG-USA on Compute Studio

- -

In the demonstration, I focus on how to run experiments and simulations with OG-USA using the Compute Studio web application platform rather than installing running the model on your local machine. To use OG-USA on this web application, you will need a Compute Studio account. Once you have an account, you can start running any model available through the site. For some models, you will have to pay for the compute time, although the cost of running these models is very modest. However, all Compute Studio simulations of the OG-USA model are currently sponsored by the Open Source Economics Laboratory. This subsidy will probably run out in the next year. But we are always looking for funding for these models.

- -

Once you are signed up and logged in to your Compute Studio account, you can go to the OG-USA model on Compute Studio at compute.studio/PSLmodels/OG-USA. The experiment that we simulated in the demonstration is available at compute.studio/PSLmodels/OG-USA/206. The description at the top of the simulation page describes the changes we made. You can look through the input page by clicking on the “Inputs” tab. We ran the model by clicking the green “Run” button at the lower left of the page. The model took about 5 hours to run, so I pre-computed the results that we discussed in the demo. The outputs of the experiment are available in the “Outputs” tab on the page. I also demonstrated how one can click the “Download Results” button at the bottom of the “Outputs” tab to download more results from the simulation. However, the full set of results is only available by installing and running the OG-USA model simulation on your local machine.

- -

The benefits of the Compute Studio web application are that running the OG-USA model is much easier for the non-expert, and the multiple-hour computation time can be completed on a remote machine in the cloud.

- -

Resources

- - - -
-
\ No newline at end of file diff --git a/demo-day-jupyter-book-deploy.html b/demo-day-jupyter-book-deploy.html deleted file mode 100755 index 053e34d..0000000 --- a/demo-day-jupyter-book-deploy.html +++ /dev/null @@ -1,128 +0,0 @@ -
- -
-

Demo Day: Updating Jupyter Book documentation with GitHub Actions

How to keep interactive programmatic notebook-based documentation up-to-date in your pull request workflow.

- - -

- - demo-days -   - - jupyter-book -   - - GH-actions -   - - documentation - - -

- - -
- -
-
    -
-
- -
- -
- -

Open source projects must maintain clear and up-to-date documentation in order to attract users and contributors. -Because of this, PSL sets minimum standards for documentation among cataloged projects in its model criteria. -A recent innovation in executable books, Jupyter Book, has provided an excellent format for model documentation and has been widely adopted by PSL projects (see for example OG-USA, Tax-Brain, Tax-Calculator).

- -

Jupyter Book allows one to write documents with executable code and text together, as in Jupyter notebooks. -But Jupyter Book pushes this further by allowing documents with multiple sections, better integration of TeX for symbols and equations, BibTex style references and citations, links between sections, and Sphinx integration (for auto-built documentation of model APIs from source code). -Importantly for sharing documentation, Jupyter Books can easily be compiled to HTML, PDF, or other formats. -Portions of a Jupyter Book that contain executable code can be downloaded as Jupyter Notebooks or opened in Google Colab or binder

- -

The Jupyter Book documentation is excellent and will help you get started creating your “book” (tip: pay close attention to formatting details, including proper whitespace). -What I do here is outline how you can easily deploy your documentation to the web and keep it up-to-date with your project.

- -

I start from the assumption that you have the source files to build your Jupyter Book checked into the main branch of your project (these maybe yml , md , rst , ipynb or other files). -For version control purposes and to keep your repo trim, you generally don’t want to check the built documentation files to this branch (tip: consider adding the folder these files will go to (e.g., /_build to your .gitignore ). -When these files are in place and you can successfully build your book locally, it’s time for the first step.

- -

Step 1: Add two GH Actions to your project’s workflow:

-
    -
  1. An action to check that your documentation files build without an error. -I like to run this on each push to a PR. -The action won’t hang on warnings, but will fail if your Jupyter Book doesn’t build at all. -An example of this action from the OG-USA repo is here:
  2. -
- -

-name: Check that docs build
-on: [push, pull_request]
-
-jobs:
-  build:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
-        with:
-          persist-credentials: false
-
-      - name: Setup Miniconda
-        uses: conda-incubator/setup-miniconda@v2
-        with:
-          activate-environment: ogusa-dev
-          environment-file: environment.yml
-          python-version: 3.7
-          auto-activate-base: false
-
-      - name: Build # Build Jupyter Book
-        shell: bash -l {0}
-        run: |
-          pip install jupyter-book
-          pip install sphinxcontrib-bibtex==1.0.0
-          pip install -e .
-          cd docs
-          jb build ./book
-
- -

To use this in your repo, you’ll just need to change a few settings such as the name of the environment and perhaps the Python version and path to the book source files. -Note that in the above yml file sphinxcontrib-bibtex is pinned. -You maybe able to unpin this, but OG-USA needed this pin for documentation to compile property due to changes in the jupyter-book and sphinxcontrib-bibtex packages.

- -
    -
  1. An action that builds and deploys the Jupyter Book to GH Pages. -The OG-USA project uses the deploy action from James Ives in this action. -This is something that you will want to run when PRs are merged into your main branch so that the documentation is kept up-to-date with the project. -To modify this action for your repo, you’ll need to change the repo name, the environment name, and potentially the Python version, branch name, and path to the book source files.
  2. -
- -

Step 2: Once the action in (2) above is run, your compiled Jupyter Book docs will be pushed to a gh-pages branch in your repository (the action will create this branch for you if it doesn’t already exist). -At this point, you should be able to see your docs at the url https://GH_org_name.github.io/Repo_name . -But it probably won’t look very good until you complete this next step. -To have your Jupyter Book render on the web as you see it on your machine, you will want to push and merge an empty file with the name .nojekyll into your repo’s gh-pages branch.

- -

That’s it! -With these actions, you’ll be sure that your book continues to compile and a new version will be published to the web with with each merge to your main branch, ensuring that your documentation stays up-to-date.

- -

Some additional tips:

-
    -
  • Use Sphinx to document your projects API. -By doing so you’ll automate an important part of your project’s documentation – as long as the docstrings are updated when the source code is, the Jupyter Book you are publishing to the web will be kept in sync with no additional work needed.
  • -
  • You can have your gh-pages-hosted documentation point to a custom URL.
  • -
  • Project maintainers should ensure that docs are updated with PRs that are relevant (e.g., if the PR changes an the source code affecting a user interface, then documentation showing example usage should be updated) and help contributors make the necessary changes to the documentation source files.
  • -
- -
-
\ No newline at end of file diff --git a/demo-day-og-core.html b/demo-day-og-core.html deleted file mode 100755 index e75e595..0000000 --- a/demo-day-og-core.html +++ /dev/null @@ -1,79 +0,0 @@ -
- -
-

Demo Day: The OG-Core platform

A Python platform for building country-specific overlapping generations general equilibrium models.

- - -

- - demo-days -   - - python -   - - macroeconomics -   - - overlapping-generations - - -

- - -
- -
-
    -
-
- -
- -
- -

The OG-Core model is a general equilibrium, overlapping generations (OG) model suitable for evaluating fiscal policy. -Since the work of Alan Auerbach and Laurence Kotlikoff in the 1980s, this class of model has become a standard in the macroeconomic analysis of tax and spending policy. -This is for good reason. -OG models are able to capture the impacts of taxes and spending in the short and long run, examine incidence of policy across generations of people (not just short run or steady state analysis of a cross-section of the economy), and capture important economic dynamics (e.g., crowding out effects of deficit-financed policy).

- -

In the PSL Demo Day presentation linked above, I cover the basics of OG-Core: its history, its API, and how country-specific models can use OG-Core as a dependency. -In brief, OG-Core provides a general overlapping generations framework, from which parameters can be calibrated to represent particular economies. -Think of it this way: an economic model is just a set of parameters plus a system of equations. -OG-Core spells out all of the equations to represent an economy with heterogeneous agents, production and government sectors, open economy options, and detailed policy rules. -OG-Core also includes default values for all parameters, along with parameter metadata and parameter validation rules. -A country specific application is then just a particular parameterization of the general OG-Core model.

- -

As an example of a country-specific application, one can look at the OG-USA model. -This model provides a calibration of OG-Core to the United States. -The source code in that project allows one to go from raw data sources to the estimation and calibration procedures used to determine parameter values representing the United States, to parameter values in formats suitable for use in OG-Core. -Country-specific models like OG-USA include (where available) links to microsimulation models of tax and spending programs to allow detailed microdata of actual and counterfactual policies to inform the net tax-transfer functions used in the OG-Core model. -For those interested in building their own country-specific model, the OG-USA project provides a good example to work from.

- -

We encourage you to take a look at OG-Core and related projects. -New contributions and applications are always welcome. -If you have questions or comments, reach out through the relevant repositories on Github to me, @jdebacker, or Rick Evans, @rickecon.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-policyengine-us.html b/demo-day-policyengine-us.html deleted file mode 100755 index 85737a9..0000000 --- a/demo-day-policyengine-us.html +++ /dev/null @@ -1,73 +0,0 @@ -
- -
-

Demo Day: Modeling taxes and benefits with the PolicyEngine US web app

PolicyEngine US is a new web app for computing the impact of US tax and benefit policy.

- - -

- - demo-days -   - - apps -   - - taxes -   - - benefits -   - - us - - -

- - -
- -
-
    -
-
- -
- -
- -

PolicyEngine is a nonprofit that builds free, open-source software to compute the impact of public policy. -After launching our UK app in October 2021, we’ve just launched our US app, which calculates households’ federal taxes and several benefit programs, both under current law and under customizable policy reforms.

- -

In this Demo Day, I provide background on PolicyEngine and demonstrate how to use PolicyEngine US (a Policy Simulation Library cataloged model) to answer a novel policy question:

- -
-

How would doubling both (a) the Child Tax Credit and (b) the Supplemental Nutrition Assistance Program (SNAP) net income limit affect a single parent in California with $1,000 monthly rent and $50 monthly broadband costs?

-
- -

By bringing together tax and benefit models into a web interface, we can answer this question quickly without programming experience, as well as an unlimited array of questions like it. -The result is a table breaking down the household’s net income by program, as well as graphs of net income and marginal tax rates as the household’s earnings vary.

- -

I close with a quick demo of PolicyEngine UK, which adds society-wide results like the impact of reforms on the budget, poverty, and inequality, as well as contributed policy parameters. -We’re planning to bring those features to PolicyEngine US, along with state tax and benefit programs in all 50 states, over the next two years (if not sooner).

- -

Feel free to explore the app and reach out with any questions at max@policyengine.org.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-scf-microdf.html b/demo-day-scf-microdf.html deleted file mode 100755 index 69e9873..0000000 --- a/demo-day-scf-microdf.html +++ /dev/null @@ -1,66 +0,0 @@ -
- -
-

Demo Day: Running the scf and microdf Python packages in Google Colab

Analyzing US wealth data in a web-based Python notebook.

- - -

- - demo-days -   - - microdf -   - - scf - - -

- - -
- -
-
    -
-
- -
- -
- -

For Monday’s PSL Demo Day, I showed how to use the scf and microdf PSL Python packages from the Google Colab web-based Jupyter notebook interface.

- -

The scf package extracts data from the Federal Reserve’s Survey of Consumer Finances, the canonical source of US wealth microdata. -scf has a single function: load(years, columns) , which then returns a pandas DataFrame with the specified column(s), each record’s survey weight, and the year (when multiple years are requested).

- -

The microdf package analyzes survey microdata, such as that returned by the scf.load function. - It offers a consistent paradigm for calculating statistics like means, medians, sums, and inequality statistics like the Gini index. - Most functions are structured as follows: f(df, col, w, groupby) where df is a pandas DataFrame of survey microdata, col is a column(s) name to be summarized, w is the weight column, and groupby is the column(s) to group records in before summarizing.

- -

Using Google Colab, I showed how to use these packages to quickly calculate mean, median, and total wealth from the SCF data, without having to install any software or leave the browser. - I also demonstrated how to use the groupby argument of microdf functions to show how different measures of wealth inequality have changed over time. - Finally, I previewed some of what’s to come with scf and microdf : imputations, extrapolations, inflation, visualization, and documentation, to name a few priorities.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-stacked-revenue-estimates.html b/demo-day-stacked-revenue-estimates.html deleted file mode 100755 index 6db93f8..0000000 --- a/demo-day-stacked-revenue-estimates.html +++ /dev/null @@ -1,101 +0,0 @@ -
- -
-

Demo Day: Producing stacked revenue estimates with the Tax-Calculator Python API

How to evaluate the cumulative effects of a multi-part tax reform.

- - -

- - demo-days -   - - individual-income-tax -   - - tax-brain -   - - tax-calculator - - -

- - -
- -
-
    -
-
- -
- -
- -

It’s often useful to be able to identify the effects of specific provisions individually and not just the overall impact of a proposal with many provisions. -Indeed, when revenue estimates of tax law changes are reported (such as this JCT analysis of the American Rescue Plan Act of 2021), they are typically reported on a provision-by-provision basis. -Finding the provision-by-provision revenue estimates is cumbersome with the Tax-Brain web application both because it’s hard to iterate over many provisions and because the order matters when stacking estimates, so that one needs to keep this order in mind as parameter values are updated for each additional provision in a full proposal.

- -

In the PSL Demo Day on April 5, 2021, I show how to use the Python API of Tax-Calculator to efficiently produce stacked revenue estimates. -In fact, after some initial setup, this can be done with just 12 lines of code (plus a few more to make the output look nice). -The Google Colab notebook that illustrates this approach can be found at this link, but here I’ll walk through the four steps that are involved:

- -
    -
  1. -Divide up the full proposal into strings of JSON text that contain each provision you want to analyze. -My example breaks up the Biden 2020 campaign proposal into seven provisions, but this is illustrative and you can make more or less provisions depending on the detail you would like to see.
  2. -
  3. -Create a dictionary that contains, as its values, the JSON strings. -A couple notes on this. -First, the dictionary keys should be descriptive of the provisions as they will become the labels for each provision in the final table of revenue estimates we produce. -Second, order matters here. -You’ll want to be sure the current law baseline is first (the value for this will be an empty dictionary). -Then you specify the provisions. -The order you specify will likely affect your revenue estimates from a given provision (for instance, expanding/restricting a deduction has a larger revenue effect when rates are higher), but there are not hard and fast rules on the “right” order. -Traditionally, rate changes are stacked first and tax expenditures later in the order.
  4. -
  5. -Iterate over this dictionary. -With a dictionary of provisions in hand, we can write a “for loop” to iterate over the provision, simulating the Tax-Calculator model at each step. -Note that when the Policy class object in Tax-Calculator is modified, it only needs to be told the changes in tax law parameters relative to its current state. -In other words, when we are stacking provisions, estimating the incremental effect of each, you can think of the Policy object having a baseline policy that is represented by the current law baseline plus all provisions that have been analyzed before the provision at the current iteration. -The Policy class was created in this way so that one can easily represent policy changes, requiring the user to only input the set of parameters that are modified, not every single parameter’s value under the hypothetical policy. -But this also makes it parsimonious to stack provisions as we are doing here. -Notice that the JSON strings for each provision (created in Step 1) can be specified independent of the stacking order. -We only needed to slice the full set of proposals into discrete chunks, we didn’t need to worry about creating specifications of cumulative policy changes.
  6. -
  7. -Format output for presentation. -After we’ve run a Tax-Calculator simulation for the current law baseline plus each provision (and each year in the budget window), we’ve got all the output we need. -With this output, we can quickly create a table that will nicely present our stacked revenue estimate. -One good check to do here is to create totals across all provisions and compare this to the simulated revenue effects of running the full set of proposals in one go. -This check helps to ensure that you didn’t make an error in specifying your JSON strings. -For example, it’s easy to leave out one or more provisions, especially if there are many.
  8. -
- -

I hope this provides a helpful template for your own analysis. -Note that one can modify this code in several useful ways. -For example, within the for-loops, the Behavioral-Responses can be called to produce revenue estimates that take into account behavioral feedback. -Or one could store the individual income tax and payroll tax revenue impacts separately (rather than return the combined values as in the example notebook). -Additional outputs (even the full set of microdata after each provision is applied) can be stored for even more analysis.

- -

In the future, look for Tax-Brain to add stacked revenue estimates to its capabilities. -It’ll still be important for users to carve up their full list of policy changes into sets of provisions as we did in Steps 1 and 2 above, but Tax-Brain will then take care of the rest behind the scenes.

- -

Resources:

- - - -
-
\ No newline at end of file diff --git a/demo-day-synthimpute.html b/demo-day-synthimpute.html deleted file mode 100755 index a5e2c7d..0000000 --- a/demo-day-synthimpute.html +++ /dev/null @@ -1,84 +0,0 @@ -
- -
-

Demo Day: Using synthimpute for data fusion

The synthimpute Python package fuses and synthesizes economic datasets with machine learning.

- - -

- - demo-days -   - - python -   - - data-fusion -   - - synthimpute - - -

- - -
- -
-
    -
-
- -
- -
- -

Suppose a policy analyst sought to estimate the impact of a policy that changed income tax rates and benefit rules while also adding a progressive wealth tax. -The standard approach is to use a microsimulation model, where the rules are programmed as code, and then to run that program over a representative sample of households. -Unfortunately, no single US government survey captures all the households characteristics needed to analyze this policy; in particular, the reliable tax and benefit information lies in surveys like the Current Population Survey (CPS), while wealth lies in the Survey of Consumer Finances (SCF).

- -

Assuming the analyst wanted to start with the CPS, they have several options to estimate wealth for households to levy the progressive wealth tax. -Two typical approaches include:

-
    -
  1. Linear regression, predicting wealth from other household characteristics common to the CPS and SCF.
  2. -
  3. Matching, in which each CPS household is matched with the most similar household in the SCF.
  4. -
- -

Neither of these approaches, however, aim to estimate the distribution of wealth conditional on other characteristics. -Linear regression explicitly estimates the mean prediction, but that could miss the tails of wealth from whom most of the wealth tax revenue will be collected.

- -

Instead, the analyst could apply quantile regression to estimate the distribution of wealth conditional on other characteristics, and then measure the effectiveness of the estimation using quantile loss.

- -

In this Demo Day, I present the concepts of microsimulation, imputation, and quantile loss to motivate the synthimpute Python package I’ve developed with my PolicyEngine colleague Nikhil Woodruff. -In an experiment predicting wealth on a holdout set from the SCF, my former colleague Deepak Singh and I found that random forests significantly outperform OLS and matching for quantile regression, and this is the approach applied in synthimpute for both data fusion and data synthesis. -The synthimpute API will be familiar to users of scikit-learn and statsmodels , with the difference being that synthimpute ‘s rf_impute function returns a random value from the predicted distribution; it can also skew the predictions to meet a target total.

- -

We’ve used synthimpute to fuse data for research reports at the UBI Center and to enhance the PolicyEngine web app for UK tax and benefit simulation, and we welcome new users and contributors. -Feel free to explore the repository or contact me with questions at max@policyengine.org.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-tax-brain-python-api.html b/demo-day-tax-brain-python-api.html deleted file mode 100755 index 34644e4..0000000 --- a/demo-day-tax-brain-python-api.html +++ /dev/null @@ -1,106 +0,0 @@ -
- -
-

Demo Day: Using the TaxBrain Python API

A programmatic interface to compute the impact of tax reform.

- - -

- - demo-days -   - - individual-income-tax -   - - tax-brain -   - - tax-calculator - - -

- - -
- -
-
    -

- -
- -
- -
- -

The TaxBrain project was primarily created to serve as the backend of the Tax-Brain web-application. -But at its core, TaxBrain is a Python package that greatly simplifies tax policy analysis. -For this PSL Demo-Day, I demonstrated TaxBrain’s capabilities as a standalone package, and how to use it to produce high-level summaries of the revenue impacts of proposed tax policies. -The Jupyter Notebook from the presentation can be found here.

- -

TaxBrain’s Python API allows you to run a full analysis of income tax policies in just three lines of code:

- -
from taxbrain import TaxBrain
-
-tb = TaxBrain(START_YEAR, END_YEAR, use_cps=True, reform=REFORM_POLICY)
-tb.run()
-
- -

Where START_YEAR and END_YEAR are the first and last years, respectively, of the analysis; use_cps is a boolean indicator that you want to use the CPS-based microdata file prepared for use with Tax-Calculator; and REFORM_POLICY is either a JSON file or Python dictionary that specifies a reform suitable for Tax-Calculator. -The forthcoming release of TaxBrain will also include a feature that allows you to perform a stacked revenue analysis as well. -The inspiration for this feature was presented by Jason DeBacker in a previous demo-day.

- -

Once TaxBrain has been run, there are a number of methods and functions included in the package to create tables and plots to summarize the results. -I used the Biden 2020 campaign proposal in the demo and the resulting figures are below. -The first is a “volcano plot” that makes it easy to see the magnitude of the change in tax liability individuals across the income distribution face. -Each dot represents a tax unit, and the x and y variables can be customized based on the user’s needs.

- -

- -

The second gives a higher-level look at how taxes change in each income bin. -It breaks down what percentage of each income bin faces a tax increase or decrease, and the size of that change.

- -

- -

The final plot shown in the demo simply shows tax liabilities by year over the budget window.

- -

- -

The last feature I showed was TaxBrain’s automated reports. -TaxBrain uses saved results and an included report template to write a report summarizing the findings of your simulation. -The reports include tables and figures similar to what you may find in similar write ups by the Joint Committee on Taxation or Tax Policy Center including a summary of significant changes caused by the reform, and all you need is one line of code:

- -
report(tb, name='Biden Proposal', outdir='biden', author='Anderson Frailey')
-
- -

The above code will save a PDF copy of the report in a directory called biden along with PNG files for each of the graphs created and the raw Markdown text used for the report, which you can then edit as needed if you would like to add content to the report that is not already included. -Screenshots of the default report are included below.

- -

- - - -

- -

There are of course downsides to using TaxBrain instead of Tax-Calculator directly. -Specifically, it’s more difficult, and sometimes impossible, to perform custom tasks like modeling a feature of the tax code that hasn’t been added to Tax-Calculator yet or advanced work with marginal tax rates. -But for day-to-day tax modeling, the TaxBrain Python package can significantly simply any workflow.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-tax-brain.html b/demo-day-tax-brain.html deleted file mode 100755 index d2b6769..0000000 --- a/demo-day-tax-brain.html +++ /dev/null @@ -1,73 +0,0 @@ -
- -
-

Demo Day: Tax-Brain

Computing the impact of US tax reform with the Tax-Brain web-app.

- - -

- - demo-days -   - - individual-income-tax -   - - tax-brain -   - - us - - -

- - -
- -
-
    -
-
- -
- -
- -

For this PSL demo-day I showed how to use the Tax-Brain web-application, - hosted on Compute Studio, to analyze proposed individual income tax policies. -Tax-Brain integrates the Tax-Calculator -and Behavioral-Responses -models to make running both static and dynamic analyses of the US federal income -and payroll taxes simple. The web interface for the model makes it possible for -anyone to run their own analyses without writing a single line of code.

- -

We started the demo by simply walking through the interface and features of the -web-app before creating our own sample reform to model. This reform, which to -my knowledge does not reflect any proposals currently up for debate, included -changes to the income and payroll tax rates, bringing back personal exemptions, -modifying the standard deduction, and implementing a universal basic income.

- -

While the model ran, I explained how Tax-Brain validated all of the user inputs, -the data behind the model, and how the final tax liability projections are -determined. We concluded by looking through the variety of tables and graphs -Tax-Brain produces and how they can easily be shared with others.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-tax-cruncher.html b/demo-day-tax-cruncher.html deleted file mode 100755 index 0c27c29..0000000 --- a/demo-day-tax-cruncher.html +++ /dev/null @@ -1,59 +0,0 @@ -
- -
-

Demo Day: Tax-Cruncher

How to calculate a taxpayer's liabilities under current law and under a policy reform.

- - -

- - demo-days -   - - individual-income-tax -   - - tax-cruncher - - -

- - -
- -
-
    -
-
- -
- -
- -

For the Demo Day on November 16, I showed how to calculate a taxpayer’s liabilities under current law and under a policy reform with Tax-Cruncher. -The Tax-Cruncher web application takes two sets of inputs: a taxpayer’s demographic and financial information and the provisions of a tax reform.

- -

For the first Demo Day example (3:50), we looked at how eliminating the state and local tax (SALT) deduction cap and applying payroll tax to earnings above $400,000 would affect a high earner. -In particular, our hypothetical filer had $500,000 in wages, $100,000 in capital gains, and $100,000 in itemizable expenses. -You can see the results at Compute Studio simulation #634.

- -

For the second example (17:50), we looked at how expanding the Earned Income Tax Credit (EITC) and Child Tax Credit would impact a family with $45,000 in wages and two young children. -You can see the results at Compute Studio simulation #636.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-day-taxbrain-to-taxcruncher.html b/demo-day-taxbrain-to-taxcruncher.html deleted file mode 100755 index 75ddada..0000000 --- a/demo-day-taxbrain-to-taxcruncher.html +++ /dev/null @@ -1,49 +0,0 @@ -
- -
-

Demo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher

How to move reforms between a tax-unit-level and society-wide model with the Compute.Studio API.

- - -

- - demo-days - - -

- - -
- -
-
    -

Check out the video:

- -
- -
- -
- -

Show notes:

- -

I demonstrate how to move a policy reform file from Tax-Brain to Tax-Cruncher using the Compute.Studio API. -See the Demo C/S simulation linked below for text instructions that accompany the video.

- -

Resources:

- - - -
-
\ No newline at end of file diff --git a/demo-day-unit-testing.html b/demo-day-unit-testing.html deleted file mode 100755 index 1920a79..0000000 --- a/demo-day-unit-testing.html +++ /dev/null @@ -1,112 +0,0 @@ -
- -
-

Demo Day: Unit testing for open source projects

How to ensure that individual functions do what you expect.

- - -

- - demo-days -   - - R -   - - Python -   - - unit-testing - - -

- - -
- -
-
    -
-
- -
- -
- -

Unit testing is the testing of individual units or functions of a software application. -This differs from regression testing that focuses on the verification of final outputs. -Instead, unit testing tests each smallest testable component of your code. -This helps to more easily identify and trace errors in the code.

- -

Writing unit tests is good practice, though not one that’s always followed. -The biggest barrier to writing unit tests is that doing so takes time. -You might wonder “why am I testing code that runs?” -But there are a number benefits to writing unit tests:

-
    -
  • It ensures that the code does what you expect it to do
  • -
  • You’ll better understand what your code is doing
  • -
  • You will reduce time tracking down bugs in your code
  • -
- -

Often, writing unit tests will save you time in the longer run because it reduces debugging time and because it forces you to think more about what your code does, which often leads to the development of more efficient code. -And for open source projects, or projects with many contributors, writing unit tests is important in reducing the likelihood that errors are introduced into your code. -This is why the PSL catalog criteria requires projects to provide at least some level of unit testing.

- -

In the PSL Demo Day video linked above, I illustrate how to implement unit tests in R using the testthat package. There are essentially three steps to this process:

-
    -
  1. Create a directory to put your testing script in, e.g., a folder called tests -
  2. -
  3. Create one or more scripts that define your tests. -
      -
    • Each test is represented as a call of the test_that function and contain an statement that will evaluate as true or false (e.g., you may use the expect_equal function to verify that a function returns expected values given certain inputs).
    • -
    • You will want to use test in the name of these tests scripts as well as something descriptive of what is tested.
    • -
    -
  4. -
  5. Create a script that will run your tests. -
      -
    • Here you’ll need to import the testthat package and you’ll need to call the script(s) you are testing to load their functions.
    • -
    • Then you’ll use the test_dir function to pass the directory in which the script(s) you created in Step 2 reside.
    • -
    -
  6. -
- -

Check out the video to see examples of how each of these steps is executed. -I’ve also found this blog post on unit tests with testthat to be helpful.

- -

Unit testing in Python seems to be more developed and straightforward with the excellent pytest package. -While pytest offers many options for parameterizing tests, running tests in parallel, and more, the basic steps remain the same as those outlined above:

-
    -
  1. Create a directory for your test modules (call this folder tests as pytest will look for that name).
  2. -
  3. Create test modules that define each test -
      -
    • Tests are defined much like any other function in Python, the but will involve some assertion statement is triggered upon test failure.
    • -
    • You will want to use test in the name of these tests modules as well as something descriptive of what is tested.
    • -
    -
  4. -
  5. You won’t need to create a script to run your tests as with testthat, but you may create a pytest.ini file to customize your tests options.
  6. -
- -

That’s about it to get started writing unit tests for your code. PSL cataloged projects provide many excellent examples of a variety of unit tests, so search them for examples to build from. -In a future Demo Day and blog post, we’ll talk about continuous integration testing to help get even more out of you unit tests.

- -

Resources:

- - -
-
\ No newline at end of file diff --git a/demo-days/2020/11/18/demo-day-creating-reform-files/index.html b/demo-days/2020/11/18/demo-day-creating-reform-files/index.html new file mode 100644 index 0000000..db6e8c6 --- /dev/null +++ b/demo-days/2020/11/18/demo-day-creating-reform-files/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/2021/03/02/demo-day-taxbrain-to-taxcruncher/index.html b/demo-days/2021/03/02/demo-day-taxbrain-to-taxcruncher/index.html new file mode 100644 index 0000000..a6917a0 --- /dev/null +++ b/demo-days/2021/03/02/demo-day-taxbrain-to-taxcruncher/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/OG-USA/Tax-Calculator/open-source/policy-simulation-library/compute-studio/us/2021/01/28/demo-day-how-to-use-og-usa/index.html b/demo-days/OG-USA/Tax-Calculator/open-source/policy-simulation-library/compute-studio/us/2021/01/28/demo-day-how-to-use-og-usa/index.html new file mode 100644 index 0000000..5ef563c --- /dev/null +++ b/demo-days/OG-USA/Tax-Calculator/open-source/policy-simulation-library/compute-studio/us/2021/01/28/demo-day-how-to-use-og-usa/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/PSL/2021/03/08/demo-day-cs-api-stitch/index.html b/demo-days/PSL/2021/03/08/demo-day-cs-api-stitch/index.html new file mode 100644 index 0000000..cee3dff --- /dev/null +++ b/demo-days/PSL/2021/03/08/demo-day-cs-api-stitch/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/PSL/git/github/2021/03/02/demo-day-contributing-psl/index.html b/demo-days/PSL/git/github/2021/03/02/demo-day-contributing-psl/index.html new file mode 100644 index 0000000..ed42c4b --- /dev/null +++ b/demo-days/PSL/git/github/2021/03/02/demo-day-contributing-psl/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/R/Python/unit-testing/2021/08/09/demo-day-unit-testing/index.html b/demo-days/R/Python/unit-testing/2021/08/09/demo-day-unit-testing/index.html new file mode 100644 index 0000000..2e8d0be --- /dev/null +++ b/demo-days/R/Python/unit-testing/2021/08/09/demo-day-unit-testing/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/apps/taxes/benefits/us/2022/04/12/demo-day-policyengine-us/index.html b/demo-days/apps/taxes/benefits/us/2022/04/12/demo-day-policyengine-us/index.html new file mode 100644 index 0000000..109c37d --- /dev/null +++ b/demo-days/apps/taxes/benefits/us/2022/04/12/demo-day-policyengine-us/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/benefits/us/2022/07/14/demo-day-cambridge-cash-assistance/index.html b/demo-days/benefits/us/2022/07/14/demo-day-cambridge-cash-assistance/index.html new file mode 100644 index 0000000..9e431f5 --- /dev/null +++ b/demo-days/benefits/us/2022/07/14/demo-day-cambridge-cash-assistance/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/2020/12/03/demo-day-cost-of-capital-calculator/index.html b/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/2020/12/03/demo-day-cost-of-capital-calculator/index.html new file mode 100644 index 0000000..c833833 --- /dev/null +++ b/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/2020/12/03/demo-day-cost-of-capital-calculator/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/taxes/2022/04/18/demo-day-ccc-international/index.html b/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/taxes/2022/04/18/demo-day-ccc-international/index.html new file mode 100644 index 0000000..42f4d70 --- /dev/null +++ b/demo-days/cost-of-capital-calculator/business-taxation/corporate-income-tax/taxes/2022/04/18/demo-day-ccc-international/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/github/git/workflow/getting-started/2022/06/28/demo-day-github/index.html b/demo-days/github/git/workflow/getting-started/2022/06/28/demo-day-github/index.html new file mode 100644 index 0000000..d32ef6b --- /dev/null +++ b/demo-days/github/git/workflow/getting-started/2022/06/28/demo-day-github/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/04/05/demo-day-stacked-revenue-estimates/index.html b/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/04/05/demo-day-stacked-revenue-estimates/index.html new file mode 100644 index 0000000..2e8d006 --- /dev/null +++ b/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/04/05/demo-day-stacked-revenue-estimates/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/06/14/demo-day-tax-brain-python-api/index.html b/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/06/14/demo-day-tax-brain-python-api/index.html new file mode 100644 index 0000000..5ad965e --- /dev/null +++ b/demo-days/individual-income-tax/tax-brain/tax-calculator/2021/06/14/demo-day-tax-brain-python-api/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/individual-income-tax/tax-brain/us/2020/12/23/demo-day-tax-brain/index.html b/demo-days/individual-income-tax/tax-brain/us/2020/12/23/demo-day-tax-brain/index.html new file mode 100644 index 0000000..8e37583 --- /dev/null +++ b/demo-days/individual-income-tax/tax-brain/us/2020/12/23/demo-day-tax-brain/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/individual-income-tax/tax-cruncher/2020/11/23/demo-day-tax-cruncher/index.html b/demo-days/individual-income-tax/tax-cruncher/2020/11/23/demo-day-tax-cruncher/index.html new file mode 100644 index 0000000..30db981 --- /dev/null +++ b/demo-days/individual-income-tax/tax-cruncher/2020/11/23/demo-day-tax-cruncher/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/jupyter-book/GH-actions/documentation/2021/05/17/demo-day-jupyter-book-deploy/index.html b/demo-days/jupyter-book/GH-actions/documentation/2021/05/17/demo-day-jupyter-book-deploy/index.html new file mode 100644 index 0000000..5dcd73f --- /dev/null +++ b/demo-days/jupyter-book/GH-actions/documentation/2021/05/17/demo-day-jupyter-book-deploy/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/microdf/scf/2021/01/29/demo-day-scf-microdf/index.html b/demo-days/microdf/scf/2021/01/29/demo-day-scf-microdf/index.html new file mode 100644 index 0000000..8396821 --- /dev/null +++ b/demo-days/microdf/scf/2021/01/29/demo-day-scf-microdf/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/policy-simulation-library/compute-studio/2021/09/20/demo-day-cs-auto-deploy/index.html b/demo-days/policy-simulation-library/compute-studio/2021/09/20/demo-day-cs-auto-deploy/index.html new file mode 100644 index 0000000..de2674e --- /dev/null +++ b/demo-days/policy-simulation-library/compute-studio/2021/09/20/demo-day-cs-auto-deploy/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/python/data-fusion/synthimpute/2021/12/08/demo-day-synthimpute/index.html b/demo-days/python/data-fusion/synthimpute/2021/12/08/demo-day-synthimpute/index.html new file mode 100644 index 0000000..1b88bdf --- /dev/null +++ b/demo-days/python/data-fusion/synthimpute/2021/12/08/demo-day-synthimpute/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/python/macroeconomics/overlapping-generations/2021/11/01/demo-day-og-core/index.html b/demo-days/python/macroeconomics/overlapping-generations/2021/11/01/demo-day-og-core/index.html new file mode 100644 index 0000000..77f7c15 --- /dev/null +++ b/demo-days/python/macroeconomics/overlapping-generations/2021/11/01/demo-day-og-core/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/demo-days/tax/data/us/2021/07/16/demo-day-constructing-tax-data-for-the-50-states/index.html b/demo-days/tax/data/us/2021/07/16/demo-day-constructing-tax-data-for-the-50-states/index.html new file mode 100644 index 0000000..30ad9e9 --- /dev/null +++ b/demo-days/tax/data/us/2021/07/16/demo-day-constructing-tax-data-for-the-50-states/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/feed.xml b/feed.xml deleted file mode 100755 index aaa3a0b..0000000 --- a/feed.xml +++ /dev/null @@ -1 +0,0 @@ -Jekyll2023-12-29T12:59:29-06:00https://blog.pslmodels.org/feed.xmlPSL blogUpdates on Policy Simulation Library models.2023: A year in review2023-12-28T00:00:00-06:002023-12-28T00:00:00-06:00https://blog.pslmodels.org/2023-year-in-reviewJason DeBacker2022: A year in review2022-12-31T00:00:00-06:002022-12-31T00:00:00-06:00https://blog.pslmodels.org/2022-year-in-reviewJason DeBackerDemo Day: How does targeted cash assistance affect incentives to work?2022-07-14T00:00:00-05:002022-07-14T00:00:00-05:00https://blog.pslmodels.org/demo-day-cambridge-cash-assistanceMax GhenisDemo Day: Getting Started with GitHub2022-06-28T00:00:00-05:002022-06-28T00:00:00-05:00https://blog.pslmodels.org/demo-day-githubJason DeBackerDemo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator2022-04-18T00:00:00-05:002022-04-18T00:00:00-05:00https://blog.pslmodels.org/demo-day-ccc-internationalJason DeBacker \ No newline at end of file diff --git a/images/MLK_Library_cut2.png b/images/MLK_Library_cut2.png old mode 100755 new mode 100644 diff --git a/images/OG-USA_logo_long.png b/images/OG-USA_logo_long.png old mode 100755 new mode 100644 diff --git a/images/biden_dist_fig.png b/images/biden_dist_fig.png old mode 100755 new mode 100644 diff --git a/images/biden_revenue.png b/images/biden_revenue.png old mode 100755 new mode 100644 diff --git a/images/biden_volcano.png b/images/biden_volcano.png old mode 100755 new mode 100644 diff --git a/images/chart-preview.png b/images/chart-preview.png deleted file mode 100755 index 572b32569b3ffdc6bbd1d85bfabfc2fdd0fbeee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198493 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

>H6h#(=&LQ+Je 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%0D-hiu^ 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


!+QN=&FhZm6GWH2F@)P6 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%0Dw`(lY>+E~Kvc_3n6-&tz7{08V+ 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 diff --git a/images/copied_from_nb/README.md b/images/copied_from_nb/README.md deleted file mode 100755 index 37c795c..0000000 --- a/images/copied_from_nb/README.md +++ /dev/null @@ -1,3 +0,0 @@ -

Warning

- -Do not manually save images into this folder. This is used by GitHub Actions to automatically copy images. Any images you save into this folder could be deleted at build time. \ No newline at end of file diff --git a/images/cs-auto-deploy/build_history_dashboard.png b/images/cs-auto-deploy/build_history_dashboard.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_history_dashboard_progress.png b/images/cs-auto-deploy/build_history_dashboard_progress.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_scheduled_page.png b/images/cs-auto-deploy/build_scheduled_page.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_status_failed.png b/images/cs-auto-deploy/build_status_failed.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_status_failed_logs.png b/images/cs-auto-deploy/build_status_failed_logs.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_status_page_progress.png b/images/cs-auto-deploy/build_status_page_progress.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/build_status_page_success.png b/images/cs-auto-deploy/build_status_page_success.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/connect_project_page.png b/images/cs-auto-deploy/connect_project_page.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/project_dashboard.png b/images/cs-auto-deploy/project_dashboard.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/project_home_page.png b/images/cs-auto-deploy/project_home_page.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/publish_page.png b/images/cs-auto-deploy/publish_page.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/run_project_page_loading.png b/images/cs-auto-deploy/run_project_page_loading.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/run_project_page_success.png b/images/cs-auto-deploy/run_project_page_success.png old mode 100755 new mode 100644 diff --git a/images/cs-auto-deploy/updated_build_history_page.png b/images/cs-auto-deploy/updated_build_history_page.png old mode 100755 new mode 100644 diff --git a/images/diagram.png b/images/diagram.png deleted file mode 100755 index 26079101be682a72e65834524323e12fab3b7510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42576 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 z 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 Bjq(5h diff --git a/images/favicon.ico b/images/favicon.ico deleted file mode 100755 index 88bc1519602a3a0b53e83ba62a4dfbc15bce607e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 Ny4lw1jka3E{tv_~RQ&(| diff --git a/images/tb_report1.png b/images/tb_report1.png old mode 100755 new mode 100644 diff --git a/images/tb_report2.png b/images/tb_report2.png old mode 100755 new mode 100644 diff --git a/images/tb_report3.png b/images/tb_report3.png old mode 100755 new mode 100644 diff --git a/images/tb_report4.png b/images/tb_report4.png old mode 100755 new mode 100644 diff --git a/images/tb_report5.png b/images/tb_report5.png old mode 100755 new mode 100644 diff --git a/index.html b/index.html old mode 100755 new mode 100644 index 1bdfa2e..8891ee2 --- a/index.html +++ b/index.html @@ -1,105 +1,1711 @@ - + + + + + + + + \ No newline at end of file diff --git a/introducing-psl-blog.html b/introducing-psl-blog.html deleted file mode 100755 index 9b04ece..0000000 --- a/introducing-psl-blog.html +++ /dev/null @@ -1,45 +0,0 @@ -
- -
-

Introducing the PSL Blog

A new way to follow models in the Policy Simulation Library catalog.

- - -

- - announcements - - -

- - -
- -
-
    -

Our mission at the Policy Simulation Library is to improve public policy by opening up models and data preparation routines for policy analysis. -To support and showcase our diverse community of users and developers, we engage across several mediums: a monthly newsletter, a Q&A forum, (now-virtual) meetups, our Twitter feed, our YouTube channel, documentation for models in our catalog, and of course, issues and pull requests on GitHub.

- -

Today, we’re adding a new medium: the PSL Blog. -We’ll use this space to share major updates on our catalog, provide tutorials, and summarize events or papers that involve our models.

- -

If you’d like to share your work on our blog, or to suggest content, drop me a line. -To follow along, add the PSL blog’s RSS feed or subscribe to our newsletter.

- -

Happy reading,

- -

Max Ghenis

- -

Editor, PSL Blog

- -
-
\ No newline at end of file diff --git a/listings.json b/listings.json new file mode 100644 index 0000000..fad6afe --- /dev/null +++ b/listings.json @@ -0,0 +1,34 @@ +[ + { + "listing": "/index.html", + "items": [ + "/posts/2023-12-28-2023-year-in-review.html", + "/posts/2022-12-31-2022-year-in-review.html", + "/posts/2022-07-14-demo-day-cambridge-cash-assistance.html", + "/posts/2022-06-28-demo-day-github.html", + "/posts/2022-04-18-demo-day-ccc-international.html", + "/posts/2022-04-12-demo-day-policyengine-us.html", + "/posts/2022-03-03-DC-workshop.html", + "/posts/2021-12-28-2021-year-in-review.html", + "/posts/2021-12-08-demo-day-synthimpute.html", + "/posts/2021-11-01-demo-day-og-core.html", + "/posts/2021-09-20-demo-day-cs-auto-deploy.html", + "/posts/2021-08-09-demo-day-unit-testing.html", + "/posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html", + "/posts/2021-06-14-demo-day-tax-brain-python-api.html", + "/posts/2021-05-17-demo-day-jupyter-book-deploy.html", + "/posts/2021-04-05-demo-day-stacked-revenue-estimates.html", + "/posts/2021-03-08-demo-day-cs-api-stitch.html", + "/posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html", + "/posts/2021-03-02-demo-day-contributing-psl.html", + "/posts/2021-01-29-demo-day-scf-microdf.html", + "/posts/2021-01-28-demo-day-how-to-use-og-usa.html", + "/posts/2020-12-23-demo-day-tax-brain.html", + "/posts/2020-12-23-2020-year-in-review.html", + "/posts/2020-12-03-demo-day-cost-of-capital-calculator.html", + "/posts/2020-11-23-demo-day-tax-cruncher.html", + "/posts/2020-11-18-demo-day-creating-reform-files.html", + "/posts/2020-11-06-introducing-psl-blog.html" + ] + } +] \ No newline at end of file diff --git a/images/logo.png b/logo.png similarity index 100% rename from images/logo.png rename to logo.png diff --git a/page2/index.html b/page2/index.html deleted file mode 100755 index 0ed058b..0000000 --- a/page2/index.html +++ /dev/null @@ -1,90 +0,0 @@ -

Posts

- - - - - - - - - - - - - - - - - - - - - - -
-
    -
  • 1
  • -
  • 2
  • -
  • -
-
\ No newline at end of file diff --git a/posts/2020-11-06-introducing-psl-blog.html b/posts/2020-11-06-introducing-psl-blog.html new file mode 100644 index 0000000..c3af3c7 --- /dev/null +++ b/posts/2020-11-06-introducing-psl-blog.html @@ -0,0 +1,589 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Introducing the PSL Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Introducing the PSL Blog

+
+
+ A new way to follow models in the Policy Simulation Library catalog. +
+
+
+
announcements
+
+
+
+ + +
+ +
+
Author
+
+

Max Ghenis

+
+
+ +
+
Published
+
+

November 6, 2020

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

Our mission at the Policy Simulation Library is to improve public policy by opening up models and data preparation routines for policy analysis. To support and showcase our diverse community of users and developers, we engage across several mediums: a monthly newsletter, a Q&A forum, (now-virtual) meetups, our Twitter feed, our YouTube channel, documentation for models in our catalog, and of course, issues and pull requests on GitHub.

+

Today, we’re adding a new medium: the PSL Blog. We’ll use this space to share major updates on our catalog, provide tutorials, and summarize events or papers that involve our models.

+

If you’d like to share your work on our blog, or to suggest content, drop me a line. To follow along, add the PSL blog’s RSS feed or subscribe to our newsletter.

+

Happy reading,

+

Max Ghenis

+

Editor, PSL Blog

+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2020-11-18-demo-day-creating-reform-files.html b/posts/2020-11-18-demo-day-creating-reform-files.html new file mode 100644 index 0000000..8aa13ed --- /dev/null +++ b/posts/2020-11-18-demo-day-creating-reform-files.html @@ -0,0 +1,597 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Building policy reform files + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Building policy reform files

+
+
+ The first in Policy Simulation Library’s new live demo series describes specifying tax reforms. +
+
+
+
demo-days
+
+
+
+ + +
+ +
+
Author
+
+

Matt Jensen

+
+
+ +
+
Published
+
+

November 18, 2020

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

Check out the video:

+
+

We will host Demo Days every two weeks until the end of the year. You can see our schedule on our events page.

+
+

Show notes:

+

I demonstrate how to build policy reform files using the Tax-Brain webapp on Compute Studio. (Useful links below.) This is an introductory lesson that ends with a cliffhanger. We don’t run the model. But we do generate an individual income and payroll tax reform file that is compatible with a range of policy simulation models and analytic tools, some designed for policy decision makers, others for taxpayers and benefits recipients interested in assessing their own circumstances.

+

Beyond individual and payroll tax analysis, the reform file can be used with models that assess pass-through and corporate taxation of businesses, as well as a variety of income benefit programs. A wide range of use cases will occupy future events.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2020-11-23-demo-day-tax-cruncher.html b/posts/2020-11-23-demo-day-tax-cruncher.html new file mode 100644 index 0000000..53630ce --- /dev/null +++ b/posts/2020-11-23-demo-day-tax-cruncher.html @@ -0,0 +1,595 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Tax-Cruncher + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Tax-Cruncher

+
+
+ How to calculate a taxpayer’s liabilities under current law and under a policy reform. +
+
+
+
demo-days
+
individual-income-tax
+
tax-cruncher
+
+
+
+ + +
+ +
+
Author
+
+

Peter Metz

+
+
+ +
+
Published
+
+

November 23, 2020

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

For the Demo Day on November 16, I showed how to calculate a taxpayer’s liabilities under current law and under a policy reform with Tax-Cruncher. The Tax-Cruncher web application takes two sets of inputs: a taxpayer’s demographic and financial information and the provisions of a tax reform.

+

For the first Demo Day example (3:50), we looked at how eliminating the state and local tax (SALT) deduction cap and applying payroll tax to earnings above $400,000 would affect a high earner. In particular, our hypothetical filer had $500,000 in wages, $100,000 in capital gains, and $100,000 in itemizable expenses. You can see the results at Compute Studio simulation #634.

+

For the second example (17:50), we looked at how expanding the Earned Income Tax Credit (EITC) and Child Tax Credit would impact a family with $45,000 in wages and two young children. You can see the results at Compute Studio simulation #636.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2020-12-03-demo-day-cost-of-capital-calculator.html b/posts/2020-12-03-demo-day-cost-of-capital-calculator.html new file mode 100644 index 0000000..80672ca --- /dev/null +++ b/posts/2020-12-03-demo-day-cost-of-capital-calculator.html @@ -0,0 +1,600 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Cost-of-Capital-Calculator Web Application + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Cost-of-Capital-Calculator Web Application

+
+
+ Computing the impact of taxes on business investment incentives under alternative policy scenarios. +
+
+
+
demo-days
+
cost-of-capital-calculator
+
business-taxation
+
corporate-income-tax
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

December 3, 2020

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

In the PSL Demo Day video linked above, I demonstrate how to use the Cost-of-Capital-Calculator (CCC) web application on Compute-Studio. CCC computes various measures of the impact of the tax system on business investment. These include the Hall-Jorgenson cost of capital, marginal effective tax rates, and effective average tax rates (following the methodology of Devereux and Griffith (1999)).

+

I begin by illustrating the various parameters available for the user to manipulate. These include parameters of the business and individual income tax systems, as well as parameters representing economic assumptions (e.g., inflation rates and nominal interest rates) and parameters dictating financial and accounting policy (e.g., the fraction of financing using debt). Note that all default values for tax policy parameters represent the “baseline policy”, which is defined as the current law policy in the year being analyzed (which itself is a parameter the user can change). Other parameters are estimated using historical data following the methodology of CBO (2014).

+

Next, I change a few parameters and run the model. In this example, I move the corporate income tax rate up to 28% and lower bonus depreciation for assets with depreciable lives of 20 years or less to 50%.

+

Finally, I discuss how to interpret output. The web app returns a table and three figures summarizing marginal effective total tax rates on new investments. This selection of output helps give one a sense of the the overall changes, as well as effects across asset types, industries, and type of financing. For the full model output, one can click on “Download Results”. Doing so will download four CSV files contain several measures of the impact of the tax system on investment for very fine asset and industry categories. Users can take these files and create tables and visualizations relevant to their own use case.

+

Please take the model for a spin and simulate your own reform. If you have questions, comments, or suggestions, please let me know on the PSL Discourse (non-technical questions) or by opening an issue in the CCC GitHub repository (technical questions).

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2020-12-23-2020-year-in-review.html b/posts/2020-12-23-2020-year-in-review.html new file mode 100644 index 0000000..e7f3085 --- /dev/null +++ b/posts/2020-12-23-2020-year-in-review.html @@ -0,0 +1,599 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - 2020: A year in review + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

2020: A year in review

+
+
+ Highlights from the Policy Simulation Library in 2020. +
+
+
+
psl
+
psl-foundation
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

December 23, 2020

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

+
+

This year has been one to forget! But 2020 did have its bright spots, especially in the PSL community. This post reviews some of the highlights from the year.

+

The Library was able to welcome two new models to the catalog in 2020: microdf and OpenFisca-UK. microdf provides a number of useful tools for use with economic survey data. OpenFisca-UK builds off the OpenFisca platform, offering a microsimulation model for tax and benefit programs in the UK.

+

In addition, four new models were added to the Library as incubating projects. The ui-calculator model has received a lot of attention this year in the U.S., as it provides the capability to calculate unemployment insurance benefits across U.S. states, a major mode of delivering financial relief to individuals during the COVID crisis. PCI-Outbreak directly relates to the COVID crisis, using machine learning and natural language processing to estimate the true extent of the COVID pandemic in China. The model finds that actual COVID cases are significantly higher than what official statistics claim. The COVID-MCS model considers COVID case counts and test positivity rates to measure whether or not U.S. communities are meeting certain benchmarks in controlling the spread of the disease. On a lighter note, the Git-Tutorial project provides instruction and resources for learning to use Git and GitHub, with an emphasis on the workflow used by many projects in the PSL community.

+

The organization surrounding the Policy Simulation Library has been bolstered in two ways. First, we have formed a relationship with the Open Collective Foundation, who is now our fiscal host. This allows PSL to accept tax deductible contributions that will support the efforts of the community. Second, we’ve formed the PSL Foundation, with an initial board that includes Linda Gibbs, Glenn Hubbard, and Jason DeBacker.

+

Our outreach efforts have grown in 2020 to include the regular PSL Demo Day series and this PSL Blog. Community members have also presented work with PSL models at the PyData Global Conference, the Tax Economists Forum, AEI, the Coiled Podcast, and the Virtual Global Village Podcast. New users will also find a better experience learning how to use and contribute to PSL models as many PSL models have improved their documentation through the use of Jupyter Book (e.g., see the Tax-Calculator documentation).

+

We love seeing the community around open source policymaking expand and are proud that PSL models have been used for important policy analysis in 2020, including analyzing economic policy responses to the pandemic and the platforms of presidential candidates. We look forward to more progress in 2021 and welcome you to join the effort as a contributor, financially or as an open source developer.

+

Best wishes from PSL for a happy and healthy new year!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2020-12-23-demo-day-tax-brain.html b/posts/2020-12-23-demo-day-tax-brain.html new file mode 100644 index 0000000..76b2c26 --- /dev/null +++ b/posts/2020-12-23-demo-day-tax-brain.html @@ -0,0 +1,598 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Tax-Brain + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Tax-Brain

+
+
+ Computing the impact of US tax reform with the Tax-Brain web-app. +
+
+
+
demo-days
+
individual-income-tax
+
tax-brain
+
us
+
+
+
+ + +
+ +
+
Author
+
+

Anderson Frailey

+
+
+ +
+
Published
+
+

December 23, 2020

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

For this PSL demo-day I showed how to use the Tax-Brain web-application, hosted on Compute Studio, to analyze proposed individual income tax policies. Tax-Brain integrates the Tax-Calculator and Behavioral-Responses models to make running both static and dynamic analyses of the US federal income and payroll taxes simple. The web interface for the model makes it possible for anyone to run their own analyses without writing a single line of code.

+

We started the demo by simply walking through the interface and features of the web-app before creating our own sample reform to model. This reform, which to my knowledge does not reflect any proposals currently up for debate, included changes to the income and payroll tax rates, bringing back personal exemptions, modifying the standard deduction, and implementing a universal basic income.

+

While the model ran, I explained how Tax-Brain validated all of the user inputs, the data behind the model, and how the final tax liability projections are determined. We concluded by looking through the variety of tables and graphs Tax-Brain produces and how they can easily be shared with others.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-01-28-demo-day-how-to-use-og-usa.html b/posts/2021-01-28-demo-day-how-to-use-og-usa.html new file mode 100644 index 0000000..88da324 --- /dev/null +++ b/posts/2021-01-28-demo-day-how-to-use-og-usa.html @@ -0,0 +1,630 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy

+
+
+ How to model the macroeconomic effects of tax reform with a web app. +
+
+
+
demo-days
+
OG-USA
+
Tax-Calculator
+
open-source
+
policy-simulation-library
+
compute-studio
+
us
+
+
+
+ + +
+ +
+
Author
+
+

Richard W. Evans

+
+
+ +
+
Published
+
+

January 28, 2021

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

+
+
+
+

In this PSL Demo Day, I demonstrate how to use the open source OG-USA macroeconomic model of U.S. fiscal policy. Jason DeBacker and I (Richard Evans) have been the core maintainers of this project and repository for the last six years. This demo is organized into the following sections. The YouTube webinar linked above took place on January 11, 2021.

+ +
+

Brief note about the value of the PSL community

+

The Policy Simulation Library is a decentralized organization of open source policy models. The Policy Simulation Library GitHub organization houses many open source repositories, each of which represents a curated policy project by a diverse group of maintainers. The projects that have met the highest standards of best practices and documentation are designated as psl-cataloged , while newer projects that are in earlier stages are designated as psl-incubating . The philosophy and goal of the PSL environment is to make policy modeling open and transparent. It also allows more collaboration and cross-project contributions and interactions.

+

The Policy Simulation Library group has been holding these PSL Demo Day webinars since the end of 2020. The video of each webinar is available on the Policy Simulation Library YouTube channel. These videos are a great resource for learning the different models available in the PSL community, how the models interact, how to contribute to them, and what is on the horizon in their development. Also excellent in many of the PSL Demo Day webinars is a demonstration of how to use the models on the Compute Studio web application platform.

+

I have been a participant in and contributor to the PSL community since its inception. I love economic policy modeling. And I learned how sophisticated and complicated economic policy models can be. And any simulation can have hundreds of underlying assumptions, some of which may not be explicitly transparent. I think models that are used for public policy analysis have a philosophical imperative to be open source. This allows others to verify results and test sensitivity to assumptions.

+

Another strong benefit of open source modeling is that it is fundamentally apolitical. With proprietary closed-source policy models, an outside observer might criticize the results of the model based on the perceived political biases of the modeler or the sponsoring organization. With open-source models, a critic can be redirected to the underlying assumptions, structure, and content of the model. This is constructive criticism and debate that moves the science foreward. In the current polarized political environment in the U.S., open-source modeling can provide a constructive route for bipartisan cooperation and the democratization of computational modeling. Furthermore, open-source modeling and workflow encourages the widest forms of collaboration and contributions.

+
+
+

Description of OG-USA model

+

OG-USA is an open-source overlapping generations, dynamic general equilibrium, heterogeneous agent, macroeconomic model of U.S. fiscal policy. The GitHub repository for the OG-USA source code is github.com/PSLmodels/OG-USA. This repository contains all the source code and instructions for loading and running OG-USA and all of its dependencies on your local machine. We will probably do another PSL Demo Day on how to run OG-USA locally. This Demo Day webinar is about running OG-USA on the Compute Studio web application. See Section “Using OG-USA on Compute.Studio” below.

+

As a heterogeneous agent macroeconomic model, OG-USA allows for distributional analyses at the individual and firm level. That is, you can simulate the model and answer questions like, “How will an increase in the top three personal income tax rates affect people of different ages and income levels?” Microsimulation models can answer these types of distributional analysis questions as well. However, the difference between a macroeconomic model and a microsimulation model is that the macroeconomic models can simulate how each of those individuals and firms will respond to a policy change (e.g., lower labor supply or increased investment demand) and how those behavioral responses will add up and feed back into the macroeconomy (e.g., the effect on GDP, government revenue, government debt, interest rates, and wages).

+

OG-USA is a large-scale model and comprises tens of thousands of lines of code. The status of all of this code being publicly available on the internet with all collaboration and updates also public makes this an open source project. However, it is not enough to simply post one’s code. We have gone to great lengths to make in-line comments or “docstring” in the code to clarify the purpose of each function and line of code. For example, look in the OG-USA/ogusa/household.py module. The first function on line 18 is the marg_ut_cons() function. As is described in its docstring, its purpose is to “Compute the marginal utility of consumption.”

+

These in-code docstrings are not enough. We have also created textbook style OG-USA documentation at pslmodels.github.io/OG-USA/ using the Jupyter Book medium. This form of documentation has the advantage of being in book form and available online. It allows us to update the documentation in the open-source repository so changes and versions can be tracked. It describes the OG-USA API, OG-USA theory, and `OG-USA calibration. As with the model, this documentation is always a work in progress. But being open-source allows outside contributors to help with its updated and error checking.

+

One particular strength of the OG-USA model I want to highlight is its interaction with microsimulation models to incorporate information about tax incentives faced by the heterogeneous households in the model. We have interfaced OG-USA with microsimulation models in India and in the European Commission. OG-USA ’s default for modeling the United States is to use the open-source Tax-Calculator microsimulation model, which was described by Anderson Frailey in the last Demo Day of 2020. However, DeBacker and I currently have a project in which we use OG-USA to simulate policies using the Tax Policy Center’s microsimulation model. The way OG-USA interfaces with microsimulation models to incorporate rich tax data is described in the documentation in the calibration chapter entitled, “Tax Functions”.

+
+
+

Using OG-USA on Compute Studio

+

In the demonstration, I focus on how to run experiments and simulations with OG-USA using the Compute Studio web application platform rather than installing running the model on your local machine. To use OG-USA on this web application, you will need a Compute Studio account. Once you have an account, you can start running any model available through the site. For some models, you will have to pay for the compute time, although the cost of running these models is very modest. However, all Compute Studio simulations of the OG-USA model are currently sponsored by the Open Source Economics Laboratory. This subsidy will probably run out in the next year. But we are always looking for funding for these models.

+

Once you are signed up and logged in to your Compute Studio account, you can go to the OG-USA model on Compute Studio at compute.studio/PSLmodels/OG-USA. The experiment that we simulated in the demonstration is available at compute.studio/PSLmodels/OG-USA/206. The description at the top of the simulation page describes the changes we made. You can look through the input page by clicking on the “Inputs” tab. We ran the model by clicking the green “Run” button at the lower left of the page. The model took about 5 hours to run, so I pre-computed the results that we discussed in the demo. The outputs of the experiment are available in the “Outputs” tab on the page. I also demonstrated how one can click the “Download Results” button at the bottom of the “Outputs” tab to download more results from the simulation. However, the full set of results is only available by installing and running the OG-USA model simulation on your local machine.

+

The benefits of the Compute Studio web application are that running the OG-USA model is much easier for the non-expert, and the multiple-hour computation time can be completed on a remote machine in the cloud.

+
+
+

Resources

+ + + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-01-29-demo-day-scf-microdf.html b/posts/2021-01-29-demo-day-scf-microdf.html new file mode 100644 index 0000000..e1d12a7 --- /dev/null +++ b/posts/2021-01-29-demo-day-scf-microdf.html @@ -0,0 +1,600 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Running the scf and microdf Python packages in Google Colab + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Running the scf and microdf Python packages in Google Colab

+
+
+ Analyzing US wealth data in a web-based Python notebook. +
+
+
+
demo-days
+
microdf
+
scf
+
+
+
+ + +
+ +
+
Author
+
+

Max Ghenis

+
+
+ +
+
Published
+
+

January 29, 2021

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

For Monday’s PSL Demo Day, I showed how to use the scf and microdf PSL Python packages from the Google Colab web-based Jupyter notebook interface.

+

The scf package extracts data from the Federal Reserve’s Survey of Consumer Finances, the canonical source of US wealth microdata. scf has a single function: load(years, columns) , which then returns a pandas DataFrame with the specified column(s), each record’s survey weight, and the year (when multiple years are requested).

+

The microdf package analyzes survey microdata, such as that returned by the scf.load function. It offers a consistent paradigm for calculating statistics like means, medians, sums, and inequality statistics like the Gini index. Most functions are structured as follows: f(df, col, w, groupby) where df is a pandas DataFrame of survey microdata, col is a column(s) name to be summarized, w is the weight column, and groupby is the column(s) to group records in before summarizing.

+

Using Google Colab, I showed how to use these packages to quickly calculate mean, median, and total wealth from the SCF data, without having to install any software or leave the browser. I also demonstrated how to use the groupby argument of microdf functions to show how different measures of wealth inequality have changed over time. Finally, I previewed some of what’s to come with scf and microdf : imputations, extrapolations, inflation, visualization, and documentation, to name a few priorities.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-03-02-demo-day-contributing-psl.html b/posts/2021-03-02-demo-day-contributing-psl.html new file mode 100644 index 0000000..dc2a48c --- /dev/null +++ b/posts/2021-03-02-demo-day-contributing-psl.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Contributing to PSL projects + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Contributing to PSL projects

+
+
+ How to help software projects in the Policy Simulation Library. +
+
+
+
demo-days
+
PSL
+
git
+
github
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

March 2, 2021

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

In the most recent PSL Demo Day, I illustrate how to contribute to PSL projects. The open source nature of projects in the PSL catalog allows anyone to contribute. The modularity of the code, coupled with robust testing, means that one can bite off small pieces that help improve the models and remain confident those changes work as expected.

+

To begin the process of finding where to contribute to PSL projects, I advise looking through the PSL GitHub Organization to see what projects interest you. Once a project of interest is identified, looking over the open “Issues” can provide a sense of where model maintainers and users are looking for help (see especially the “Help Wanted” tags). It is also completely appropriate to create a new Issue to express interest in helping and ask for direction on where that might best be done given your experience and preferences.

+

When you are ready to begin to contribute to a project, you’ll want to fork and clone the GitHub repository to help you get the files on your local machine and ready for you to work with. Many PSL projects outline the detailed steps to get you up and running. For example, see the Tax-Calculator Contributor Guide, which outlines the step-by-step process for doing this and confirming that everything works as expected on your computer.

+

After you are set up and ready to begin modifying source code for the PSL project(s) you’re interested in contributing to, you can reference the PSL-incubating Git-Tutorial project that provides more details on the Git workflow followed by most PSL projects.

+

As you contribute, you may want to get more involved in the community. A couple ways to do this are to join any of the PSL community events, all of which are open to the public, and to post to the PSL Discourse Forums. These are great places to meet community members and ask questions about how and where to best contribute.

+

I hope this helps you get started as a PSL contributor – we look forward to getting you involved in making policy analysis better and more transparent!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html b/posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html new file mode 100644 index 0000000..ca2dd4f --- /dev/null +++ b/posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html @@ -0,0 +1,592 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher

+
+
+ How to move reforms between a tax-unit-level and society-wide model with the Compute.Studio API. +
+
+
+
demo-days
+
+
+
+ + +
+ +
+
Author
+
+

Matt Jensen

+
+
+ +
+
Published
+
+

March 2, 2021

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

Check out the video:

+
+
+

Show notes:

+

I demonstrate how to move a policy reform file from Tax-Brain to Tax-Cruncher using the Compute.Studio API. See the Demo C/S simulation linked below for text instructions that accompany the video.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-03-08-demo-day-cs-api-stitch.html b/posts/2021-03-08-demo-day-cs-api-stitch.html new file mode 100644 index 0000000..5f6f30f --- /dev/null +++ b/posts/2021-03-08-demo-day-cs-api-stitch.html @@ -0,0 +1,627 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Stitching together apps on Compute Studio + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Stitching together apps on Compute Studio

+
+
+ Creating an app with the Compute Studio API. +
+
+
+
demo-days
+
PSL
+
+
+
+ + +
+ +
+
Author
+
+

Hank Doupe

+
+
+ +
+
Published
+
+

March 8, 2021

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

In Demo Day 8, I talked about connecting multiple apps on Compute Studio with PSL Stitch. The source code for PSL stitch can be found in this repository.

+

Stitch is composed of three components:

+
    +
  • A python package that can be run like a normal Python package.
  • +
  • A RESTful API built with FastAPI that is called remotely to create simulations on Compute Studio.
  • +
  • A GUI built with ReactJS that makes calls to the REST API to create and monitor simulations.
  • +
+

One of the cool things about this app is that it uses ParamTools to read the JSON files under the hood. This means that it can read links to data in other Compute Studio runs, files on GitHub, or just plain JSON. Here are some example parameters:

+
    +
  • policy parameters: cs://PSLmodels:Tax-Brain@49779/inputs/adjustment/policy
  • +
  • tax-cruncher parameters: {"sage": [{"value": 25}]}
  • +
  • business tax parameters: {"CIT_rate": [{"value": 0.25, "year": 2021}]}
  • +
+

After clicking run, three simulations will be created on Compute Studio and the app will update as soon as the simulations have finished:

+
+
+

+
Getting started
+
+
+
+
+

+
CS Simulations
+
+
+

Once they are done, the simulations are best viewed and interacted with on Compute Studio, but you can still inspect the JSON response from the Compute Studio API:

+
+
+

+
Simulation Complete
+
+
+

I created this app to show that it’s possible to build apps on top of the Compute Studio API. I think PSL Stitch is a neat example of how to do this, but I am even more excited to see what others build next.

+

Also, this is an open source project and has lots of room for improvement. If you are interested in learning web technologies related to REST APIs and frontend development with JavaScript, then this project could be a good place to start!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-04-05-demo-day-stacked-revenue-estimates.html b/posts/2021-04-05-demo-day-stacked-revenue-estimates.html new file mode 100644 index 0000000..98774e3 --- /dev/null +++ b/posts/2021-04-05-demo-day-stacked-revenue-estimates.html @@ -0,0 +1,603 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Producing stacked revenue estimates with the Tax-Calculator Python API + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Producing stacked revenue estimates with the Tax-Calculator Python API

+
+
+ How to evaluate the cumulative effects of a multi-part tax reform. +
+
+
+
demo-days
+
individual-income-tax
+
tax-brain
+
tax-calculator
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

April 5, 2021

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

It’s often useful to be able to identify the effects of specific provisions individually and not just the overall impact of a proposal with many provisions. Indeed, when revenue estimates of tax law changes are reported (such as this JCT analysis of the American Rescue Plan Act of 2021), they are typically reported on a provision-by-provision basis. Finding the provision-by-provision revenue estimates is cumbersome with the Tax-Brain web application both because it’s hard to iterate over many provisions and because the order matters when stacking estimates, so that one needs to keep this order in mind as parameter values are updated for each additional provision in a full proposal.

+

In the PSL Demo Day on April 5, 2021, I show how to use the Python API of Tax-Calculator to efficiently produce stacked revenue estimates. In fact, after some initial setup, this can be done with just 12 lines of code (plus a few more to make the output look nice). The Google Colab notebook that illustrates this approach can be found at this link, but here I’ll walk through the four steps that are involved:

+
    +
  1. Divide up the full proposal into strings of JSON text that contain each provision you want to analyze. My example breaks up the Biden 2020 campaign proposal into seven provisions, but this is illustrative and you can make more or less provisions depending on the detail you would like to see.
  2. +
  3. Create a dictionary that contains, as its values, the JSON strings. A couple notes on this. First, the dictionary keys should be descriptive of the provisions as they will become the labels for each provision in the final table of revenue estimates we produce. Second, order matters here. You’ll want to be sure the current law baseline is first (the value for this will be an empty dictionary). Then you specify the provisions. The order you specify will likely affect your revenue estimates from a given provision (for instance, expanding/restricting a deduction has a larger revenue effect when rates are higher), but there are not hard and fast rules on the “right” order. Traditionally, rate changes are stacked first and tax expenditures later in the order.
  4. +
  5. Iterate over this dictionary. With a dictionary of provisions in hand, we can write a “for loop” to iterate over the provision, simulating the Tax-Calculator model at each step. Note that when the Policy class object in Tax-Calculator is modified, it only needs to be told the changes in tax law parameters relative to its current state. In other words, when we are stacking provisions, estimating the incremental effect of each, you can think of the Policy object having a baseline policy that is represented by the current law baseline plus all provisions that have been analyzed before the provision at the current iteration. The Policy class was created in this way so that one can easily represent policy changes, requiring the user to only input the set of parameters that are modified, not every single parameter’s value under the hypothetical policy. But this also makes it parsimonious to stack provisions as we are doing here. Notice that the JSON strings for each provision (created in Step 1) can be specified independent of the stacking order. We only needed to slice the full set of proposals into discrete chunks, we didn’t need to worry about creating specifications of cumulative policy changes.
  6. +
  7. Format output for presentation. After we’ve run a Tax-Calculator simulation for the current law baseline plus each provision (and each year in the budget window), we’ve got all the output we need. With this output, we can quickly create a table that will nicely present our stacked revenue estimate. One good check to do here is to create totals across all provisions and compare this to the simulated revenue effects of running the full set of proposals in one go. This check helps to ensure that you didn’t make an error in specifying your JSON strings. For example, it’s easy to leave out one or more provisions, especially if there are many.
  8. +
+

I hope this provides a helpful template for your own analysis. Note that one can modify this code in several useful ways. For example, within the for-loops, the Behavioral-Responses can be called to produce revenue estimates that take into account behavioral feedback. Or one could store the individual income tax and payroll tax revenue impacts separately (rather than return the combined values as in the example notebook). Additional outputs (even the full set of microdata after each provision is applied) can be stored for even more analysis.

+

In the future, look for Tax-Brain to add stacked revenue estimates to its capabilities. It’ll still be important for users to carve up their full list of policy changes into sets of provisions as we did in Steps 1 and 2 above, but Tax-Brain will then take care of the rest behind the scenes.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-05-17-demo-day-jupyter-book-deploy.html b/posts/2021-05-17-demo-day-jupyter-book-deploy.html new file mode 100644 index 0000000..a84f7c0 --- /dev/null +++ b/posts/2021-05-17-demo-day-jupyter-book-deploy.html @@ -0,0 +1,634 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Updating Jupyter Book documentation with GitHub Actions + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Updating Jupyter Book documentation with GitHub Actions

+
+
+ How to keep interactive programmatic notebook-based documentation up-to-date in your pull request workflow. +
+
+
+
demo-days
+
jupyter-book
+
GH-actions
+
documentation
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

May 17, 2021

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

Open source projects must maintain clear and up-to-date documentation in order to attract users and contributors. Because of this, PSL sets minimum standards for documentation among cataloged projects in its model criteria. A recent innovation in executable books, Jupyter Book, has provided an excellent format for model documentation and has been widely adopted by PSL projects (see for example OG-USA, Tax-Brain, Tax-Calculator).

+

Jupyter Book allows one to write documents with executable code and text together, as in Jupyter notebooks. But Jupyter Book pushes this further by allowing documents with multiple sections, better integration of TeX for symbols and equations, BibTex style references and citations, links between sections, and Sphinx integration (for auto-built documentation of model APIs from source code). Importantly for sharing documentation, Jupyter Books can easily be compiled to HTML, PDF, or other formats. Portions of a Jupyter Book that contain executable code can be downloaded as Jupyter Notebooks or opened in Google Colab or binder

+

The Jupyter Book documentation is excellent and will help you get started creating your “book” (tip: pay close attention to formatting details, including proper whitespace). What I do here is outline how you can easily deploy your documentation to the web and keep it up-to-date with your project.

+

I start from the assumption that you have the source files to build your Jupyter Book checked into the main branch of your project (these maybe yml , md , rst , ipynb or other files). For version control purposes and to keep your repo trim, you generally don’t want to check the built documentation files to this branch (tip: consider adding the folder these files will go to (e.g., /_build to your .gitignore ). When these files are in place and you can successfully build your book locally, it’s time for the first step.

+

Step 1: Add two GH Actions to your project’s workflow: 1. An action to check that your documentation files build without an error. I like to run this on each push to a PR. The action won’t hang on warnings, but will fail if your Jupyter Book doesn’t build at all. An example of this action from the OG-USA repo is here:

+

+name: Check that docs build
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
+        with:
+          persist-credentials: false
+
+      - name: Setup Miniconda
+        uses: conda-incubator/setup-miniconda@v2
+        with:
+          activate-environment: ogusa-dev
+          environment-file: environment.yml
+          python-version: 3.7
+          auto-activate-base: false
+
+      - name: Build # Build Jupyter Book
+        shell: bash -l {0}
+        run: |
+          pip install jupyter-book
+          pip install sphinxcontrib-bibtex==1.0.0
+          pip install -e .
+          cd docs
+          jb build ./book
+

To use this in your repo, you’ll just need to change a few settings such as the name of the environment and perhaps the Python version and path to the book source files. Note that in the above yml file sphinxcontrib-bibtex is pinned. You maybe able to unpin this, but OG-USA needed this pin for documentation to compile property due to changes in the jupyter-book and sphinxcontrib-bibtex packages.

+
    +
  1. An action that builds and deploys the Jupyter Book to GH Pages. The OG-USA project uses the deploy action from James Ives in this action. This is something that you will want to run when PRs are merged into your main branch so that the documentation is kept up-to-date with the project. To modify this action for your repo, you’ll need to change the repo name, the environment name, and potentially the Python version, branch name, and path to the book source files.
  2. +
+

Step 2: Once the action in (2) above is run, your compiled Jupyter Book docs will be pushed to a gh-pages branch in your repository (the action will create this branch for you if it doesn’t already exist). At this point, you should be able to see your docs at the url https://GH_org_name.github.io/Repo_name . But it probably won’t look very good until you complete this next step. To have your Jupyter Book render on the web as you see it on your machine, you will want to push and merge an empty file with the name .nojekyll into your repo’s gh-pages branch.

+

That’s it! With these actions, you’ll be sure that your book continues to compile and a new version will be published to the web with with each merge to your main branch, ensuring that your documentation stays up-to-date.

+

Some additional tips:

+
    +
  • Use Sphinx to document your projects API. By doing so you’ll automate an important part of your project’s documentation – as long as the docstrings are updated when the source code is, the Jupyter Book you are publishing to the web will be kept in sync with no additional work needed.
  • +
  • You can have your gh-pages-hosted documentation point to a custom URL.
  • +
  • Project maintainers should ensure that docs are updated with PRs that are relevant (e.g., if the PR changes an the source code affecting a user interface, then documentation showing example usage should be updated) and help contributors make the necessary changes to the documentation source files.
  • +
+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-06-14-demo-day-tax-brain-python-api.html b/posts/2021-06-14-demo-day-tax-brain-python-api.html new file mode 100644 index 0000000..82ae0d6 --- /dev/null +++ b/posts/2021-06-14-demo-day-tax-brain-python-api.html @@ -0,0 +1,646 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Using the TaxBrain Python API + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Using the TaxBrain Python API

+
+
+ A programmatic interface to compute the impact of tax reform. +
+
+
+
demo-days
+
individual-income-tax
+
tax-brain
+
tax-calculator
+
+
+
+ + +
+ +
+
Author
+
+

Anderson Frailey

+
+
+ +
+
Published
+
+

June 14, 2021

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

The TaxBrain project was primarily created to serve as the backend of the Tax-Brain web-application. But at its core, TaxBrain is a Python package that greatly simplifies tax policy analysis. For this PSL Demo-Day, I demonstrated TaxBrain’s capabilities as a standalone package, and how to use it to produce high-level summaries of the revenue impacts of proposed tax policies. The Jupyter Notebook from the presentation can be found here.

+

TaxBrain’s Python API allows you to run a full analysis of income tax policies in just three lines of code:

+
from taxbrain import TaxBrain
+
+tb = TaxBrain(START_YEAR, END_YEAR, use_cps=True, reform=REFORM_POLICY)
+tb.run()
+

Where START_YEAR and END_YEAR are the first and last years, respectively, of the analysis; use_cps is a boolean indicator that you want to use the CPS-based microdata file prepared for use with Tax-Calculator; and REFORM_POLICY is either a JSON file or Python dictionary that specifies a reform suitable for Tax-Calculator. The forthcoming release of TaxBrain will also include a feature that allows you to perform a stacked revenue analysis as well. The inspiration for this feature was presented by Jason DeBacker in a previous demo-day.

+

Once TaxBrain has been run, there are a number of methods and functions included in the package to create tables and plots to summarize the results. I used the Biden 2020 campaign proposal in the demo and the resulting figures are below. The first is a “volcano plot” that makes it easy to see the magnitude of the change in tax liability individuals across the income distribution face. Each dot represents a tax unit, and the x and y variables can be customized based on the user’s needs.

+

+

The second gives a higher-level look at how taxes change in each income bin. It breaks down what percentage of each income bin faces a tax increase or decrease, and the size of that change.

+

+

The final plot shown in the demo simply shows tax liabilities by year over the budget window.

+

+

The last feature I showed was TaxBrain’s automated reports. TaxBrain uses saved results and an included report template to write a report summarizing the findings of your simulation. The reports include tables and figures similar to what you may find in similar write ups by the Joint Committee on Taxation or Tax Policy Center including a summary of significant changes caused by the reform, and all you need is one line of code:

+
report(tb, name='Biden Proposal', outdir='biden', author='Anderson Frailey')
+

The above code will save a PDF copy of the report in a directory called biden along with PNG files for each of the graphs created and the raw Markdown text used for the report, which you can then edit as needed if you would like to add content to the report that is not already included. Screenshots of the default report are included below.

+

+

There are of course downsides to using TaxBrain instead of Tax-Calculator directly. Specifically, it’s more difficult, and sometimes impossible, to perform custom tasks like modeling a feature of the tax code that hasn’t been added to Tax-Calculator yet or advanced work with marginal tax rates. But for day-to-day tax modeling, the TaxBrain Python package can significantly simply any workflow.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html b/posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html new file mode 100644 index 0000000..04746b4 --- /dev/null +++ b/posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Constructing tax data for the 50 states + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Constructing tax data for the 50 states

+
+
+ A new dataset to facilitate state-level analysis of federal tax reforms. +
+
+
+
demo-days
+
tax
+
data
+
us
+
+
+
+ + +
+ +
+
Author
+
+

Don Boyd

+
+
+ +
+
Published
+
+

July 16, 2021

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

Federal income tax reform impacts can vary dramatically across states. The cap on state and local tax deductions (SALT) is a well-known example, but other policies also have differential effects because important tax-relevant features vary across states such as the income distribution, relative importance of wage, business, and retirement income, and family size and structure. Analyzing how policy impacts vary across states requires data that faithfully represent the characteristics of the 50 states.

+

This Demo Day described a method and software for constructing state weights for microdata files that (1) come as close as possible to targets for individual states, while (2) ensuring that the state weights for each tax record sum to its national weight. The latter objective ensures that the sum of state impacts for a tax reform equals the national impact.

+

This project developed state weights for a data file with more than 200,000 microdata records. The weighted data file comes within 0.01% of desired values for more than 95% of approximately 10,000 targets.

+

The goal of the slides and video was to enable a motivated Python-skilled user of the PSL TaxData and Tax-Calculator projects to reproduce project results: 50-state weights for TaxData’s primary output, the puf.csv microdata file (based primarily on an IRS Public Use File), using early-stage open-source software developed in the project. Thus, the demo is technical and focused on nuts and bolts.

+

The methods and software can also be used to:

+
    +
  • Create geographic-area weights for other microdata files
  • +
  • Apportion state weights to Congressional Districts or counties, if suitable targets can be developed
  • +
  • Create state-specific microdata files suitable for modeling state income taxes
  • +
+

The main topics covered in the slides and video are:

+
    +
  • Creating national and state targets from IRS summary data
  • +
  • Preparing a national microdata file for state weighting
  • +
  • Approaches to constructing geographic weights
  • +
  • Running software that implements the Poisson-modeling approach used in the project
  • +
  • Measures of quality of the results
  • +
+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-08-09-demo-day-unit-testing.html b/posts/2021-08-09-demo-day-unit-testing.html new file mode 100644 index 0000000..576bdcc --- /dev/null +++ b/posts/2021-08-09-demo-day-unit-testing.html @@ -0,0 +1,629 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Unit testing for open source projects + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Unit testing for open source projects

+
+
+ How to ensure that individual functions do what you expect. +
+
+
+
demo-days
+
R
+
Python
+
unit-testing
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

August 9, 2021

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

Unit testing is the testing of individual units or functions of a software application. This differs from regression testing that focuses on the verification of final outputs. Instead, unit testing tests each smallest testable component of your code. This helps to more easily identify and trace errors in the code.

+

Writing unit tests is good practice, though not one that’s always followed. The biggest barrier to writing unit tests is that doing so takes time. You might wonder “why am I testing code that runs?” But there are a number benefits to writing unit tests:

+
    +
  • It ensures that the code does what you expect it to do
  • +
  • You’ll better understand what your code is doing
  • +
  • You will reduce time tracking down bugs in your code
  • +
+

Often, writing unit tests will save you time in the longer run because it reduces debugging time and because it forces you to think more about what your code does, which often leads to the development of more efficient code. And for open source projects, or projects with many contributors, writing unit tests is important in reducing the likelihood that errors are introduced into your code. This is why the PSL catalog criteria requires projects to provide at least some level of unit testing.

+

In the PSL Demo Day video linked above, I illustrate how to implement unit tests in R using the testthat package. There are essentially three steps to this process:

+
    +
  1. Create a directory to put your testing script in, e.g., a folder called tests
  2. +
  3. Create one or more scripts that define your tests. +
      +
    • Each test is represented as a call of the test_that function and contain an statement that will evaluate as true or false (e.g., you may use the expect_equal function to verify that a function returns expected values given certain inputs).
    • +
    • You will want to use test in the name of these tests scripts as well as something descriptive of what is tested.
    • +
  4. +
  5. Create a script that will run your tests. +
      +
    • Here you’ll need to import the testthat package and you’ll need to call the script(s) you are testing to load their functions.
    • +
    • Then you’ll use the test_dir function to pass the directory in which the script(s) you created in Step 2 reside.
    • +
  6. +
+

Check out the video to see examples of how each of these steps is executed. I’ve also found this blog post on unit tests with testthat to be helpful.

+

Unit testing in Python seems to be more developed and straightforward with the excellent pytest package. While pytest offers many options for parameterizing tests, running tests in parallel, and more, the basic steps remain the same as those outlined above:

+
    +
  1. Create a directory for your test modules (call this folder tests as pytest will look for that name).
  2. +
  3. Create test modules that define each test +
      +
    • Tests are defined much like any other function in Python, the but will involve some assertion statement is triggered upon test failure.
    • +
    • You will want to use test in the name of these tests modules as well as something descriptive of what is tested.
    • +
  4. +
  5. You won’t need to create a script to run your tests as with testthat, but you may create a pytest.ini file to customize your tests options.
  6. +
+

That’s about it to get started writing unit tests for your code. PSL cataloged projects provide many excellent examples of a variety of unit tests, so search them for examples to build from. In a future Demo Day and blog post, we’ll talk about continuous integration testing to help get even more out of you unit tests.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-09-20-demo-day-cs-auto-deploy.html b/posts/2021-09-20-demo-day-cs-auto-deploy.html new file mode 100644 index 0000000..87dd77e --- /dev/null +++ b/posts/2021-09-20-demo-day-cs-auto-deploy.html @@ -0,0 +1,687 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Deploying apps on Compute Studio + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Deploying apps on Compute Studio

+
+
+ How to deploy apps on Compute Studio using the new automated deployments feature. +
+
+
+
demo-days
+
policy-simulation-library
+
compute-studio
+
+
+
+ + +
+ +
+
Author
+
+

Hank Doupe

+
+
+ +
+
Published
+
+

September 20, 2021

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

Compute Studio (C/S) is a platform for publishing and sharing computational models and data visualizations. In this demo day, I show how to publish your own project on C/S using the new automated deployments feature. You can find an in depth guide to publishing on C/S in the developer docs.

+

C/S supports two types of projects: models and data visualizations. Models are fed some inputs and return a result. Data visualizations are web servers backed by popular open-source libraries like Bokeh, Dash, or Streamlit. Models are good for long-running processes and producing archivable results that can be shared and returned to easily. Data visualizations are good for highly interactive and custom user experiences.

+

Now that you’ve checked out the developer docs and set up your model or data-viz, you can head over to the C/S publishing page https://compute.studio/new/ to publish your project. Note that this page is still very much under construction and may look different in a few weeks.

+
+
+

+
Publish page
+
+
+

Next, you will be sent to the second stage in the publish flow where you will provide more details on how to connect your project on C/S:

+
+
+

+
Connect Project page
+
+
+

Clicking “Connect App” will take you to the project home page:

+
+
+

+
Project home page
+
+
+

Go to the “Settings” button in the top-right corner and this will take you to the project dashboard where you can modify everything from the social preview of your project to the amount of compute resources it needs:

+
+
+

+
Project dashboard
+
+
+

The “Builds” link in the sidebar will take you to the builds dashboard where you can create your first build:

+
+
+

+
Build history dashboard
+
+
+

It’s time to create the first build. You can do so by clicking “New Build”. This will take you to the build status page. While the build is being scheduled, the page will look like this:

+
+
+

+
Build scheduled page
+
+
+

You can click the “Build History” link and it will show that the build has been started:

+
+
+

+
Build history dashboard
+
+
+

The build status page should be updated at this point and will look something like this:

+
+
+

+
Build status page
+
+
+

C/S automated deployments are built on top of Github Actions. Unfortunately, the logs in Github Actions are not available through the Github API until after the workflow is completely finished. The build status dashboard will update as the build progresses and once it’s done, you will have full access to the logs from the build. These will contain outputs from installing your project and the outputs from your project’s tests.

+

In this case, the build failed. We can inspect the logs to see that an import error caused the failure:

+
+
+

+
Build failed status page
+
+
+
+
+

+
Build failed status page with logs
+
+
+

I pushed an update to my fork of Tax-Cruncher on Github and restarted the build by clicking “Failure. Start new Build”. The next build succeeded and we can click “Release” to publish the project:

+
+
+

+
Build status page success
+
+
+

The builds dashboard now shows the two builds:

+
+
+

+
Updated build history page
+
+
+

Finally, let’s go run our new model:

+
+
+

+
Run project page
+
+
+

It may take a few seconds for the page to load. This is because the model code and all of its dependencies are being loaded onto the C/S servers for the first time:

+
+
+

+
Run project page with inputs form
+
+
+

The steps for publishing a data visualization are very similar. The main idea is that you tell C/S what Python file your app lives in and C/S will know how to run it given your data visualization technology choice.

+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-11-01-demo-day-og-core.html b/posts/2021-11-01-demo-day-og-core.html new file mode 100644 index 0000000..15f8908 --- /dev/null +++ b/posts/2021-11-01-demo-day-og-core.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: The OG-Core platform + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: The OG-Core platform

+
+
+ A Python platform for building country-specific overlapping generations general equilibrium models. +
+
+
+
demo-days
+
python
+
macroeconomics
+
overlapping-generations
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

November 1, 2021

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

The OG-Core model is a general equilibrium, overlapping generations (OG) model suitable for evaluating fiscal policy. Since the work of Alan Auerbach and Laurence Kotlikoff in the 1980s, this class of model has become a standard in the macroeconomic analysis of tax and spending policy. This is for good reason. OG models are able to capture the impacts of taxes and spending in the short and long run, examine incidence of policy across generations of people (not just short run or steady state analysis of a cross-section of the economy), and capture important economic dynamics (e.g., crowding out effects of deficit-financed policy).

+

In the PSL Demo Day presentation linked above, I cover the basics of OG-Core: its history, its API, and how country-specific models can use OG-Core as a dependency. In brief, OG-Core provides a general overlapping generations framework, from which parameters can be calibrated to represent particular economies. Think of it this way: an economic model is just a set of parameters plus a system of equations. OG-Core spells out all of the equations to represent an economy with heterogeneous agents, production and government sectors, open economy options, and detailed policy rules. OG-Core also includes default values for all parameters, along with parameter metadata and parameter validation rules. A country specific application is then just a particular parameterization of the general OG-Core model.

+

As an example of a country-specific application, one can look at the OG-USA model. This model provides a calibration of OG-Core to the United States. The source code in that project allows one to go from raw data sources to the estimation and calibration procedures used to determine parameter values representing the United States, to parameter values in formats suitable for use in OG-Core. Country-specific models like OG-USA include (where available) links to microsimulation models of tax and spending programs to allow detailed microdata of actual and counterfactual policies to inform the net tax-transfer functions used in the OG-Core model. For those interested in building their own country-specific model, the OG-USA project provides a good example to work from.

+

We encourage you to take a look at OG-Core and related projects. New contributions and applications are always welcome. If you have questions or comments, reach out through the relevant repositories on Github to me, @jdebacker, or Rick Evans, @rickecon.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-12-08-demo-day-synthimpute.html b/posts/2021-12-08-demo-day-synthimpute.html new file mode 100644 index 0000000..474073a --- /dev/null +++ b/posts/2021-12-08-demo-day-synthimpute.html @@ -0,0 +1,607 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Using synthimpute for data fusion + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Using synthimpute for data fusion

+
+
+ The synthimpute Python package fuses and synthesizes economic datasets with machine learning. +
+
+
+
demo-days
+
python
+
data-fusion
+
synthimpute
+
+
+
+ + +
+ +
+
Author
+
+

Max Ghenis

+
+
+ +
+
Published
+
+

December 8, 2021

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

Suppose a policy analyst sought to estimate the impact of a policy that changed income tax rates and benefit rules while also adding a progressive wealth tax. The standard approach is to use a microsimulation model, where the rules are programmed as code, and then to run that program over a representative sample of households. Unfortunately, no single US government survey captures all the households characteristics needed to analyze this policy; in particular, the reliable tax and benefit information lies in surveys like the Current Population Survey (CPS), while wealth lies in the Survey of Consumer Finances (SCF).

+

Assuming the analyst wanted to start with the CPS, they have several options to estimate wealth for households to levy the progressive wealth tax. Two typical approaches include:

+
    +
  1. Linear regression, predicting wealth from other household characteristics common to the CPS and SCF.
  2. +
  3. Matching, in which each CPS household is matched with the most similar household in the SCF.
  4. +
+

Neither of these approaches, however, aim to estimate the distribution of wealth conditional on other characteristics. Linear regression explicitly estimates the mean prediction, but that could miss the tails of wealth from whom most of the wealth tax revenue will be collected.

+

Instead, the analyst could apply quantile regression to estimate the distribution of wealth conditional on other characteristics, and then measure the effectiveness of the estimation using quantile loss.

+

In this Demo Day, I present the concepts of microsimulation, imputation, and quantile loss to motivate the synthimpute Python package I’ve developed with my PolicyEngine colleague Nikhil Woodruff. In an experiment predicting wealth on a holdout set from the SCF, my former colleague Deepak Singh and I found that random forests significantly outperform OLS and matching for quantile regression, and this is the approach applied in synthimpute for both data fusion and data synthesis. The synthimpute API will be familiar to users of scikit-learn and statsmodels , with the difference being that synthimpute ’s rf_impute function returns a random value from the predicted distribution; it can also skew the predictions to meet a target total.

+

We’ve used synthimpute to fuse data for research reports at the UBI Center and to enhance the PolicyEngine web app for UK tax and benefit simulation, and we welcome new users and contributors. Feel free to explore the repository or contact me with questions at max@policyengine.org.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2021-12-28-2021-year-in-review.html b/posts/2021-12-28-2021-year-in-review.html new file mode 100644 index 0000000..60b9b98 --- /dev/null +++ b/posts/2021-12-28-2021-year-in-review.html @@ -0,0 +1,602 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - 2021: A year in review + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

2021: A year in review

+
+
+ Highlights from the Policy Simulation Library in 2021. +
+
+
+
psl
+
psl-foundation
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

December 28, 2021

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

+
+

As 2021 winds down, I wanted to take a few minutes to reflect on the Policy Simulation Library’s efforts over the past year. With an amazing community of contributors, supporters, and users, PSL has been able to make a real impact in 2021.

+

The library saw two new projects achieve “cataloged” status: Tax Foundation’s Capital Cost Recovery model and the Federal Reserve Bank of New York’s DSGE.jl model. Both models satisfy all the the PSL criteria for transparency and reproducibility. Both are also written entirely in open source software: the Capital Cost Recovery model is in R and the DSGE model in Julia.

+

An exciting new project to join the Library this year is PolicyEngine. PolicyEngine is building open source tax and benefit mircosimulation models and very user-friendly interfaces to these models. The goal of this project is to take policy analysis to the masses through intuitive web and mobile interfaces for policy models. The UK version of the PolicyEngine app has already seen use from politicians interested in reforming the tax and benefit system in the UK.

+

Another excellent new addition to the library is the Federal-State Tax Project. This project provides data imputation tools to allow for state tax data that are representative of each state as well as federal totals. These datasets can then be used in microsimulation models, such as Tax-Calculator to study the impact of federal tax laws across the states. Matt Jensen and Don Boyd have published several pieces with these tools, including in State Tax Notes

+

PSL Foundation became an official business entity in 2021. While still awaiting a letter of determination for 501(c)(3) status from the IRS, PSL Foundation was able to raise more than $25,000 in the last few months of 2021 to support open source policy analysis!

+

PSL community members continued to interact several times each week in our public calls. The PSL Shop was launched in 2021 so that anyone can get themselves some PSL swag (with some of each purchase going back to the PSL Foundation to support the Library). In addition, PSL hosted 20 Demo Day presentations from 11 different presenters! These short talks covered everything from new projects to interesting applications of some of the first projects to join the Library, as well as general open source tools.

+

As in past years, PSL cataloged and incubating models were found to be of great use in current policy debates. Whether it was the ARPA, Biden administration proposals to expand the CTC, or California’s Basic Income Bill, the accessibility and ability to reproduce results from these open source projects has made them a boon to policy analysts.

+

We are looking forward to a great 2022! We expect the Library to continue to grow, foresee many interesting and helpful Demo Days, and are planning a DC PSL Workshop for March 2022. We hope to see you around these or other events!

+

Best wishes from PSL for a happy and healthy New Year!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-03-03-DC-workshop.html b/posts/2022-03-03-DC-workshop.html new file mode 100644 index 0000000..02abb52 --- /dev/null +++ b/posts/2022-03-03-DC-workshop.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Policy Simulation Library DC Workshop: Open source tools for analyzing tax policy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Policy Simulation Library DC Workshop: Open source tools for analyzing tax policy

+
+
+ Washington, DC open-source modeling workshop, March 25, 2022, 8:30am-1:00pm, Martin Luther King, Jr. Memorial Library. +
+
+
+
PSL
+
PSL-Foundation
+
Workshop
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

March 3, 2022

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

+
+

The Policy Simulation Library is hosting a workshop in Washington, DC on March 25 on open source tools for the analysis of tax policy. Participants will learn how to use open source models from the Library for revenue estimation, distributional analysis, and to simulate economic impacts of tax policy. The workshop is intended to be a hands-on experience and participants can expect to leave with the required software, documentation, and knowledge to continue using these tools. All models in the workshop are written in the Python programming language–familiarity with the language is helpful, but not required.

+

Workshop Schedule:

+ +

The workshop will be held at the Martin Luther King Jr. Memorial Library in Washington, DC. Participants are expected to arrive by 8:30am and the program will conclude at 1:00pm. Breakfast and lunch will be provided. PSL Foundation is sponsoring the event and there is no cost to attend. Attendance is limited to 30 in order to make this a dynamic and interactive workshop.

+

To register, please use this Google Form. Registration will close March 11. Participants will be expected to bring a laptop to the workshop where they can interact with the software in real time with the instructors. Registered participants will receive an email before the event with a list of software to install before the workshop.

+

Please feel free to share this invitation with your colleagues.

+

Questions about the workshop can be directed to Jason DeBacker at jason.debacker@gmail.com.

+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-04-12-demo-day-policyengine-us.html b/posts/2022-04-12-demo-day-policyengine-us.html new file mode 100644 index 0000000..d2bb705 --- /dev/null +++ b/posts/2022-04-12-demo-day-policyengine-us.html @@ -0,0 +1,603 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Modeling taxes and benefits with the PolicyEngine US web app + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Modeling taxes and benefits with the PolicyEngine US web app

+
+
+ PolicyEngine US is a new web app for computing the impact of US tax and benefit policy. +
+
+
+
demo-days
+
apps
+
taxes
+
benefits
+
us
+
+
+
+ + +
+ +
+
Author
+
+

Max Ghenis

+
+
+ +
+
Published
+
+

April 12, 2022

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

PolicyEngine is a nonprofit that builds free, open-source software to compute the impact of public policy. After launching our UK app in October 2021, we’ve just launched our US app, which calculates households’ federal taxes and several benefit programs, both under current law and under customizable policy reforms.

+

In this Demo Day, I provide background on PolicyEngine and demonstrate how to use PolicyEngine US (a Policy Simulation Library cataloged model) to answer a novel policy question:

+
+

How would doubling both (a) the Child Tax Credit and (b) the Supplemental Nutrition Assistance Program (SNAP) net income limit affect a single parent in California with $1,000 monthly rent and $50 monthly broadband costs?

+
+

By bringing together tax and benefit models into a web interface, we can answer this question quickly without programming experience, as well as an unlimited array of questions like it. The result is a table breaking down the household’s net income by program, as well as graphs of net income and marginal tax rates as the household’s earnings vary.

+

I close with a quick demo of PolicyEngine UK, which adds society-wide results like the impact of reforms on the budget, poverty, and inequality, as well as contributed policy parameters. We’re planning to bring those features to PolicyEngine US, along with state tax and benefit programs in all 50 states, over the next two years (if not sooner).

+

Feel free to explore the app and reach out with any questions at max@policyengine.org.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-04-18-demo-day-ccc-international.html b/posts/2022-04-18-demo-day-ccc-international.html new file mode 100644 index 0000000..1db13e5 --- /dev/null +++ b/posts/2022-04-18-demo-day-ccc-international.html @@ -0,0 +1,600 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator

+
+
+ Using Cost-of-Capital-Calculator with data on international business tax policies. +
+
+
+
demo-days
+
cost-of-capital-calculator
+
business-taxation
+
corporate-income-tax
+
taxes
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

April 18, 2022

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

In the Demo Day video shared here, I show how to use open source tools to analyze international corporate tax competitiveness. The two main tools illustrated are the Cost-of-Capital-Calculator (CCC), a model to compute measures of the tax burden on new investments, and Tax Foundation’s International Tax Competitiveness Index (ITCI).

+

Tax Foundation has made many helpful resources available online. Their measures of international business tax policy are a great example of this. The ICTI outputs and inputs are all well documented, with source code to reproduce results available on GitHub.

+

I plug Tax Foundation’s country-by-country data into CCC functions using it’s Python API. Because CCC is designed to flexibly take array or scalar data, operating on rows of tabular data, such as that in the ITCI, is relatively straight-forward. The Google Colab notebook I walk through in this Demo Day, can be a helpful example to follow if you’d like to do something similar to this with the Tax Foundation data - or your own data source. From the basic building blocks there (reading in data, calling CCC functions), you can extend the analysis in a number of ways. For example adding additional years of data (Tax Foundation posts their data back to 2014), modifying economic assumptions, or creating counter-factual policy experiments across sets of countries.

+

If you find this example useful, or have questions or suggestions about this type of analysis, please feel free to reach out to me.

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-06-28-demo-day-github.html b/posts/2022-06-28-demo-day-github.html new file mode 100644 index 0000000..a226a54 --- /dev/null +++ b/posts/2022-06-28-demo-day-github.html @@ -0,0 +1,609 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: Getting Started with GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: Getting Started with GitHub

+
+
+ The basics of forking and cloning repositories and working on branches. +
+
+
+
demo-days
+
github
+
git
+
workflow
+
getting-started
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

June 28, 2022

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

Git and GitHub often present themselves as barriers to entry to would-be contributors to PSL projects, even for those who are otherwise experienced with policy modeling. But these tools are critical to collaboration on open source projects. In the Demo Day video linked above, I cover some of the basics to get set up and begin contributing to an open source project.

+

There are four steps I outline:

+
    +
  1. Create a “fork” of the repository you are interested in. A fork is a copy of the source code that resides on GitHub (i.e., in the cloud). A fork gives you control over a copy of the source code. You will be able to merge in changes to the code on this fork, even if you don’t have permissions to do so with the original repository.
  2. +
  3. Clone” the fork. Cloning will download a copy of the source code from your fork onto your local machine. But cloning is more than just downloading the source code. It will include the version history of the code and automatically create a link between the local files and the remote files on your fork.
  4. +
  5. Configure your local files to talk to both your fork (which has a default name of origin) and the original repository you forked from (which typically has the default name of upstream). Do this by using your command prompt or terminal to navigate to the directory you just cloned. From there, run:
  6. +
+
git remote add upstream URL_to_original_repo.git
+

And check that this worked by giving the command:

+
git remote -v
+

If things worked, you should see URLs to your fork and the upstream repository with “(fetch)” and “(push)” by them More info on this is in the Git docs.

+
    +
  1. Now that you have copies of the source code on your fork and on your local machine, you are ready to begin contributing. As you make changes to the source code, you’ll want to work on development branches. Branches are copies of the code. Ideally, you keep your “main” (or “master”) branch clean (i.e., your best version of the code) and develop the code on branches. When you’ve completed the development work (e.g., adding a new feature) you will them merge this into the “main” branch.
  2. +
+

I hope this helps you get started contributing to open source projects. Git and GitHub are valuable tools and there is lots more to learn, but these basics will get you going. For more information, see the links below. If you want to get started working with a project in the Library, feel free to reach out to me through the relevant repo (@jdebacker on GitHub) or drop into a PSL Community Call (dates on the PSL Calendar).

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-07-14-demo-day-cambridge-cash-assistance.html b/posts/2022-07-14-demo-day-cambridge-cash-assistance.html new file mode 100644 index 0000000..7f1ecab --- /dev/null +++ b/posts/2022-07-14-demo-day-cambridge-cash-assistance.html @@ -0,0 +1,592 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - Demo Day: How does targeted cash assistance affect incentives to work? + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

Demo Day: How does targeted cash assistance affect incentives to work?

+
+
+ How a proposed program in Cambridge, Massachusetts would affect poverty and incentives. +
+
+
+
demo-days
+
benefits
+
us
+
+
+
+ + +
+ +
+
Author
+
+

Max Ghenis

+
+
+ +
+
Published
+
+

July 14, 2022

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

In this week’s Demo Day, I shared my paper published at the Center for Growth and Opportunity in June. “How does targeted cash assistance affect incentives to work?” analyzed a program Mayor Sumbul Siddiqui proposed in Cambridge, Massachusetts to provide $500 per month for 18 months to all families with dependents and income below 200% of the poverty line.

+

Targeted programs like these are common in guaranteed income pilots, and in some enacted policies, and I find that it would cost-effectively reduce poverty: if expanded to Massachusetts, it would cost $1.2 billion per year and cut child poverty 42%.

+

However, that targeting comes at a cost. Using the OpenFisca US microsimulation model (supported by the Center for Growth and Opportunity and cataloged by the Policy Simulation Library), I find that the program would deepen an existing welfare cliff at 200% of the poverty line. For example, a family of four would lose over $19,000 total—$9,000 from the cash assistance and $10,000 from other benefits—once they earn a dollar above 200% of the poverty line (about $55,000). To recover those lost benefits, they would have to earn an additional $26,000, a range I call the “earnings dead zone”.

+

My presentation reviews these trends in both slides and the PolicyEngine US app for computing the impacts of tax and benefit policy. For example, I show how repealing the SNAP emergency allotment would smooth out welfare cliffs, while reducing resources available to low-income families, and how a universal child allowance avoids work disincentives while less cost-effectively reducing poverty.

+

Policymakers face trade-offs between equity and efficiency, and typically labor supply responses consider marginal tax rates. With their infinite marginal tax rates, welfare cliffs are a less explored area, even though they surface in several parts of the tax and benefit system. This paper makes a start, but more research is yet to be done.

+ + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2022-12-31-2022-year-in-review.html b/posts/2022-12-31-2022-year-in-review.html new file mode 100644 index 0000000..75d7e14 --- /dev/null +++ b/posts/2022-12-31-2022-year-in-review.html @@ -0,0 +1,601 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - 2022: A year in review + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

2022: A year in review

+
+
+ Highlights from the Policy Simulation Library in 2022. +
+
+
+
psl
+
psl-foundation
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

December 31, 2022

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

+
+

This has been another successful year for the Policy Simulation Library, whose great community of contributors continue to make innovative advances in open source policy analysis, and for the PSL Foundation, which supports the Library and its community. We are so thankful for all those who have made financial or technical contributions to the PSL this year! In this blog post, I want to take this time at the end of the year to reflect on a few of the highlights from 2022.

+

PolicyEngine, a PSL Foundation fiscally-sponsored project, launched PolicyEngine US in April and has since seen many use cases of the model (check out the PolicyEngine year-in-review here). PolicyEngine had begun by leveraging the OpenFisca platform, but has transitioned to their own-maintained PolicyEngine Core. PolicyEngine Core and their related projects (such as PolicyEngine US and PolicyEngine UK) already meet all the criteria set forth by the Policy Simulation Library. Keep an eye out for lots more excellent tax and benefit policy analysis tools from PolicyEngine in 2023 and beyond!

+

PSL Foundation has partnered with QuantEcon, acting as a fiscal sponsor for their projects that provide training and training materials for economic modeling and econometrics using open source tools. QuantEcon ran a massive open online class in India that had more than 1000 registrants in summer of 2022. They also ran an online course for over 100 students from universities in Africa in 2022. Further, with the funding received through their partnership with PSL Foundation, QuantEcon will continue these efforts in 2023 with a planned, in-person course in India.

+

PSL hosted its first in-person workshop in March. The workshop focused on open source tools for tax policy analysis including Tax-Calculator, Cost-of-Capital-Calculator, OG-USA, and PolicyEngine US. The PSL event was, appropriately enough, hosted at the MLK Memorial Library in DC. We filled the space with 30 attendees from think tanks, consultancies, and government agencies. The workshop was a great success and we look forward to hosting more in-person workshops in the future.

+

PSL’s bi-weekly Demo Day series continued throughout 2022, with 13 Demo Days this year. In these, we saw a wide array of presenters from institutions such as the Federal Reserve Bank of Atlanta, PolicyEngine, Tax Foundation, National Center for Children in Poverty, IZA Institute of Labor Economics, Channels, the University of South Carolina, the Center for Growth and Opportunity, and the American Enterprise Institute. You can go back and rewatch any of these presentations on YouTube.

+

It’s been a fantastic year and we expect even more from the community and PSL Foundation in 2023. PSL community members continue to interact several times each week on our public calls. Check out the events page and join us in the New Year!

+

From all of us at the PSL, best wishes for a happy and healthy New Year!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/posts/2023-12-28-2023-year-in-review.html b/posts/2023-12-28-2023-year-in-review.html new file mode 100644 index 0000000..5a6a01c --- /dev/null +++ b/posts/2023-12-28-2023-year-in-review.html @@ -0,0 +1,604 @@ + + + + + + + + + + + + +Policy Simulation Library Blog - 2023: A year in review + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+

2023: A year in review

+
+
+ Highlights from the Policy Simulation Library in 2023. +
+
+
+
psl
+
psl-foundation
+
+
+
+ + +
+ +
+
Author
+
+

Jason DeBacker

+
+
+ +
+
Published
+
+

December 28, 2023

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

+
+

While there haven’t been any blog posts in 2023 :wink:, it has been a productive year for the Policy Simulation Library (PSL) community and PSL Foundation!

+

We’ve continued to serve our mission through education and outreach efforts. We hosted 13 Demo Days in 2023, including presentations from individuals at the Congressional Budget Office, Allegheny County, NOAA, Johns Hopkins, QuantEcon, the City of New York, and other institutions. Archived videos of the Demo Days are available on our YouTube Channel.

+

In addition, we hosted an in person workshop at the National Tax Association’s annual conference in November. This event featured the PolicyEngine-US project and was lead by Max Ghenis and Nikhil Woodruff, co-founders of PolicyEngine. Attendees included individuals from the local area (Denver) and conference attendees, who represented academia, government, and think tanks. Max and Nikhil provided an overview of PolicyEngine and then walked attendees through a hands-on exercise using the PolicyEngine US tool, having them write code to generate custom plots in a Google Colab notebook. It was a lot of fun – and the pizza was decent too!

+

Speaking of PolicyEngine, this fiscally-sponsored project of PSL Foundation had a banner year in terms of fundraising and development. The group received several grants in 2023 and closed out the year with a large grant from Arnold Ventures. They also wrote an NSF grant proposal which they are waiting to hear back from. The group added an experienced nonprofit executive, Leigh Gibson, to their team. Leigh provides support with fundraising and operations, and she’s been instrumental in these efforts. In terms of software development, the PolicyEngine team has been able to greatly leverage volunteers (more than 60!) with Pavel Makarchuk coming on as Policy Modeling Manager to help coordinate these efforts. With their community, PolicyEngine has codified numerous US state tax and benefit policies and has developed a robust method to create synthetic data for use in policy analysis. Be on the lookout for a lot more from them in 2024.

+

QuantEcon, another fiscally sponsored project, has also made tremendous contributions to open source economics in 2023. Most importantly, they ran a very successful summer school in West Africa. In addition, they have continued make key contributions to software tools useful for teaching and training economics tools. These include Jupyteach, which Spencer Lyon shared in our Demo Day series. With their online materials, textbooks, and workshops around the world, QuantEcon is shaping how researchers and policy analysts employ economic tools to solve real-world problems.

+

PSL Foundation added a third fiscally sponsored project, Policy Change Index (PCI) in 2023. PCI was founded by Weifeng Zhong, a Senior Research Fellow at the Mercatus Center at George Mason University, and uses natural language processing and machine learning to predict changes in policy among autocratic regimes. PCI has had a very successful start with PCI-China, predicting policy changes in China, and PCI-Outbreak, predicting the extent of true COVID-19 case counts in China during the pandemic. Currently, they are extending their work to include predictive indices for Russia, North Korea, and Iran. PSL-F is excited for the opportunity to help support this important work.

+

Other cataloged projects have continued to be widely used in 2023. To note a few of these use cases, the United Nations has partnered with Richard Evans and Jason DeBacker, maintainers of OG-Core, to help bring the modeling platform to developing countries they are assisting. Tax Foundation’s Capital Cost Recovery model has been updated to 2023 and used in their widely cited 2023 Tax Competitiveness Index. And the Tax-Calculator and TaxData projects both continue to used by think tanks and researchers.

+

As 2023 comes to a close, we look forward to 2024. We’ll be launching a new PSLmodels.org website soon. And there’ll be many more events – we hope you join in.

+

From all of us at the PSL, best wishes for a happy and healthy New Year!

+

Resources:

+ + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/psl/psl-foundation/2020/12/23/2020-year-in-review/index.html b/psl/psl-foundation/2020/12/23/2020-year-in-review/index.html new file mode 100644 index 0000000..5e2bb32 --- /dev/null +++ b/psl/psl-foundation/2020/12/23/2020-year-in-review/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/psl/psl-foundation/2021/12/28/2021-year-in-review/index.html b/psl/psl-foundation/2021/12/28/2021-year-in-review/index.html new file mode 100644 index 0000000..bf1693c --- /dev/null +++ b/psl/psl-foundation/2021/12/28/2021-year-in-review/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/psl/psl-foundation/2022/12/31/2022-year-in-review/index.html b/psl/psl-foundation/2022/12/31/2022-year-in-review/index.html new file mode 100644 index 0000000..0fd14a3 --- /dev/null +++ b/psl/psl-foundation/2022/12/31/2022-year-in-review/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/psl/psl-foundation/2023/12/28/2023-year-in-review/index.html b/psl/psl-foundation/2023/12/28/2023-year-in-review/index.html new file mode 100644 index 0000000..7859fdc --- /dev/null +++ b/psl/psl-foundation/2023/12/28/2023-year-in-review/index.html @@ -0,0 +1,14 @@ + + + Redirect + + + + + diff --git a/robots.txt b/robots.txt old mode 100755 new mode 100644 index 3d7106f..b2b4185 --- a/robots.txt +++ b/robots.txt @@ -1 +1 @@ -Sitemap: https://blog.pslmodels.org/sitemap.xml +Sitemap: https://PSLmodels.github.io/blog/sitemap.xml diff --git a/search.json b/search.json new file mode 100644 index 0000000..4b2eeb3 --- /dev/null +++ b/search.json @@ -0,0 +1,233 @@ +[ + { + "objectID": "posts/2021-03-02-demo-day-contributing-psl.html", + "href": "posts/2021-03-02-demo-day-contributing-psl.html", + "title": "Demo Day: Contributing to PSL projects", + "section": "", + "text": "In the most recent PSL Demo Day, I illustrate how to contribute to PSL projects. The open source nature of projects in the PSL catalog allows anyone to contribute. The modularity of the code, coupled with robust testing, means that one can bite off small pieces that help improve the models and remain confident those changes work as expected.\nTo begin the process of finding where to contribute to PSL projects, I advise looking through the PSL GitHub Organization to see what projects interest you. Once a project of interest is identified, looking over the open “Issues” can provide a sense of where model maintainers and users are looking for help (see especially the “Help Wanted” tags). It is also completely appropriate to create a new Issue to express interest in helping and ask for direction on where that might best be done given your experience and preferences.\nWhen you are ready to begin to contribute to a project, you’ll want to fork and clone the GitHub repository to help you get the files on your local machine and ready for you to work with. Many PSL projects outline the detailed steps to get you up and running. For example, see the Tax-Calculator Contributor Guide, which outlines the step-by-step process for doing this and confirming that everything works as expected on your computer.\nAfter you are set up and ready to begin modifying source code for the PSL project(s) you’re interested in contributing to, you can reference the PSL-incubating Git-Tutorial project that provides more details on the Git workflow followed by most PSL projects.\nAs you contribute, you may want to get more involved in the community. A couple ways to do this are to join any of the PSL community events, all of which are open to the public, and to post to the PSL Discourse Forums. These are great places to meet community members and ask questions about how and where to best contribute.\nI hope this helps you get started as a PSL contributor – we look forward to getting you involved in making policy analysis better and more transparent!\nResources:\n\nPSL Git-Tutorial\nPSL community events\nPSL Discourse Forums\nTax-Calculator Contributor Guide\nPSL GitHub Organization" + }, + { + "objectID": "posts/2021-09-20-demo-day-cs-auto-deploy.html", + "href": "posts/2021-09-20-demo-day-cs-auto-deploy.html", + "title": "Demo Day: Deploying apps on Compute Studio", + "section": "", + "text": "Compute Studio (C/S) is a platform for publishing and sharing computational models and data visualizations. In this demo day, I show how to publish your own project on C/S using the new automated deployments feature. You can find an in depth guide to publishing on C/S in the developer docs.\nC/S supports two types of projects: models and data visualizations. Models are fed some inputs and return a result. Data visualizations are web servers backed by popular open-source libraries like Bokeh, Dash, or Streamlit. Models are good for long-running processes and producing archivable results that can be shared and returned to easily. Data visualizations are good for highly interactive and custom user experiences.\nNow that you’ve checked out the developer docs and set up your model or data-viz, you can head over to the C/S publishing page https://compute.studio/new/ to publish your project. Note that this page is still very much under construction and may look different in a few weeks.\n\n\n\nPublish page\n\n\nNext, you will be sent to the second stage in the publish flow where you will provide more details on how to connect your project on C/S:\n\n\n\nConnect Project page\n\n\nClicking “Connect App” will take you to the project home page:\n\n\n\nProject home page\n\n\nGo to the “Settings” button in the top-right corner and this will take you to the project dashboard where you can modify everything from the social preview of your project to the amount of compute resources it needs:\n\n\n\nProject dashboard\n\n\nThe “Builds” link in the sidebar will take you to the builds dashboard where you can create your first build:\n\n\n\nBuild history dashboard\n\n\nIt’s time to create the first build. You can do so by clicking “New Build”. This will take you to the build status page. While the build is being scheduled, the page will look like this:\n\n\n\nBuild scheduled page\n\n\nYou can click the “Build History” link and it will show that the build has been started:\n\n\n\nBuild history dashboard\n\n\nThe build status page should be updated at this point and will look something like this:\n\n\n\nBuild status page\n\n\nC/S automated deployments are built on top of Github Actions. Unfortunately, the logs in Github Actions are not available through the Github API until after the workflow is completely finished. The build status dashboard will update as the build progresses and once it’s done, you will have full access to the logs from the build. These will contain outputs from installing your project and the outputs from your project’s tests.\nIn this case, the build failed. We can inspect the logs to see that an import error caused the failure:\n\n\n\nBuild failed status page\n\n\n\n\n\nBuild failed status page with logs\n\n\nI pushed an update to my fork of Tax-Cruncher on Github and restarted the build by clicking “Failure. Start new Build”. The next build succeeded and we can click “Release” to publish the project:\n\n\n\nBuild status page success\n\n\nThe builds dashboard now shows the two builds:\n\n\n\nUpdated build history page\n\n\nFinally, let’s go run our new model:\n\n\n\nRun project page\n\n\nIt may take a few seconds for the page to load. This is because the model code and all of its dependencies are being loaded onto the C/S servers for the first time:\n\n\n\nRun project page with inputs form\n\n\nThe steps for publishing a data visualization are very similar. The main idea is that you tell C/S what Python file your app lives in and C/S will know how to run it given your data visualization technology choice." + }, + { + "objectID": "posts/2020-11-06-introducing-psl-blog.html", + "href": "posts/2020-11-06-introducing-psl-blog.html", + "title": "Introducing the PSL Blog", + "section": "", + "text": "Our mission at the Policy Simulation Library is to improve public policy by opening up models and data preparation routines for policy analysis. To support and showcase our diverse community of users and developers, we engage across several mediums: a monthly newsletter, a Q&A forum, (now-virtual) meetups, our Twitter feed, our YouTube channel, documentation for models in our catalog, and of course, issues and pull requests on GitHub.\nToday, we’re adding a new medium: the PSL Blog. We’ll use this space to share major updates on our catalog, provide tutorials, and summarize events or papers that involve our models.\nIf you’d like to share your work on our blog, or to suggest content, drop me a line. To follow along, add the PSL blog’s RSS feed or subscribe to our newsletter.\nHappy reading,\nMax Ghenis\nEditor, PSL Blog" + }, + { + "objectID": "posts/2020-11-18-demo-day-creating-reform-files.html", + "href": "posts/2020-11-18-demo-day-creating-reform-files.html", + "title": "Demo Day: Building policy reform files", + "section": "", + "text": "Check out the video:\n\nWe will host Demo Days every two weeks until the end of the year. You can see our schedule on our events page.\n\nShow notes:\nI demonstrate how to build policy reform files using the Tax-Brain webapp on Compute Studio. (Useful links below.) This is an introductory lesson that ends with a cliffhanger. We don’t run the model. But we do generate an individual income and payroll tax reform file that is compatible with a range of policy simulation models and analytic tools, some designed for policy decision makers, others for taxpayers and benefits recipients interested in assessing their own circumstances.\nBeyond individual and payroll tax analysis, the reform file can be used with models that assess pass-through and corporate taxation of businesses, as well as a variety of income benefit programs. A wide range of use cases will occupy future events.\nResources:\n\nDemo C/S simulation\nIRS Form 1040\nPSL Catalog\nPSL Events" + }, + { + "objectID": "posts/2021-03-08-demo-day-cs-api-stitch.html", + "href": "posts/2021-03-08-demo-day-cs-api-stitch.html", + "title": "Demo Day: Stitching together apps on Compute Studio", + "section": "", + "text": "In Demo Day 8, I talked about connecting multiple apps on Compute Studio with PSL Stitch. The source code for PSL stitch can be found in this repository.\nStitch is composed of three components:\n\nA python package that can be run like a normal Python package.\nA RESTful API built with FastAPI that is called remotely to create simulations on Compute Studio.\nA GUI built with ReactJS that makes calls to the REST API to create and monitor simulations.\n\nOne of the cool things about this app is that it uses ParamTools to read the JSON files under the hood. This means that it can read links to data in other Compute Studio runs, files on GitHub, or just plain JSON. Here are some example parameters:\n\npolicy parameters: cs://PSLmodels:Tax-Brain@49779/inputs/adjustment/policy\ntax-cruncher parameters: {\"sage\": [{\"value\": 25}]}\nbusiness tax parameters: {\"CIT_rate\": [{\"value\": 0.25, \"year\": 2021}]}\n\nAfter clicking run, three simulations will be created on Compute Studio and the app will update as soon as the simulations have finished:\n\n\n\nGetting started\n\n\n\n\n\nCS Simulations\n\n\nOnce they are done, the simulations are best viewed and interacted with on Compute Studio, but you can still inspect the JSON response from the Compute Studio API:\n\n\n\nSimulation Complete\n\n\nI created this app to show that it’s possible to build apps on top of the Compute Studio API. I think PSL Stitch is a neat example of how to do this, but I am even more excited to see what others build next.\nAlso, this is an open source project and has lots of room for improvement. If you are interested in learning web technologies related to REST APIs and frontend development with JavaScript, then this project could be a good place to start!\nResources:\n\nPSL Stitch\nSource code\nCompute Studio API Docs" + }, + { + "objectID": "posts/2023-12-28-2023-year-in-review.html", + "href": "posts/2023-12-28-2023-year-in-review.html", + "title": "2023: A year in review", + "section": "", + "text": "While there haven’t been any blog posts in 2023 :wink:, it has been a productive year for the Policy Simulation Library (PSL) community and PSL Foundation!\nWe’ve continued to serve our mission through education and outreach efforts. We hosted 13 Demo Days in 2023, including presentations from individuals at the Congressional Budget Office, Allegheny County, NOAA, Johns Hopkins, QuantEcon, the City of New York, and other institutions. Archived videos of the Demo Days are available on our YouTube Channel.\nIn addition, we hosted an in person workshop at the National Tax Association’s annual conference in November. This event featured the PolicyEngine-US project and was lead by Max Ghenis and Nikhil Woodruff, co-founders of PolicyEngine. Attendees included individuals from the local area (Denver) and conference attendees, who represented academia, government, and think tanks. Max and Nikhil provided an overview of PolicyEngine and then walked attendees through a hands-on exercise using the PolicyEngine US tool, having them write code to generate custom plots in a Google Colab notebook. It was a lot of fun – and the pizza was decent too!\nSpeaking of PolicyEngine, this fiscally-sponsored project of PSL Foundation had a banner year in terms of fundraising and development. The group received several grants in 2023 and closed out the year with a large grant from Arnold Ventures. They also wrote an NSF grant proposal which they are waiting to hear back from. The group added an experienced nonprofit executive, Leigh Gibson, to their team. Leigh provides support with fundraising and operations, and she’s been instrumental in these efforts. In terms of software development, the PolicyEngine team has been able to greatly leverage volunteers (more than 60!) with Pavel Makarchuk coming on as Policy Modeling Manager to help coordinate these efforts. With their community, PolicyEngine has codified numerous US state tax and benefit policies and has developed a robust method to create synthetic data for use in policy analysis. Be on the lookout for a lot more from them in 2024.\nQuantEcon, another fiscally sponsored project, has also made tremendous contributions to open source economics in 2023. Most importantly, they ran a very successful summer school in West Africa. In addition, they have continued make key contributions to software tools useful for teaching and training economics tools. These include Jupyteach, which Spencer Lyon shared in our Demo Day series. With their online materials, textbooks, and workshops around the world, QuantEcon is shaping how researchers and policy analysts employ economic tools to solve real-world problems.\nPSL Foundation added a third fiscally sponsored project, Policy Change Index (PCI) in 2023. PCI was founded by Weifeng Zhong, a Senior Research Fellow at the Mercatus Center at George Mason University, and uses natural language processing and machine learning to predict changes in policy among autocratic regimes. PCI has had a very successful start with PCI-China, predicting policy changes in China, and PCI-Outbreak, predicting the extent of true COVID-19 case counts in China during the pandemic. Currently, they are extending their work to include predictive indices for Russia, North Korea, and Iran. PSL-F is excited for the opportunity to help support this important work.\nOther cataloged projects have continued to be widely used in 2023. To note a few of these use cases, the United Nations has partnered with Richard Evans and Jason DeBacker, maintainers of OG-Core, to help bring the modeling platform to developing countries they are assisting. Tax Foundation’s Capital Cost Recovery model has been updated to 2023 and used in their widely cited 2023 Tax Competitiveness Index. And the Tax-Calculator and TaxData projects both continue to used by think tanks and researchers.\nAs 2023 comes to a close, we look forward to 2024. We’ll be launching a new PSLmodels.org website soon. And there’ll be many more events – we hope you join in.\nFrom all of us at the PSL, best wishes for a happy and healthy New Year!\nResources:\n\nPSL Models\nPSL Foundation\nPSL Twitter Feed\nPSL YouTube channel\nPSL on Open Collective\nPSL Shop for PSL branded merchandise" + }, + { + "objectID": "posts/2022-04-12-demo-day-policyengine-us.html", + "href": "posts/2022-04-12-demo-day-policyengine-us.html", + "title": "Demo Day: Modeling taxes and benefits with the PolicyEngine US web app", + "section": "", + "text": "PolicyEngine is a nonprofit that builds free, open-source software to compute the impact of public policy. After launching our UK app in October 2021, we’ve just launched our US app, which calculates households’ federal taxes and several benefit programs, both under current law and under customizable policy reforms.\nIn this Demo Day, I provide background on PolicyEngine and demonstrate how to use PolicyEngine US (a Policy Simulation Library cataloged model) to answer a novel policy question:\n\nHow would doubling both (a) the Child Tax Credit and (b) the Supplemental Nutrition Assistance Program (SNAP) net income limit affect a single parent in California with $1,000 monthly rent and $50 monthly broadband costs?\n\nBy bringing together tax and benefit models into a web interface, we can answer this question quickly without programming experience, as well as an unlimited array of questions like it. The result is a table breaking down the household’s net income by program, as well as graphs of net income and marginal tax rates as the household’s earnings vary.\nI close with a quick demo of PolicyEngine UK, which adds society-wide results like the impact of reforms on the budget, poverty, and inequality, as well as contributed policy parameters. We’re planning to bring those features to PolicyEngine US, along with state tax and benefit programs in all 50 states, over the next two years (if not sooner).\nFeel free to explore the app and reach out with any questions at max@policyengine.org.\nResources:\n\nPolicyEngine US\nPresentation slides\nPolicyEngine blog post on launching PolicyEngine US" + }, + { + "objectID": "posts/2022-04-18-demo-day-ccc-international.html", + "href": "posts/2022-04-18-demo-day-ccc-international.html", + "title": "Demo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator", + "section": "", + "text": "In the Demo Day video shared here, I show how to use open source tools to analyze international corporate tax competitiveness. The two main tools illustrated are the Cost-of-Capital-Calculator (CCC), a model to compute measures of the tax burden on new investments, and Tax Foundation’s International Tax Competitiveness Index (ITCI).\nTax Foundation has made many helpful resources available online. Their measures of international business tax policy are a great example of this. The ICTI outputs and inputs are all well documented, with source code to reproduce results available on GitHub.\nI plug Tax Foundation’s country-by-country data into CCC functions using it’s Python API. Because CCC is designed to flexibly take array or scalar data, operating on rows of tabular data, such as that in the ITCI, is relatively straight-forward. The Google Colab notebook I walk through in this Demo Day, can be a helpful example to follow if you’d like to do something similar to this with the Tax Foundation data - or your own data source. From the basic building blocks there (reading in data, calling CCC functions), you can extend the analysis in a number of ways. For example adding additional years of data (Tax Foundation posts their data back to 2014), modifying economic assumptions, or creating counter-factual policy experiments across sets of countries.\nIf you find this example useful, or have questions or suggestions about this type of analysis, please feel free to reach out to me.\nResources:\n\nColab Notebook\nTax Foundation International Tax Competitiveness Index 2021\nGitHub repo for Tax Foundation ITCI data\nCost-of-Capital-Calculator documentation" + }, + { + "objectID": "posts/2021-06-14-demo-day-tax-brain-python-api.html", + "href": "posts/2021-06-14-demo-day-tax-brain-python-api.html", + "title": "Demo Day: Using the TaxBrain Python API", + "section": "", + "text": "The TaxBrain project was primarily created to serve as the backend of the Tax-Brain web-application. But at its core, TaxBrain is a Python package that greatly simplifies tax policy analysis. For this PSL Demo-Day, I demonstrated TaxBrain’s capabilities as a standalone package, and how to use it to produce high-level summaries of the revenue impacts of proposed tax policies. The Jupyter Notebook from the presentation can be found here.\nTaxBrain’s Python API allows you to run a full analysis of income tax policies in just three lines of code:\nfrom taxbrain import TaxBrain\n\ntb = TaxBrain(START_YEAR, END_YEAR, use_cps=True, reform=REFORM_POLICY)\ntb.run()\nWhere START_YEAR and END_YEAR are the first and last years, respectively, of the analysis; use_cps is a boolean indicator that you want to use the CPS-based microdata file prepared for use with Tax-Calculator; and REFORM_POLICY is either a JSON file or Python dictionary that specifies a reform suitable for Tax-Calculator. The forthcoming release of TaxBrain will also include a feature that allows you to perform a stacked revenue analysis as well. The inspiration for this feature was presented by Jason DeBacker in a previous demo-day.\nOnce TaxBrain has been run, there are a number of methods and functions included in the package to create tables and plots to summarize the results. I used the Biden 2020 campaign proposal in the demo and the resulting figures are below. The first is a “volcano plot” that makes it easy to see the magnitude of the change in tax liability individuals across the income distribution face. Each dot represents a tax unit, and the x and y variables can be customized based on the user’s needs.\n\nThe second gives a higher-level look at how taxes change in each income bin. It breaks down what percentage of each income bin faces a tax increase or decrease, and the size of that change.\n\nThe final plot shown in the demo simply shows tax liabilities by year over the budget window.\n\nThe last feature I showed was TaxBrain’s automated reports. TaxBrain uses saved results and an included report template to write a report summarizing the findings of your simulation. The reports include tables and figures similar to what you may find in similar write ups by the Joint Committee on Taxation or Tax Policy Center including a summary of significant changes caused by the reform, and all you need is one line of code:\nreport(tb, name='Biden Proposal', outdir='biden', author='Anderson Frailey')\nThe above code will save a PDF copy of the report in a directory called biden along with PNG files for each of the graphs created and the raw Markdown text used for the report, which you can then edit as needed if you would like to add content to the report that is not already included. Screenshots of the default report are included below.\n \nThere are of course downsides to using TaxBrain instead of Tax-Calculator directly. Specifically, it’s more difficult, and sometimes impossible, to perform custom tasks like modeling a feature of the tax code that hasn’t been added to Tax-Calculator yet or advanced work with marginal tax rates. But for day-to-day tax modeling, the TaxBrain Python package can significantly simply any workflow.\nResources:\n\nTax-Brain GitHub repo\nTax-Brain Documentation" + }, + { + "objectID": "posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html", + "href": "posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html", + "title": "Demo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher", + "section": "", + "text": "Check out the video:\n\n\nShow notes:\nI demonstrate how to move a policy reform file from Tax-Brain to Tax-Cruncher using the Compute.Studio API. See the Demo C/S simulation linked below for text instructions that accompany the video.\nResources:\n\nDemo C/S simulation with instructions" + }, + { + "objectID": "posts/2021-12-28-2021-year-in-review.html", + "href": "posts/2021-12-28-2021-year-in-review.html", + "title": "2021: A year in review", + "section": "", + "text": "As 2021 winds down, I wanted to take a few minutes to reflect on the Policy Simulation Library’s efforts over the past year. With an amazing community of contributors, supporters, and users, PSL has been able to make a real impact in 2021.\nThe library saw two new projects achieve “cataloged” status: Tax Foundation’s Capital Cost Recovery model and the Federal Reserve Bank of New York’s DSGE.jl model. Both models satisfy all the the PSL criteria for transparency and reproducibility. Both are also written entirely in open source software: the Capital Cost Recovery model is in R and the DSGE model in Julia.\nAn exciting new project to join the Library this year is PolicyEngine. PolicyEngine is building open source tax and benefit mircosimulation models and very user-friendly interfaces to these models. The goal of this project is to take policy analysis to the masses through intuitive web and mobile interfaces for policy models. The UK version of the PolicyEngine app has already seen use from politicians interested in reforming the tax and benefit system in the UK.\nAnother excellent new addition to the library is the Federal-State Tax Project. This project provides data imputation tools to allow for state tax data that are representative of each state as well as federal totals. These datasets can then be used in microsimulation models, such as Tax-Calculator to study the impact of federal tax laws across the states. Matt Jensen and Don Boyd have published several pieces with these tools, including in State Tax Notes\nPSL Foundation became an official business entity in 2021. While still awaiting a letter of determination for 501(c)(3) status from the IRS, PSL Foundation was able to raise more than $25,000 in the last few months of 2021 to support open source policy analysis!\nPSL community members continued to interact several times each week in our public calls. The PSL Shop was launched in 2021 so that anyone can get themselves some PSL swag (with some of each purchase going back to the PSL Foundation to support the Library). In addition, PSL hosted 20 Demo Day presentations from 11 different presenters! These short talks covered everything from new projects to interesting applications of some of the first projects to join the Library, as well as general open source tools.\nAs in past years, PSL cataloged and incubating models were found to be of great use in current policy debates. Whether it was the ARPA, Biden administration proposals to expand the CTC, or California’s Basic Income Bill, the accessibility and ability to reproduce results from these open source projects has made them a boon to policy analysts.\nWe are looking forward to a great 2022! We expect the Library to continue to grow, foresee many interesting and helpful Demo Days, and are planning a DC PSL Workshop for March 2022. We hope to see you around these or other events!\nBest wishes from PSL for a happy and healthy New Year!\nResources:\n\nPSL Foundation\nPSL Twitter Feed\nPSL YouTube channel\nPSL on Open Collective" + }, + { + "objectID": "posts/2022-06-28-demo-day-github.html", + "href": "posts/2022-06-28-demo-day-github.html", + "title": "Demo Day: Getting Started with GitHub", + "section": "", + "text": "Git and GitHub often present themselves as barriers to entry to would-be contributors to PSL projects, even for those who are otherwise experienced with policy modeling. But these tools are critical to collaboration on open source projects. In the Demo Day video linked above, I cover some of the basics to get set up and begin contributing to an open source project.\nThere are four steps I outline:\n\nCreate a “fork” of the repository you are interested in. A fork is a copy of the source code that resides on GitHub (i.e., in the cloud). A fork gives you control over a copy of the source code. You will be able to merge in changes to the code on this fork, even if you don’t have permissions to do so with the original repository.\n“Clone” the fork. Cloning will download a copy of the source code from your fork onto your local machine. But cloning is more than just downloading the source code. It will include the version history of the code and automatically create a link between the local files and the remote files on your fork.\nConfigure your local files to talk to both your fork (which has a default name of origin) and the original repository you forked from (which typically has the default name of upstream). Do this by using your command prompt or terminal to navigate to the directory you just cloned. From there, run:\n\ngit remote add upstream URL_to_original_repo.git\nAnd check that this worked by giving the command:\ngit remote -v\nIf things worked, you should see URLs to your fork and the upstream repository with “(fetch)” and “(push)” by them More info on this is in the Git docs.\n\nNow that you have copies of the source code on your fork and on your local machine, you are ready to begin contributing. As you make changes to the source code, you’ll want to work on development branches. Branches are copies of the code. Ideally, you keep your “main” (or “master”) branch clean (i.e., your best version of the code) and develop the code on branches. When you’ve completed the development work (e.g., adding a new feature) you will them merge this into the “main” branch.\n\nI hope this helps you get started contributing to open source projects. Git and GitHub are valuable tools and there is lots more to learn, but these basics will get you going. For more information, see the links below. If you want to get started working with a project in the Library, feel free to reach out to me through the relevant repo (@jdebacker on GitHub) or drop into a PSL Community Call (dates on the PSL Calendar).\nResources:\n\nPSL Git Tutorial\nGit Basics" + }, + { + "objectID": "posts/2022-07-14-demo-day-cambridge-cash-assistance.html", + "href": "posts/2022-07-14-demo-day-cambridge-cash-assistance.html", + "title": "Demo Day: How does targeted cash assistance affect incentives to work?", + "section": "", + "text": "In this week’s Demo Day, I shared my paper published at the Center for Growth and Opportunity in June. “How does targeted cash assistance affect incentives to work?” analyzed a program Mayor Sumbul Siddiqui proposed in Cambridge, Massachusetts to provide $500 per month for 18 months to all families with dependents and income below 200% of the poverty line.\nTargeted programs like these are common in guaranteed income pilots, and in some enacted policies, and I find that it would cost-effectively reduce poverty: if expanded to Massachusetts, it would cost $1.2 billion per year and cut child poverty 42%.\nHowever, that targeting comes at a cost. Using the OpenFisca US microsimulation model (supported by the Center for Growth and Opportunity and cataloged by the Policy Simulation Library), I find that the program would deepen an existing welfare cliff at 200% of the poverty line. For example, a family of four would lose over $19,000 total—$9,000 from the cash assistance and $10,000 from other benefits—once they earn a dollar above 200% of the poverty line (about $55,000). To recover those lost benefits, they would have to earn an additional $26,000, a range I call the “earnings dead zone”.\nMy presentation reviews these trends in both slides and the PolicyEngine US app for computing the impacts of tax and benefit policy. For example, I show how repealing the SNAP emergency allotment would smooth out welfare cliffs, while reducing resources available to low-income families, and how a universal child allowance avoids work disincentives while less cost-effectively reducing poverty.\nPolicymakers face trade-offs between equity and efficiency, and typically labor supply responses consider marginal tax rates. With their infinite marginal tax rates, welfare cliffs are a less explored area, even though they surface in several parts of the tax and benefit system. This paper makes a start, but more research is yet to be done." + }, + { + "objectID": "posts/2022-12-31-2022-year-in-review.html", + "href": "posts/2022-12-31-2022-year-in-review.html", + "title": "2022: A year in review", + "section": "", + "text": "This has been another successful year for the Policy Simulation Library, whose great community of contributors continue to make innovative advances in open source policy analysis, and for the PSL Foundation, which supports the Library and its community. We are so thankful for all those who have made financial or technical contributions to the PSL this year! In this blog post, I want to take this time at the end of the year to reflect on a few of the highlights from 2022.\nPolicyEngine, a PSL Foundation fiscally-sponsored project, launched PolicyEngine US in April and has since seen many use cases of the model (check out the PolicyEngine year-in-review here). PolicyEngine had begun by leveraging the OpenFisca platform, but has transitioned to their own-maintained PolicyEngine Core. PolicyEngine Core and their related projects (such as PolicyEngine US and PolicyEngine UK) already meet all the criteria set forth by the Policy Simulation Library. Keep an eye out for lots more excellent tax and benefit policy analysis tools from PolicyEngine in 2023 and beyond!\nPSL Foundation has partnered with QuantEcon, acting as a fiscal sponsor for their projects that provide training and training materials for economic modeling and econometrics using open source tools. QuantEcon ran a massive open online class in India that had more than 1000 registrants in summer of 2022. They also ran an online course for over 100 students from universities in Africa in 2022. Further, with the funding received through their partnership with PSL Foundation, QuantEcon will continue these efforts in 2023 with a planned, in-person course in India.\nPSL hosted its first in-person workshop in March. The workshop focused on open source tools for tax policy analysis including Tax-Calculator, Cost-of-Capital-Calculator, OG-USA, and PolicyEngine US. The PSL event was, appropriately enough, hosted at the MLK Memorial Library in DC. We filled the space with 30 attendees from think tanks, consultancies, and government agencies. The workshop was a great success and we look forward to hosting more in-person workshops in the future.\nPSL’s bi-weekly Demo Day series continued throughout 2022, with 13 Demo Days this year. In these, we saw a wide array of presenters from institutions such as the Federal Reserve Bank of Atlanta, PolicyEngine, Tax Foundation, National Center for Children in Poverty, IZA Institute of Labor Economics, Channels, the University of South Carolina, the Center for Growth and Opportunity, and the American Enterprise Institute. You can go back and rewatch any of these presentations on YouTube.\nIt’s been a fantastic year and we expect even more from the community and PSL Foundation in 2023. PSL community members continue to interact several times each week on our public calls. Check out the events page and join us in the New Year!\nFrom all of us at the PSL, best wishes for a happy and healthy New Year!\nResources:\n\nPSL Foundation\nPSL Twitter Feed\nPSL YouTube channel\nPSL on Open Collective\nPSL Shop for PSL branded merchandise" + }, + { + "objectID": "about.html", + "href": "about.html", + "title": "PSL Blog", + "section": "", + "text": "Updates from the Policy Simulation Library." + }, + { + "objectID": "index.html", + "href": "index.html", + "title": "Policy Simulation Library Blog", + "section": "", + "text": "2023: A year in review\n\n\n\n\n\n\npsl\n\n\npsl-foundation\n\n\n\nHighlights from the Policy Simulation Library in 2023.\n\n\n\n\n\nDec 28, 2023\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\n2022: A year in review\n\n\n\n\n\n\npsl\n\n\npsl-foundation\n\n\n\nHighlights from the Policy Simulation Library in 2022.\n\n\n\n\n\nDec 31, 2022\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: How does targeted cash assistance affect incentives to work?\n\n\n\n\n\n\ndemo-days\n\n\nbenefits\n\n\nus\n\n\n\nHow a proposed program in Cambridge, Massachusetts would affect poverty and incentives.\n\n\n\n\n\nJul 14, 2022\n\n\nMax Ghenis\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Getting Started with GitHub\n\n\n\n\n\n\ndemo-days\n\n\ngithub\n\n\ngit\n\n\nworkflow\n\n\ngetting-started\n\n\n\nThe basics of forking and cloning repositories and working on branches.\n\n\n\n\n\nJun 28, 2022\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Analyzing tax competitiveness with Cost-of-Capital-Calculator\n\n\n\n\n\n\ndemo-days\n\n\ncost-of-capital-calculator\n\n\nbusiness-taxation\n\n\ncorporate-income-tax\n\n\ntaxes\n\n\n\nUsing Cost-of-Capital-Calculator with data on international business tax policies.\n\n\n\n\n\nApr 18, 2022\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Modeling taxes and benefits with the PolicyEngine US web app\n\n\n\n\n\n\ndemo-days\n\n\napps\n\n\ntaxes\n\n\nbenefits\n\n\nus\n\n\n\nPolicyEngine US is a new web app for computing the impact of US tax and benefit policy.\n\n\n\n\n\nApr 12, 2022\n\n\nMax Ghenis\n\n\n\n\n\n\n\n\n\n\n\n\nPolicy Simulation Library DC Workshop: Open source tools for analyzing tax policy\n\n\n\n\n\n\nPSL\n\n\nPSL-Foundation\n\n\nWorkshop\n\n\n\nWashington, DC open-source modeling workshop, March 25, 2022, 8:30am-1:00pm, Martin Luther King, Jr. Memorial Library.\n\n\n\n\n\nMar 3, 2022\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\n2021: A year in review\n\n\n\n\n\n\npsl\n\n\npsl-foundation\n\n\n\nHighlights from the Policy Simulation Library in 2021.\n\n\n\n\n\nDec 28, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Using synthimpute for data fusion\n\n\n\n\n\n\ndemo-days\n\n\npython\n\n\ndata-fusion\n\n\nsynthimpute\n\n\n\nThe synthimpute Python package fuses and synthesizes economic datasets with machine learning.\n\n\n\n\n\nDec 8, 2021\n\n\nMax Ghenis\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: The OG-Core platform\n\n\n\n\n\n\ndemo-days\n\n\npython\n\n\nmacroeconomics\n\n\noverlapping-generations\n\n\n\nA Python platform for building country-specific overlapping generations general equilibrium models.\n\n\n\n\n\nNov 1, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Deploying apps on Compute Studio\n\n\n\n\n\n\ndemo-days\n\n\npolicy-simulation-library\n\n\ncompute-studio\n\n\n\nHow to deploy apps on Compute Studio using the new automated deployments feature.\n\n\n\n\n\nSep 20, 2021\n\n\nHank Doupe\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Unit testing for open source projects\n\n\n\n\n\n\ndemo-days\n\n\nR\n\n\nPython\n\n\nunit-testing\n\n\n\nHow to ensure that individual functions do what you expect.\n\n\n\n\n\nAug 9, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Constructing tax data for the 50 states\n\n\n\n\n\n\ndemo-days\n\n\ntax\n\n\ndata\n\n\nus\n\n\n\nA new dataset to facilitate state-level analysis of federal tax reforms.\n\n\n\n\n\nJul 16, 2021\n\n\nDon Boyd\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Using the TaxBrain Python API\n\n\n\n\n\n\ndemo-days\n\n\nindividual-income-tax\n\n\ntax-brain\n\n\ntax-calculator\n\n\n\nA programmatic interface to compute the impact of tax reform.\n\n\n\n\n\nJun 14, 2021\n\n\nAnderson Frailey\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Updating Jupyter Book documentation with GitHub Actions\n\n\n\n\n\n\ndemo-days\n\n\njupyter-book\n\n\nGH-actions\n\n\ndocumentation\n\n\n\nHow to keep interactive programmatic notebook-based documentation up-to-date in your pull request workflow.\n\n\n\n\n\nMay 17, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Producing stacked revenue estimates with the Tax-Calculator Python API\n\n\n\n\n\n\ndemo-days\n\n\nindividual-income-tax\n\n\ntax-brain\n\n\ntax-calculator\n\n\n\nHow to evaluate the cumulative effects of a multi-part tax reform.\n\n\n\n\n\nApr 5, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Stitching together apps on Compute Studio\n\n\n\n\n\n\ndemo-days\n\n\nPSL\n\n\n\nCreating an app with the Compute Studio API.\n\n\n\n\n\nMar 8, 2021\n\n\nHank Doupe\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Moving policy reform files from Tax-Brain to Tax-Cruncher\n\n\n\n\n\n\ndemo-days\n\n\n\nHow to move reforms between a tax-unit-level and society-wide model with the Compute.Studio API.\n\n\n\n\n\nMar 2, 2021\n\n\nMatt Jensen\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Contributing to PSL projects\n\n\n\n\n\n\ndemo-days\n\n\nPSL\n\n\ngit\n\n\ngithub\n\n\n\nHow to help software projects in the Policy Simulation Library.\n\n\n\n\n\nMar 2, 2021\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Running the scf and microdf Python packages in Google Colab\n\n\n\n\n\n\ndemo-days\n\n\nmicrodf\n\n\nscf\n\n\n\nAnalyzing US wealth data in a web-based Python notebook.\n\n\n\n\n\nJan 29, 2021\n\n\nMax Ghenis\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: The OG-USA macroeconomic model of U.S. fiscal policy\n\n\n\n\n\n\ndemo-days\n\n\nOG-USA\n\n\nTax-Calculator\n\n\nopen-source\n\n\npolicy-simulation-library\n\n\ncompute-studio\n\n\nus\n\n\n\nHow to model the macroeconomic effects of tax reform with a web app.\n\n\n\n\n\nJan 28, 2021\n\n\nRichard W. Evans\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Tax-Brain\n\n\n\n\n\n\ndemo-days\n\n\nindividual-income-tax\n\n\ntax-brain\n\n\nus\n\n\n\nComputing the impact of US tax reform with the Tax-Brain web-app.\n\n\n\n\n\nDec 23, 2020\n\n\nAnderson Frailey\n\n\n\n\n\n\n\n\n\n\n\n\n2020: A year in review\n\n\n\n\n\n\npsl\n\n\npsl-foundation\n\n\n\nHighlights from the Policy Simulation Library in 2020.\n\n\n\n\n\nDec 23, 2020\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Cost-of-Capital-Calculator Web Application\n\n\n\n\n\n\ndemo-days\n\n\ncost-of-capital-calculator\n\n\nbusiness-taxation\n\n\ncorporate-income-tax\n\n\n\nComputing the impact of taxes on business investment incentives under alternative policy scenarios.\n\n\n\n\n\nDec 3, 2020\n\n\nJason DeBacker\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Tax-Cruncher\n\n\n\n\n\n\ndemo-days\n\n\nindividual-income-tax\n\n\ntax-cruncher\n\n\n\nHow to calculate a taxpayer’s liabilities under current law and under a policy reform.\n\n\n\n\n\nNov 23, 2020\n\n\nPeter Metz\n\n\n\n\n\n\n\n\n\n\n\n\nDemo Day: Building policy reform files\n\n\n\n\n\n\ndemo-days\n\n\n\nThe first in Policy Simulation Library’s new live demo series describes specifying tax reforms.\n\n\n\n\n\nNov 18, 2020\n\n\nMatt Jensen\n\n\n\n\n\n\n\n\n\n\n\n\nIntroducing the PSL Blog\n\n\n\n\n\n\nannouncements\n\n\n\nA new way to follow models in the Policy Simulation Library catalog.\n\n\n\n\n\nNov 6, 2020\n\n\nMax Ghenis\n\n\n\n\n\n\nNo matching items" + }, + { + "objectID": "posts/2022-03-03-DC-workshop.html", + "href": "posts/2022-03-03-DC-workshop.html", + "title": "Policy Simulation Library DC Workshop: Open source tools for analyzing tax policy", + "section": "", + "text": "The Policy Simulation Library is hosting a workshop in Washington, DC on March 25 on open source tools for the analysis of tax policy. Participants will learn how to use open source models from the Library for revenue estimation, distributional analysis, and to simulate economic impacts of tax policy. The workshop is intended to be a hands-on experience and participants can expect to leave with the required software, documentation, and knowledge to continue using these tools. All models in the workshop are written in the Python programming language–familiarity with the language is helpful, but not required.\nWorkshop Schedule:\n\n8:15-8:45a: Breakfast\n8:45-9:00a: Introduction\n9:00-9:50a: Using Tax-Calculator for revenue estimation and distributional analysis (Matt Jensen)\n10:00-10:50a: Estimating effective tax rates on investment with Cost-of-Capital-Calculator (Jason DeBacker)\n11:00-11:50a: Macroeconomic modeling of fiscal policy with OG-Core and OG-USA (Richard W. Evans)\nnoon-1:00p: Lunch and demonstration of PolicyEngine (Max Ghenis)\n\nThe workshop will be held at the Martin Luther King Jr. Memorial Library in Washington, DC. Participants are expected to arrive by 8:30am and the program will conclude at 1:00pm. Breakfast and lunch will be provided. PSL Foundation is sponsoring the event and there is no cost to attend. Attendance is limited to 30 in order to make this a dynamic and interactive workshop.\nTo register, please use this Google Form. Registration will close March 11. Participants will be expected to bring a laptop to the workshop where they can interact with the software in real time with the instructors. Registered participants will receive an email before the event with a list of software to install before the workshop.\nPlease feel free to share this invitation with your colleagues.\nQuestions about the workshop can be directed to Jason DeBacker at jason.debacker@gmail.com." + }, + { + "objectID": "posts/2020-12-23-demo-day-tax-brain.html", + "href": "posts/2020-12-23-demo-day-tax-brain.html", + "title": "Demo Day: Tax-Brain", + "section": "", + "text": "For this PSL demo-day I showed how to use the Tax-Brain web-application, hosted on Compute Studio, to analyze proposed individual income tax policies. Tax-Brain integrates the Tax-Calculator and Behavioral-Responses models to make running both static and dynamic analyses of the US federal income and payroll taxes simple. The web interface for the model makes it possible for anyone to run their own analyses without writing a single line of code.\nWe started the demo by simply walking through the interface and features of the web-app before creating our own sample reform to model. This reform, which to my knowledge does not reflect any proposals currently up for debate, included changes to the income and payroll tax rates, bringing back personal exemptions, modifying the standard deduction, and implementing a universal basic income.\nWhile the model ran, I explained how Tax-Brain validated all of the user inputs, the data behind the model, and how the final tax liability projections are determined. We concluded by looking through the variety of tables and graphs Tax-Brain produces and how they can easily be shared with others.\nResources:\n\nSimulation from the demonstration\nTax-Brain GitHub repo\nTax-Calculator documentation\nBehavioral-Responses documentation" + }, + { + "objectID": "posts/2021-11-01-demo-day-og-core.html", + "href": "posts/2021-11-01-demo-day-og-core.html", + "title": "Demo Day: The OG-Core platform", + "section": "", + "text": "The OG-Core model is a general equilibrium, overlapping generations (OG) model suitable for evaluating fiscal policy. Since the work of Alan Auerbach and Laurence Kotlikoff in the 1980s, this class of model has become a standard in the macroeconomic analysis of tax and spending policy. This is for good reason. OG models are able to capture the impacts of taxes and spending in the short and long run, examine incidence of policy across generations of people (not just short run or steady state analysis of a cross-section of the economy), and capture important economic dynamics (e.g., crowding out effects of deficit-financed policy).\nIn the PSL Demo Day presentation linked above, I cover the basics of OG-Core: its history, its API, and how country-specific models can use OG-Core as a dependency. In brief, OG-Core provides a general overlapping generations framework, from which parameters can be calibrated to represent particular economies. Think of it this way: an economic model is just a set of parameters plus a system of equations. OG-Core spells out all of the equations to represent an economy with heterogeneous agents, production and government sectors, open economy options, and detailed policy rules. OG-Core also includes default values for all parameters, along with parameter metadata and parameter validation rules. A country specific application is then just a particular parameterization of the general OG-Core model.\nAs an example of a country-specific application, one can look at the OG-USA model. This model provides a calibration of OG-Core to the United States. The source code in that project allows one to go from raw data sources to the estimation and calibration procedures used to determine parameter values representing the United States, to parameter values in formats suitable for use in OG-Core. Country-specific models like OG-USA include (where available) links to microsimulation models of tax and spending programs to allow detailed microdata of actual and counterfactual policies to inform the net tax-transfer functions used in the OG-Core model. For those interested in building their own country-specific model, the OG-USA project provides a good example to work from.\nWe encourage you to take a look at OG-Core and related projects. New contributions and applications are always welcome. If you have questions or comments, reach out through the relevant repositories on Github to me, @jdebacker, or Rick Evans, @rickecon.\nResources:\n\nOG-Core documentation\nOG-USA documentation package for unit testing in Python\nTax-Calculator documentation\nOG-UK repository\nOpenFisca-UK repository\nSlides from the Demo Day presentation" + }, + { + "objectID": "posts/2020-12-03-demo-day-cost-of-capital-calculator.html", + "href": "posts/2020-12-03-demo-day-cost-of-capital-calculator.html", + "title": "Demo Day: Cost-of-Capital-Calculator Web Application", + "section": "", + "text": "In the PSL Demo Day video linked above, I demonstrate how to use the Cost-of-Capital-Calculator (CCC) web application on Compute-Studio. CCC computes various measures of the impact of the tax system on business investment. These include the Hall-Jorgenson cost of capital, marginal effective tax rates, and effective average tax rates (following the methodology of Devereux and Griffith (1999)).\nI begin by illustrating the various parameters available for the user to manipulate. These include parameters of the business and individual income tax systems, as well as parameters representing economic assumptions (e.g., inflation rates and nominal interest rates) and parameters dictating financial and accounting policy (e.g., the fraction of financing using debt). Note that all default values for tax policy parameters represent the “baseline policy”, which is defined as the current law policy in the year being analyzed (which itself is a parameter the user can change). Other parameters are estimated using historical data following the methodology of CBO (2014).\nNext, I change a few parameters and run the model. In this example, I move the corporate income tax rate up to 28% and lower bonus depreciation for assets with depreciable lives of 20 years or less to 50%.\nFinally, I discuss how to interpret output. The web app returns a table and three figures summarizing marginal effective total tax rates on new investments. This selection of output helps give one a sense of the the overall changes, as well as effects across asset types, industries, and type of financing. For the full model output, one can click on “Download Results”. Doing so will download four CSV files contain several measures of the impact of the tax system on investment for very fine asset and industry categories. Users can take these files and create tables and visualizations relevant to their own use case.\nPlease take the model for a spin and simulate your own reform. If you have questions, comments, or suggestions, please let me know on the PSL Discourse (non-technical questions) or by opening an issue in the CCC GitHub repository (technical questions).\nResources:\n\nCompute Studio simulation used in the demonstration\nCost-of-Capital-Calculator web app\nCost-of-Capital-Calculator documentation\nCost-of-Capital-Calculator GitHub repository" + }, + { + "objectID": "posts/2020-11-23-demo-day-tax-cruncher.html", + "href": "posts/2020-11-23-demo-day-tax-cruncher.html", + "title": "Demo Day: Tax-Cruncher", + "section": "", + "text": "For the Demo Day on November 16, I showed how to calculate a taxpayer’s liabilities under current law and under a policy reform with Tax-Cruncher. The Tax-Cruncher web application takes two sets of inputs: a taxpayer’s demographic and financial information and the provisions of a tax reform.\nFor the first Demo Day example (3:50), we looked at how eliminating the state and local tax (SALT) deduction cap and applying payroll tax to earnings above $400,000 would affect a high earner. In particular, our hypothetical filer had $500,000 in wages, $100,000 in capital gains, and $100,000 in itemizable expenses. You can see the results at Compute Studio simulation #634.\nFor the second example (17:50), we looked at how expanding the Earned Income Tax Credit (EITC) and Child Tax Credit would impact a family with $45,000 in wages and two young children. You can see the results at Compute Studio simulation #636.\nResources:\n\nTax-Cruncher\nTax-Cruncher-Biden" + }, + { + "objectID": "posts/2021-01-28-demo-day-how-to-use-og-usa.html", + "href": "posts/2021-01-28-demo-day-how-to-use-og-usa.html", + "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", + "section": "", + "text": "In this PSL Demo Day, I demonstrate how to use the open source OG-USA macroeconomic model of U.S. fiscal policy. Jason DeBacker and I (Richard Evans) have been the core maintainers of this project and repository for the last six years. This demo is organized into the following sections. The YouTube webinar linked above took place on January 11, 2021." + }, + { + "objectID": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#brief-note-about-the-value-of-the-psl-community", + "href": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#brief-note-about-the-value-of-the-psl-community", + "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", + "section": "Brief note about the value of the PSL community", + "text": "Brief note about the value of the PSL community\nThe Policy Simulation Library is a decentralized organization of open source policy models. The Policy Simulation Library GitHub organization houses many open source repositories, each of which represents a curated policy project by a diverse group of maintainers. The projects that have met the highest standards of best practices and documentation are designated as psl-cataloged , while newer projects that are in earlier stages are designated as psl-incubating . The philosophy and goal of the PSL environment is to make policy modeling open and transparent. It also allows more collaboration and cross-project contributions and interactions.\nThe Policy Simulation Library group has been holding these PSL Demo Day webinars since the end of 2020. The video of each webinar is available on the Policy Simulation Library YouTube channel. These videos are a great resource for learning the different models available in the PSL community, how the models interact, how to contribute to them, and what is on the horizon in their development. Also excellent in many of the PSL Demo Day webinars is a demonstration of how to use the models on the Compute Studio web application platform.\nI have been a participant in and contributor to the PSL community since its inception. I love economic policy modeling. And I learned how sophisticated and complicated economic policy models can be. And any simulation can have hundreds of underlying assumptions, some of which may not be explicitly transparent. I think models that are used for public policy analysis have a philosophical imperative to be open source. This allows others to verify results and test sensitivity to assumptions.\nAnother strong benefit of open source modeling is that it is fundamentally apolitical. With proprietary closed-source policy models, an outside observer might criticize the results of the model based on the perceived political biases of the modeler or the sponsoring organization. With open-source models, a critic can be redirected to the underlying assumptions, structure, and content of the model. This is constructive criticism and debate that moves the science foreward. In the current polarized political environment in the U.S., open-source modeling can provide a constructive route for bipartisan cooperation and the democratization of computational modeling. Furthermore, open-source modeling and workflow encourages the widest forms of collaboration and contributions." + }, + { + "objectID": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#description-of-og-usa-model", + "href": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#description-of-og-usa-model", + "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", + "section": "Description of OG-USA model", + "text": "Description of OG-USA model\nOG-USA is an open-source overlapping generations, dynamic general equilibrium, heterogeneous agent, macroeconomic model of U.S. fiscal policy. The GitHub repository for the OG-USA source code is github.com/PSLmodels/OG-USA. This repository contains all the source code and instructions for loading and running OG-USA and all of its dependencies on your local machine. We will probably do another PSL Demo Day on how to run OG-USA locally. This Demo Day webinar is about running OG-USA on the Compute Studio web application. See Section “Using OG-USA on Compute.Studio” below.\nAs a heterogeneous agent macroeconomic model, OG-USA allows for distributional analyses at the individual and firm level. That is, you can simulate the model and answer questions like, “How will an increase in the top three personal income tax rates affect people of different ages and income levels?” Microsimulation models can answer these types of distributional analysis questions as well. However, the difference between a macroeconomic model and a microsimulation model is that the macroeconomic models can simulate how each of those individuals and firms will respond to a policy change (e.g., lower labor supply or increased investment demand) and how those behavioral responses will add up and feed back into the macroeconomy (e.g., the effect on GDP, government revenue, government debt, interest rates, and wages).\nOG-USA is a large-scale model and comprises tens of thousands of lines of code. The status of all of this code being publicly available on the internet with all collaboration and updates also public makes this an open source project. However, it is not enough to simply post one’s code. We have gone to great lengths to make in-line comments or “docstring” in the code to clarify the purpose of each function and line of code. For example, look in the OG-USA/ogusa/household.py module. The first function on line 18 is the marg_ut_cons() function. As is described in its docstring, its purpose is to “Compute the marginal utility of consumption.”\nThese in-code docstrings are not enough. We have also created textbook style OG-USA documentation at pslmodels.github.io/OG-USA/ using the Jupyter Book medium. This form of documentation has the advantage of being in book form and available online. It allows us to update the documentation in the open-source repository so changes and versions can be tracked. It describes the OG-USA API, OG-USA theory, and `OG-USA calibration. As with the model, this documentation is always a work in progress. But being open-source allows outside contributors to help with its updated and error checking.\nOne particular strength of the OG-USA model I want to highlight is its interaction with microsimulation models to incorporate information about tax incentives faced by the heterogeneous households in the model. We have interfaced OG-USA with microsimulation models in India and in the European Commission. OG-USA ’s default for modeling the United States is to use the open-source Tax-Calculator microsimulation model, which was described by Anderson Frailey in the last Demo Day of 2020. However, DeBacker and I currently have a project in which we use OG-USA to simulate policies using the Tax Policy Center’s microsimulation model. The way OG-USA interfaces with microsimulation models to incorporate rich tax data is described in the documentation in the calibration chapter entitled, “Tax Functions”." + }, + { + "objectID": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#using-og-usa-on-compute-studio", + "href": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#using-og-usa-on-compute-studio", + "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", + "section": "Using OG-USA on Compute Studio", + "text": "Using OG-USA on Compute Studio\nIn the demonstration, I focus on how to run experiments and simulations with OG-USA using the Compute Studio web application platform rather than installing running the model on your local machine. To use OG-USA on this web application, you will need a Compute Studio account. Once you have an account, you can start running any model available through the site. For some models, you will have to pay for the compute time, although the cost of running these models is very modest. However, all Compute Studio simulations of the OG-USA model are currently sponsored by the Open Source Economics Laboratory. This subsidy will probably run out in the next year. But we are always looking for funding for these models.\nOnce you are signed up and logged in to your Compute Studio account, you can go to the OG-USA model on Compute Studio at compute.studio/PSLmodels/OG-USA. The experiment that we simulated in the demonstration is available at compute.studio/PSLmodels/OG-USA/206. The description at the top of the simulation page describes the changes we made. You can look through the input page by clicking on the “Inputs” tab. We ran the model by clicking the green “Run” button at the lower left of the page. The model took about 5 hours to run, so I pre-computed the results that we discussed in the demo. The outputs of the experiment are available in the “Outputs” tab on the page. I also demonstrated how one can click the “Download Results” button at the bottom of the “Outputs” tab to download more results from the simulation. However, the full set of results is only available by installing and running the OG-USA model simulation on your local machine.\nThe benefits of the Compute Studio web application are that running the OG-USA model is much easier for the non-expert, and the multiple-hour computation time can be completed on a remote machine in the cloud." + }, + { + "objectID": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#resources", + "href": "posts/2021-01-28-demo-day-how-to-use-og-usa.html#resources", + "title": "Demo Day: The OG-USA macroeconomic model of U.S. fiscal policy", + "section": "Resources", + "text": "Resources\n\nPSL Demo Day YouTube webinar: “How to use OG-USA”\nOG-USA on Compute Studio\nSimulation from the demonstration\nOG-USA GitHub repo\nOG-USA documentation\nTax-Calculator GitHub repo" + }, + { + "objectID": "posts/2021-12-08-demo-day-synthimpute.html", + "href": "posts/2021-12-08-demo-day-synthimpute.html", + "title": "Demo Day: Using synthimpute for data fusion", + "section": "", + "text": "Suppose a policy analyst sought to estimate the impact of a policy that changed income tax rates and benefit rules while also adding a progressive wealth tax. The standard approach is to use a microsimulation model, where the rules are programmed as code, and then to run that program over a representative sample of households. Unfortunately, no single US government survey captures all the households characteristics needed to analyze this policy; in particular, the reliable tax and benefit information lies in surveys like the Current Population Survey (CPS), while wealth lies in the Survey of Consumer Finances (SCF).\nAssuming the analyst wanted to start with the CPS, they have several options to estimate wealth for households to levy the progressive wealth tax. Two typical approaches include:\n\nLinear regression, predicting wealth from other household characteristics common to the CPS and SCF.\nMatching, in which each CPS household is matched with the most similar household in the SCF.\n\nNeither of these approaches, however, aim to estimate the distribution of wealth conditional on other characteristics. Linear regression explicitly estimates the mean prediction, but that could miss the tails of wealth from whom most of the wealth tax revenue will be collected.\nInstead, the analyst could apply quantile regression to estimate the distribution of wealth conditional on other characteristics, and then measure the effectiveness of the estimation using quantile loss.\nIn this Demo Day, I present the concepts of microsimulation, imputation, and quantile loss to motivate the synthimpute Python package I’ve developed with my PolicyEngine colleague Nikhil Woodruff. In an experiment predicting wealth on a holdout set from the SCF, my former colleague Deepak Singh and I found that random forests significantly outperform OLS and matching for quantile regression, and this is the approach applied in synthimpute for both data fusion and data synthesis. The synthimpute API will be familiar to users of scikit-learn and statsmodels , with the difference being that synthimpute ’s rf_impute function returns a random value from the predicted distribution; it can also skew the predictions to meet a target total.\nWe’ve used synthimpute to fuse data for research reports at the UBI Center and to enhance the PolicyEngine web app for UK tax and benefit simulation, and we welcome new users and contributors. Feel free to explore the repository or contact me with questions at max@policyengine.org.\nResources:\n\nsynthimpute package on GitHub\nPresentation slides\nUBI Center report on land value taxation in the UK, using synthimpute to impute land value from the UK Wealth and Assets Survey to the Family Resources Survey\nPolicyEngine UK carbon tax example, using synthimpute to impute carbon emissions from the Living Costs and Food Survey to the Family Resources Survey\nNotebook comparing random forests to matching and other techniques using a holdout set from the US Survey of Consumer Finances\nMy blog post on quantile regression for Towards Data Science, which laid the groundwork for synthimpute" + }, + { + "objectID": "posts/2021-04-05-demo-day-stacked-revenue-estimates.html", + "href": "posts/2021-04-05-demo-day-stacked-revenue-estimates.html", + "title": "Demo Day: Producing stacked revenue estimates with the Tax-Calculator Python API", + "section": "", + "text": "It’s often useful to be able to identify the effects of specific provisions individually and not just the overall impact of a proposal with many provisions. Indeed, when revenue estimates of tax law changes are reported (such as this JCT analysis of the American Rescue Plan Act of 2021), they are typically reported on a provision-by-provision basis. Finding the provision-by-provision revenue estimates is cumbersome with the Tax-Brain web application both because it’s hard to iterate over many provisions and because the order matters when stacking estimates, so that one needs to keep this order in mind as parameter values are updated for each additional provision in a full proposal.\nIn the PSL Demo Day on April 5, 2021, I show how to use the Python API of Tax-Calculator to efficiently produce stacked revenue estimates. In fact, after some initial setup, this can be done with just 12 lines of code (plus a few more to make the output look nice). The Google Colab notebook that illustrates this approach can be found at this link, but here I’ll walk through the four steps that are involved:\n\nDivide up the full proposal into strings of JSON text that contain each provision you want to analyze. My example breaks up the Biden 2020 campaign proposal into seven provisions, but this is illustrative and you can make more or less provisions depending on the detail you would like to see.\nCreate a dictionary that contains, as its values, the JSON strings. A couple notes on this. First, the dictionary keys should be descriptive of the provisions as they will become the labels for each provision in the final table of revenue estimates we produce. Second, order matters here. You’ll want to be sure the current law baseline is first (the value for this will be an empty dictionary). Then you specify the provisions. The order you specify will likely affect your revenue estimates from a given provision (for instance, expanding/restricting a deduction has a larger revenue effect when rates are higher), but there are not hard and fast rules on the “right” order. Traditionally, rate changes are stacked first and tax expenditures later in the order.\nIterate over this dictionary. With a dictionary of provisions in hand, we can write a “for loop” to iterate over the provision, simulating the Tax-Calculator model at each step. Note that when the Policy class object in Tax-Calculator is modified, it only needs to be told the changes in tax law parameters relative to its current state. In other words, when we are stacking provisions, estimating the incremental effect of each, you can think of the Policy object having a baseline policy that is represented by the current law baseline plus all provisions that have been analyzed before the provision at the current iteration. The Policy class was created in this way so that one can easily represent policy changes, requiring the user to only input the set of parameters that are modified, not every single parameter’s value under the hypothetical policy. But this also makes it parsimonious to stack provisions as we are doing here. Notice that the JSON strings for each provision (created in Step 1) can be specified independent of the stacking order. We only needed to slice the full set of proposals into discrete chunks, we didn’t need to worry about creating specifications of cumulative policy changes.\nFormat output for presentation. After we’ve run a Tax-Calculator simulation for the current law baseline plus each provision (and each year in the budget window), we’ve got all the output we need. With this output, we can quickly create a table that will nicely present our stacked revenue estimate. One good check to do here is to create totals across all provisions and compare this to the simulated revenue effects of running the full set of proposals in one go. This check helps to ensure that you didn’t make an error in specifying your JSON strings. For example, it’s easy to leave out one or more provisions, especially if there are many.\n\nI hope this provides a helpful template for your own analysis. Note that one can modify this code in several useful ways. For example, within the for-loops, the Behavioral-Responses can be called to produce revenue estimates that take into account behavioral feedback. Or one could store the individual income tax and payroll tax revenue impacts separately (rather than return the combined values as in the example notebook). Additional outputs (even the full set of microdata after each provision is applied) can be stored for even more analysis.\nIn the future, look for Tax-Brain to add stacked revenue estimates to its capabilities. It’ll still be important for users to carve up their full list of policy changes into sets of provisions as we did in Steps 1 and 2 above, but Tax-Brain will then take care of the rest behind the scenes.\nResources:\n\nColab Notebook with example\nBiden campaign reform file in PSL Examples" + }, + { + "objectID": "posts/2020-12-23-2020-year-in-review.html", + "href": "posts/2020-12-23-2020-year-in-review.html", + "title": "2020: A year in review", + "section": "", + "text": "This year has been one to forget! But 2020 did have its bright spots, especially in the PSL community. This post reviews some of the highlights from the year.\nThe Library was able to welcome two new models to the catalog in 2020: microdf and OpenFisca-UK. microdf provides a number of useful tools for use with economic survey data. OpenFisca-UK builds off the OpenFisca platform, offering a microsimulation model for tax and benefit programs in the UK.\nIn addition, four new models were added to the Library as incubating projects. The ui-calculator model has received a lot of attention this year in the U.S., as it provides the capability to calculate unemployment insurance benefits across U.S. states, a major mode of delivering financial relief to individuals during the COVID crisis. PCI-Outbreak directly relates to the COVID crisis, using machine learning and natural language processing to estimate the true extent of the COVID pandemic in China. The model finds that actual COVID cases are significantly higher than what official statistics claim. The COVID-MCS model considers COVID case counts and test positivity rates to measure whether or not U.S. communities are meeting certain benchmarks in controlling the spread of the disease. On a lighter note, the Git-Tutorial project provides instruction and resources for learning to use Git and GitHub, with an emphasis on the workflow used by many projects in the PSL community.\nThe organization surrounding the Policy Simulation Library has been bolstered in two ways. First, we have formed a relationship with the Open Collective Foundation, who is now our fiscal host. This allows PSL to accept tax deductible contributions that will support the efforts of the community. Second, we’ve formed the PSL Foundation, with an initial board that includes Linda Gibbs, Glenn Hubbard, and Jason DeBacker.\nOur outreach efforts have grown in 2020 to include the regular PSL Demo Day series and this PSL Blog. Community members have also presented work with PSL models at the PyData Global Conference, the Tax Economists Forum, AEI, the Coiled Podcast, and the Virtual Global Village Podcast. New users will also find a better experience learning how to use and contribute to PSL models as many PSL models have improved their documentation through the use of Jupyter Book (e.g., see the Tax-Calculator documentation).\nWe love seeing the community around open source policymaking expand and are proud that PSL models have been used for important policy analysis in 2020, including analyzing economic policy responses to the pandemic and the platforms of presidential candidates. We look forward to more progress in 2021 and welcome you to join the effort as a contributor, financially or as an open source developer.\nBest wishes from PSL for a happy and healthy new year!\nResources:\n\nPSL Twitter Feed\nPSL YouTube\nPSL on Open Collective" + }, + { + "objectID": "posts/2021-05-17-demo-day-jupyter-book-deploy.html", + "href": "posts/2021-05-17-demo-day-jupyter-book-deploy.html", + "title": "Demo Day: Updating Jupyter Book documentation with GitHub Actions", + "section": "", + "text": "Open source projects must maintain clear and up-to-date documentation in order to attract users and contributors. Because of this, PSL sets minimum standards for documentation among cataloged projects in its model criteria. A recent innovation in executable books, Jupyter Book, has provided an excellent format for model documentation and has been widely adopted by PSL projects (see for example OG-USA, Tax-Brain, Tax-Calculator).\nJupyter Book allows one to write documents with executable code and text together, as in Jupyter notebooks. But Jupyter Book pushes this further by allowing documents with multiple sections, better integration of TeX for symbols and equations, BibTex style references and citations, links between sections, and Sphinx integration (for auto-built documentation of model APIs from source code). Importantly for sharing documentation, Jupyter Books can easily be compiled to HTML, PDF, or other formats. Portions of a Jupyter Book that contain executable code can be downloaded as Jupyter Notebooks or opened in Google Colab or binder\nThe Jupyter Book documentation is excellent and will help you get started creating your “book” (tip: pay close attention to formatting details, including proper whitespace). What I do here is outline how you can easily deploy your documentation to the web and keep it up-to-date with your project.\nI start from the assumption that you have the source files to build your Jupyter Book checked into the main branch of your project (these maybe yml , md , rst , ipynb or other files). For version control purposes and to keep your repo trim, you generally don’t want to check the built documentation files to this branch (tip: consider adding the folder these files will go to (e.g., /_build to your .gitignore ). When these files are in place and you can successfully build your book locally, it’s time for the first step.\nStep 1: Add two GH Actions to your project’s workflow: 1. An action to check that your documentation files build without an error. I like to run this on each push to a PR. The action won’t hang on warnings, but will fail if your Jupyter Book doesn’t build at all. An example of this action from the OG-USA repo is here:\n\nname: Check that docs build\non: [push, pull_request]\n\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.\n with:\n persist-credentials: false\n\n - name: Setup Miniconda\n uses: conda-incubator/setup-miniconda@v2\n with:\n activate-environment: ogusa-dev\n environment-file: environment.yml\n python-version: 3.7\n auto-activate-base: false\n\n - name: Build # Build Jupyter Book\n shell: bash -l {0}\n run: |\n pip install jupyter-book\n pip install sphinxcontrib-bibtex==1.0.0\n pip install -e .\n cd docs\n jb build ./book\nTo use this in your repo, you’ll just need to change a few settings such as the name of the environment and perhaps the Python version and path to the book source files. Note that in the above yml file sphinxcontrib-bibtex is pinned. You maybe able to unpin this, but OG-USA needed this pin for documentation to compile property due to changes in the jupyter-book and sphinxcontrib-bibtex packages.\n\nAn action that builds and deploys the Jupyter Book to GH Pages. The OG-USA project uses the deploy action from James Ives in this action. This is something that you will want to run when PRs are merged into your main branch so that the documentation is kept up-to-date with the project. To modify this action for your repo, you’ll need to change the repo name, the environment name, and potentially the Python version, branch name, and path to the book source files.\n\nStep 2: Once the action in (2) above is run, your compiled Jupyter Book docs will be pushed to a gh-pages branch in your repository (the action will create this branch for you if it doesn’t already exist). At this point, you should be able to see your docs at the url https://GH_org_name.github.io/Repo_name . But it probably won’t look very good until you complete this next step. To have your Jupyter Book render on the web as you see it on your machine, you will want to push and merge an empty file with the name .nojekyll into your repo’s gh-pages branch.\nThat’s it! With these actions, you’ll be sure that your book continues to compile and a new version will be published to the web with with each merge to your main branch, ensuring that your documentation stays up-to-date.\nSome additional tips:\n\nUse Sphinx to document your projects API. By doing so you’ll automate an important part of your project’s documentation – as long as the docstrings are updated when the source code is, the Jupyter Book you are publishing to the web will be kept in sync with no additional work needed.\nYou can have your gh-pages-hosted documentation point to a custom URL.\nProject maintainers should ensure that docs are updated with PRs that are relevant (e.g., if the PR changes an the source code affecting a user interface, then documentation showing example usage should be updated) and help contributors make the necessary changes to the documentation source files." + }, + { + "objectID": "posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html", + "href": "posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html", + "title": "Demo Day: Constructing tax data for the 50 states", + "section": "", + "text": "Federal income tax reform impacts can vary dramatically across states. The cap on state and local tax deductions (SALT) is a well-known example, but other policies also have differential effects because important tax-relevant features vary across states such as the income distribution, relative importance of wage, business, and retirement income, and family size and structure. Analyzing how policy impacts vary across states requires data that faithfully represent the characteristics of the 50 states.\nThis Demo Day described a method and software for constructing state weights for microdata files that (1) come as close as possible to targets for individual states, while (2) ensuring that the state weights for each tax record sum to its national weight. The latter objective ensures that the sum of state impacts for a tax reform equals the national impact.\nThis project developed state weights for a data file with more than 200,000 microdata records. The weighted data file comes within 0.01% of desired values for more than 95% of approximately 10,000 targets.\nThe goal of the slides and video was to enable a motivated Python-skilled user of the PSL TaxData and Tax-Calculator projects to reproduce project results: 50-state weights for TaxData’s primary output, the puf.csv microdata file (based primarily on an IRS Public Use File), using early-stage open-source software developed in the project. Thus, the demo is technical and focused on nuts and bolts.\nThe methods and software can also be used to:\n\nCreate geographic-area weights for other microdata files\nApportion state weights to Congressional Districts or counties, if suitable targets can be developed\nCreate state-specific microdata files suitable for modeling state income taxes\n\nThe main topics covered in the slides and video are:\n\nCreating national and state targets from IRS summary data\nPreparing a national microdata file for state weighting\nApproaches to constructing geographic weights\nRunning software that implements the Poisson-modeling approach used in the project\nMeasures of quality of the results" + }, + { + "objectID": "posts/2021-01-29-demo-day-scf-microdf.html", + "href": "posts/2021-01-29-demo-day-scf-microdf.html", + "title": "Demo Day: Running the scf and microdf Python packages in Google Colab", + "section": "", + "text": "For Monday’s PSL Demo Day, I showed how to use the scf and microdf PSL Python packages from the Google Colab web-based Jupyter notebook interface.\nThe scf package extracts data from the Federal Reserve’s Survey of Consumer Finances, the canonical source of US wealth microdata. scf has a single function: load(years, columns) , which then returns a pandas DataFrame with the specified column(s), each record’s survey weight, and the year (when multiple years are requested).\nThe microdf package analyzes survey microdata, such as that returned by the scf.load function. It offers a consistent paradigm for calculating statistics like means, medians, sums, and inequality statistics like the Gini index. Most functions are structured as follows: f(df, col, w, groupby) where df is a pandas DataFrame of survey microdata, col is a column(s) name to be summarized, w is the weight column, and groupby is the column(s) to group records in before summarizing.\nUsing Google Colab, I showed how to use these packages to quickly calculate mean, median, and total wealth from the SCF data, without having to install any software or leave the browser. I also demonstrated how to use the groupby argument of microdf functions to show how different measures of wealth inequality have changed over time. Finally, I previewed some of what’s to come with scf and microdf : imputations, extrapolations, inflation, visualization, and documentation, to name a few priorities.\nResources:\n\nSlides\nDemo notebook in Google Colab\nSimulation from the demonstration\nscf GitHub repo\nmicrodf GitHub repo\nmicrodf documentation" + }, + { + "objectID": "posts/2021-08-09-demo-day-unit-testing.html", + "href": "posts/2021-08-09-demo-day-unit-testing.html", + "title": "Demo Day: Unit testing for open source projects", + "section": "", + "text": "Unit testing is the testing of individual units or functions of a software application. This differs from regression testing that focuses on the verification of final outputs. Instead, unit testing tests each smallest testable component of your code. This helps to more easily identify and trace errors in the code.\nWriting unit tests is good practice, though not one that’s always followed. The biggest barrier to writing unit tests is that doing so takes time. You might wonder “why am I testing code that runs?” But there are a number benefits to writing unit tests:\n\nIt ensures that the code does what you expect it to do\nYou’ll better understand what your code is doing\nYou will reduce time tracking down bugs in your code\n\nOften, writing unit tests will save you time in the longer run because it reduces debugging time and because it forces you to think more about what your code does, which often leads to the development of more efficient code. And for open source projects, or projects with many contributors, writing unit tests is important in reducing the likelihood that errors are introduced into your code. This is why the PSL catalog criteria requires projects to provide at least some level of unit testing.\nIn the PSL Demo Day video linked above, I illustrate how to implement unit tests in R using the testthat package. There are essentially three steps to this process:\n\nCreate a directory to put your testing script in, e.g., a folder called tests\nCreate one or more scripts that define your tests.\n\nEach test is represented as a call of the test_that function and contain an statement that will evaluate as true or false (e.g., you may use the expect_equal function to verify that a function returns expected values given certain inputs).\nYou will want to use test in the name of these tests scripts as well as something descriptive of what is tested.\n\nCreate a script that will run your tests.\n\nHere you’ll need to import the testthat package and you’ll need to call the script(s) you are testing to load their functions.\nThen you’ll use the test_dir function to pass the directory in which the script(s) you created in Step 2 reside.\n\n\nCheck out the video to see examples of how each of these steps is executed. I’ve also found this blog post on unit tests with testthat to be helpful.\nUnit testing in Python seems to be more developed and straightforward with the excellent pytest package. While pytest offers many options for parameterizing tests, running tests in parallel, and more, the basic steps remain the same as those outlined above:\n\nCreate a directory for your test modules (call this folder tests as pytest will look for that name).\nCreate test modules that define each test\n\nTests are defined much like any other function in Python, the but will involve some assertion statement is triggered upon test failure.\nYou will want to use test in the name of these tests modules as well as something descriptive of what is tested.\n\nYou won’t need to create a script to run your tests as with testthat, but you may create a pytest.ini file to customize your tests options.\n\nThat’s about it to get started writing unit tests for your code. PSL cataloged projects provide many excellent examples of a variety of unit tests, so search them for examples to build from. In a future Demo Day and blog post, we’ll talk about continuous integration testing to help get even more out of you unit tests.\nResources:\n\ntestthat package for unit testing in R\npytest package for unit testing in Python\nPSL catalog criteria\nUnit tests for the capital-cost-recovery model" + } +] \ No newline at end of file diff --git a/search/index.html b/search/index.html deleted file mode 100755 index 3a2d2c5..0000000 --- a/search/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/settings.ini b/settings.ini deleted file mode 100755 index 18c3b4b..0000000 --- a/settings.ini +++ /dev/null @@ -1,44 +0,0 @@ -[DEFAULT] -lib_name = nbdev -user = fastai -branch = master -version = 0.2.10 -description = Writing a library entirely in notebooks -keywords = jupyter notebook -author = Sylvain Gugger and Jeremy Howard -author_email = info@fast.ai -baseurl = -title = nbdev -copyright = fast.ai -license = apache2 -status = 2 -min_python = 3.6 -audience = Developers -language = English -requirements = nbformat>=4.4.0 nbconvert>=5.6.1 pyyaml fastscript packaging -console_scripts = nbdev_build_lib=nbdev.cli:nbdev_build_lib - nbdev_update_lib=nbdev.cli:nbdev_update_lib - nbdev_diff_nbs=nbdev.cli:nbdev_diff_nbs - nbdev_test_nbs=nbdev.cli:nbdev_test_nbs - nbdev_build_docs=nbdev.cli:nbdev_build_docs - nbdev_nb2md=nbdev.cli:nbdev_nb2md - nbdev_trust_nbs=nbdev.cli:nbdev_trust_nbs - nbdev_clean_nbs=nbdev.clean:nbdev_clean_nbs - nbdev_read_nbs=nbdev.cli:nbdev_read_nbs - nbdev_fix_merge=nbdev.cli:nbdev_fix_merge - nbdev_install_git_hooks=nbdev.cli:nbdev_install_git_hooks - nbdev_bump_version=nbdev.cli:nbdev_bump_version - nbdev_new=nbdev.cli:nbdev_new - nbdev_detach=nbdev.cli:nbdev_detach -nbs_path = nbs -doc_path = images/copied_from_nb -doc_host = https://nbdev.fast.ai -doc_baseurl = %(baseurl)s/images/copied_from_nb/ -git_url = https://github.com/fastai/nbdev/tree/master/ -lib_path = nbdev -tst_flags = fastai2 -custom_sidebar = False -cell_spacing = 1 -monospace_docstrings = False -jekyll_styles = note,warning,tip,important,youtube,twitter - diff --git a/site_libs/bootstrap/bootstrap-icons.css b/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 0000000..285e444 --- /dev/null +++ b/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2078 @@ +/*! + * Bootstrap Icons v1.11.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2820a3852bdb9a5832199cc61cec4e65") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } diff --git a/site_libs/bootstrap/bootstrap-icons.woff b/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..dbeeb055674125ad78fda0f3d166b36e5cc92336 GIT binary patch literal 176200 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

2+UrCZlNAp`)&G@jg{m-!Dn; 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πR(XEyYV3az{Ot$Y*f93mYq^Lnu{qbYp!X!TA9&! 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 F?~0aZ)an2L literal 0 HcmV?d00001 diff --git a/site_libs/bootstrap/bootstrap.min.css b/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 0000000..f77f69a --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,12 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #343a40;--bs-primary: #2780e3;--bs-secondary: #343a40;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #343a40;--bs-default-rgb: 52, 58, 64;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 52, 58, 64;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 52, 58, 64;--bs-primary-text-emphasis: #10335b;--bs-secondary-text-emphasis: #15171a;--bs-success-text-emphasis: #19490a;--bs-info-text-emphasis: #3d224b;--bs-warning-text-emphasis: #662f0a;--bs-danger-text-emphasis: #660017;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d4e6f9;--bs-secondary-bg-subtle: #d6d8d9;--bs-success-bg-subtle: #d9f0d1;--bs-info-bg-subtle: #ebddf1;--bs-warning-bg-subtle: #ffe3d1;--bs-danger-bg-subtle: #ffccd7;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #a9ccf4;--bs-secondary-border-subtle: #aeb0b3;--bs-success-border-subtle: #b2e2a3;--bs-info-border-subtle: #d6bbe4;--bs-warning-border-subtle: #ffc8a3;--bs-danger-border-subtle: #ff99b0;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #343a40;--bs-body-color-rgb: 52, 58, 64;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(52, 58, 64, 0.75);--bs-secondary-color-rgb: 52, 58, 64;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(52, 58, 64, 0.5);--bs-tertiary-color-rgb: 52, 58, 64;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #2761e3;--bs-link-color-rgb: 39, 97, 227;--bs-link-decoration: underline;--bs-link-hover-color: #1f4eb6;--bs-link-hover-color-rgb: 31, 78, 182;--bs-code-color: #7d12ba;--bs-highlight-bg: #ffe3d1;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(39, 128, 227, 0.25);--bs-form-valid-color: #3fb618;--bs-form-valid-border-color: #3fb618;--bs-form-invalid-color: #ff0039;--bs-form-invalid-border-color: #ff0039}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #7db3ee;--bs-secondary-text-emphasis: #85898c;--bs-success-text-emphasis: #8cd374;--bs-info-text-emphasis: #c298d6;--bs-warning-text-emphasis: #ffac74;--bs-danger-text-emphasis: #ff6688;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #081a2d;--bs-secondary-bg-subtle: #0a0c0d;--bs-success-bg-subtle: #0d2405;--bs-info-bg-subtle: #1f1125;--bs-warning-bg-subtle: #331705;--bs-danger-bg-subtle: #33000b;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #174d88;--bs-secondary-border-subtle: #1f2326;--bs-success-border-subtle: #266d0e;--bs-info-border-subtle: #5c3270;--bs-warning-border-subtle: #99460e;--bs-danger-border-subtle: #990022;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #7db3ee;--bs-link-hover-color: #97c2f1;--bs-link-color-rgb: 125, 179, 238;--bs-link-hover-color-rgb: 151, 194, 241;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8cd374;--bs-form-valid-border-color: #8cd374;--bs-form-invalid-color: #ff6688;--bs-form-invalid-border-color: #ff6688}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6)}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#343a40}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(52,58,64,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(52,58,64,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #343a40;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #343a40;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #343a40;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #343a40;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #b2bac1}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d4e6f9;--bs-table-border-color: #bfcfe0;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #d6d8d9;--bs-table-border-color: #c1c2c3;--bs-table-striped-bg: #cbcdce;--bs-table-striped-color: #000;--bs-table-active-bg: #c1c2c3;--bs-table-active-color: #000;--bs-table-hover-bg: #c6c8c9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d9f0d1;--bs-table-border-color: #c3d8bc;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #ebddf1;--bs-table-border-color: #d4c7d9;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #ffe3d1;--bs-table-border-color: #e6ccbc;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #ffccd7;--bs-table-border-color: #e6b8c2;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #343a40;--bs-table-border-color: #484e53;--bs-table-striped-bg: #3e444a;--bs-table-striped-color: #fff;--bs-table-active-bg: #484e53;--bs-table-active-color: #fff;--bs-table-hover-bg: #43494e;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(52,58,64,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#343a40;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(52,58,64,.75);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#343a40;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#343a40;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important}.form-control-color::-webkit-color-swatch{border:0 !important}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #343a40}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(52,58,64,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(52,58,64,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#e9ecef}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1)}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#3fb618}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#ff0039}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #343a40;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #216dc1;--bs-btn-hover-border-color: #1f66b6;--bs-btn-focus-shadow-rgb: 71, 147, 231;--bs-btn-active-color: #fff;--bs-btn-active-bg: #1f66b6;--bs-btn-active-border-color: #1d60aa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2780e3;--bs-btn-disabled-border-color: #2780e3}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #369b14;--bs-btn-hover-border-color: #329213;--bs-btn-focus-shadow-rgb: 92, 193, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #329213;--bs-btn-active-border-color: #2f8912;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3fb618;--bs-btn-disabled-border-color: #3fb618}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #82479f;--bs-btn-hover-border-color: #7a4396;--bs-btn-focus-shadow-rgb: 168, 110, 197;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a4396;--bs-btn-active-border-color: #733f8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #9954bb;--bs-btn-disabled-border-color: #9954bb}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d96314;--bs-btn-hover-border-color: #cc5e13;--bs-btn-focus-shadow-rgb: 255, 138, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc5e13;--bs-btn-active-border-color: #bf5812;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff7518;--bs-btn-disabled-border-color: #ff7518}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d90030;--bs-btn-hover-border-color: #cc002e;--bs-btn-focus-shadow-rgb: 255, 38, 87;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc002e;--bs-btn-active-border-color: #bf002b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff0039;--bs-btn-disabled-border-color: #ff0039}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-outline-default{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2780e3;--bs-btn-hover-border-color: #2780e3;--bs-btn-focus-shadow-rgb: 39, 128, 227;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2780e3;--bs-btn-active-border-color: #2780e3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2780e3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2780e3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3fb618;--bs-btn-hover-border-color: #3fb618;--bs-btn-focus-shadow-rgb: 63, 182, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3fb618;--bs-btn-active-border-color: #3fb618;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3fb618;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3fb618;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #9954bb;--bs-btn-hover-border-color: #9954bb;--bs-btn-focus-shadow-rgb: 153, 84, 187;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9954bb;--bs-btn-active-border-color: #9954bb;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #9954bb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #9954bb;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff7518;--bs-btn-hover-border-color: #ff7518;--bs-btn-focus-shadow-rgb: 255, 117, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff7518;--bs-btn-active-border-color: #ff7518;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff7518;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff7518;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff0039;--bs-btn-hover-border-color: #ff0039;--bs-btn-focus-shadow-rgb: 255, 0, 57;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff0039;--bs-btn-active-border-color: #ff0039;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff0039;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff0039;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #2761e3;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: #1f4eb6;--bs-btn-hover-border-color: transparent;--bs-btn-active-color: #1f4eb6;--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 71, 121, 231;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #343a40;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #343a40;--bs-dropdown-link-hover-color: #343a40;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: rgba(52, 58, 64, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #2761e3;--bs-nav-link-hover-color: #1f4eb6;--bs-nav-link-disabled-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width))}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2780e3}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion{--bs-accordion-color: #343a40;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #343a40;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23343a40'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2310335b'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #93c0f1;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #10335b;--bs-accordion-active-bg: #d4e6f9}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: rgba(52, 58, 64, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #2761e3;--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #1f4eb6;--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: #1f4eb6;--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #2780e3;--bs-pagination-active-border-color: #2780e3;--bs-pagination-disabled-color: rgba(52, 58, 64, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(1px*-1)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--bs-progress-height: 0.5rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2780e3;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #343a40;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(52, 58, 64, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #343a40;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(52, 58, 64, 0.75);--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2780e3;--bs-list-group-active-border-color: #2780e3;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(52, 58, 64, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color)}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #e9ecef;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #343a40;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #343a40;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(31, 102, 182, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(31, 102, 182, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(50, 146, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(50, 146, 19, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(122, 67, 150, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122, 67, 150, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(204, 94, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 94, 19, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(204, 0, 46, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 0, 46, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:" "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:" "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}:root{--bslib-page-sidebar-title-bg: #f8f9fa;--bslib-page-sidebar-title-color: #000}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#545555}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#1f4eb6}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(33,81,191,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(33,81,191,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#2151bf}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#f8f9fa;color:#545555;border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f4eb6}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#545555;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#545555;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#545555;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#343a40;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#343a40;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#343a40;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#343a40;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#343a40;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#343a40}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#343a40}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#343a40}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#545555}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#343a40;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(52,58,64,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#5397e9 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#343a40 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#3aa716 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#fa6400 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#f8f9fa !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#343a40 !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px #dae0e5;border-bottom:solid 1px #dae0e5}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:#e0e5e9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#545555}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#343a40}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#343a40}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px #bcbfc0;padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#343a40}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#343a40;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2761e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2761e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2761e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2761e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2761e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#343a40;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#343a40}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since +* that seems to be what ansi_up emits +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #343a40;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #343a40;--mermaid-node-fg-color: #343a40;--mermaid-fg-color: #343a40;--mermaid-fg-color--lighter: #4b545c;--mermaid-fg-color--lightest: #626d78;--mermaid-font-family: Source Sans Pro, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2780e3;--mermaid-node-bg-color: rgba(39, 128, 227, 0.1);--mermaid-node-fg-color: #343a40}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1250px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>section:first-of-type>h2:first-child,main.content>section:first-of-type>.h2:first-child{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#6d7a86}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:#6d7a86}.quarto-layout-cell[data-ref-parent] caption{color:#6d7a86}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#6d7a86;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(233,236,239,.65);border:1px solid rgba(233,236,239,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#6d7a86}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f8f9fa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#2761e3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#2761e3}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #e9ecef;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #2761e3;color:#2761e3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#2761e3 !important}kbd,.kbd{color:#343a40;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2780e3}div.callout-note.callout-style-default>.callout-header{background-color:#e9f2fc}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3fb618}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e8}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ff7518}div.callout-warning.callout-style-default>.callout-header{background-color:#fff1e8}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#f0ad4e}div.callout-caution.callout-style-default>.callout-header{background-color:#fef7ed}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#ff0039}div.callout-important.callout-style-default>.callout-header{background-color:#ffe6eb}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#f8f9fa;color:#545555}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#343a40}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: #cacccd;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #cacccd;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 75, 80, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}nav.quarto-secondary-nav.color-navbar{background-color:#f8f9fa;color:#545555}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#545555}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(233,236,239,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:#4b545c;border:solid #4b545c 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#e9ecef;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid #ebedee;border-bottom:1px solid #ebedee}.table>thead{border-top-width:0;border-bottom:1px solid #b2bac1}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#545555;background:#f8f9fa}.quarto-title-banner a{color:#545555}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#545555}.quarto-title-banner .code-tools-button{color:#878888}.quarto-title-banner .code-tools-button:hover{color:#545555}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}body{-webkit-font-smoothing:antialiased}.badge.bg-light{color:#343a40}.progress .progress-bar{font-size:8px;line-height:8px} diff --git a/site_libs/bootstrap/bootstrap.min.js b/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 0000000..e8f21f7 --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/site_libs/clipboard/clipboard.min.js b/site_libs/clipboard/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/site_libs/quarto-html/popper.min.js b/site_libs/quarto-html/popper.min.js new file mode 100644 index 0000000..e3726d7 --- /dev/null +++ b/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.7 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-html/quarto-syntax-highlighting.css b/site_libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 0000000..d9fd98f --- /dev/null +++ b/site_libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,203 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > *, .margin-caption, .aside" + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + if (top < lastBottom) { + const marginChildStyle = window.getComputedStyle(marginChild); + const marginBottom = parseFloat(marginChildStyle["marginBottom"]); + const margin = lastBottom - top + marginBottom; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(() => { + layoutMarginEls(); + if ( + window.document.body.getBoundingClientRect().width < 990 && + isReaderMode() + ) { + quartoToggleReader(); + } + }, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/site_libs/quarto-html/tippy.css b/site_libs/quarto-html/tippy.css new file mode 100644 index 0000000..e6ae635 --- /dev/null +++ b/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/site_libs/quarto-html/tippy.umd.min.js b/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 0000000..ca292be --- /dev/null +++ b/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/site_libs/quarto-listing/list.min.js b/site_libs/quarto-listing/list.min.js new file mode 100644 index 0000000..8131881 --- /dev/null +++ b/site_libs/quarto-listing/list.min.js @@ -0,0 +1,2 @@ +var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s { + if (categoriesLoaded) { + activateCategory(category); + setCategoryHash(category); + } +}; + +window["quarto-listing-loaded"] = () => { + // Process any existing hash + const hash = getHash(); + + if (hash) { + // If there is a category, switch to that + if (hash.category) { + activateCategory(hash.category); + } + // Paginate a specific listing + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const page = hash[getListingPageKey(listingId)]; + if (page) { + showPage(listingId, page); + } + } + } + + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + // The actual list + const list = window["quarto-listings"][listingId]; + + // Update the handlers for pagination events + refreshPaginationHandlers(listingId); + + // Render any visible items that need it + renderVisibleProgressiveImages(list); + + // Whenever the list is updated, we also need to + // attach handlers to the new pagination elements + // and refresh any newly visible items. + list.on("updated", function () { + renderVisibleProgressiveImages(list); + setTimeout(() => refreshPaginationHandlers(listingId)); + + // Show or hide the no matching message + toggleNoMatchingMessage(list); + }); + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Attach click handlers to categories + const categoryEls = window.document.querySelectorAll( + ".quarto-listing-category .category" + ); + + for (const categoryEl of categoryEls) { + const category = categoryEl.getAttribute("data-category"); + categoryEl.onclick = () => { + activateCategory(category); + setCategoryHash(category); + }; + } + + // Attach a click handler to the category title + // (there should be only one, but since it is a class name, handle N) + const categoryTitleEls = window.document.querySelectorAll( + ".quarto-listing-category-title" + ); + for (const categoryTitleEl of categoryTitleEls) { + categoryTitleEl.onclick = () => { + activateCategory(""); + setCategoryHash(""); + }; + } + + categoriesLoaded = true; +}); + +function toggleNoMatchingMessage(list) { + const selector = `#${list.listContainer.id} .listing-no-matching`; + const noMatchingEl = window.document.querySelector(selector); + if (noMatchingEl) { + if (list.visibleItems.length === 0) { + noMatchingEl.classList.remove("d-none"); + } else { + if (!noMatchingEl.classList.contains("d-none")) { + noMatchingEl.classList.add("d-none"); + } + } + } +} + +function setCategoryHash(category) { + setHash({ category }); +} + +function setPageHash(listingId, page) { + const currentHash = getHash() || {}; + currentHash[getListingPageKey(listingId)] = page; + setHash(currentHash); +} + +function getListingPageKey(listingId) { + return `${listingId}-page`; +} + +function refreshPaginationHandlers(listingId) { + const listingEl = window.document.getElementById(listingId); + const paginationEls = listingEl.querySelectorAll( + ".pagination li.page-item:not(.disabled) .page.page-link" + ); + for (const paginationEl of paginationEls) { + paginationEl.onclick = (sender) => { + setPageHash(listingId, sender.target.getAttribute("data-i")); + showPage(listingId, sender.target.getAttribute("data-i")); + return false; + }; + } +} + +function renderVisibleProgressiveImages(list) { + // Run through the visible items and render any progressive images + for (const item of list.visibleItems) { + const itemEl = item.elm; + if (itemEl) { + const progressiveImgs = itemEl.querySelectorAll( + `img[${kProgressiveAttr}]` + ); + for (const progressiveImg of progressiveImgs) { + const srcValue = progressiveImg.getAttribute(kProgressiveAttr); + if (srcValue) { + progressiveImg.setAttribute("src", srcValue); + } + progressiveImg.removeAttribute(kProgressiveAttr); + } + } + } +} + +function getHash() { + // Hashes are of the form + // #name:value|name1:value1|name2:value2 + const currentUrl = new URL(window.location); + const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined; + return parseHash(hashRaw); +} + +const kAnd = "&"; +const kEquals = "="; + +function parseHash(hash) { + if (!hash) { + return undefined; + } + const hasValuesStrs = hash.split(kAnd); + const hashValues = hasValuesStrs + .map((hashValueStr) => { + const vals = hashValueStr.split(kEquals); + if (vals.length === 2) { + return { name: vals[0], value: vals[1] }; + } else { + return undefined; + } + }) + .filter((value) => { + return value !== undefined; + }); + + const hashObj = {}; + hashValues.forEach((hashValue) => { + hashObj[hashValue.name] = decodeURIComponent(hashValue.value); + }); + return hashObj; +} + +function makeHash(obj) { + return Object.keys(obj) + .map((key) => { + return `${key}${kEquals}${obj[key]}`; + }) + .join(kAnd); +} + +function setHash(obj) { + const hash = makeHash(obj); + window.history.pushState(null, null, `#${hash}`); +} + +function showPage(listingId, page) { + const list = window["quarto-listings"][listingId]; + if (list) { + list.show((page - 1) * list.page + 1, list.page); + } +} + +function activateCategory(category) { + // Deactivate existing categories + const activeEls = window.document.querySelectorAll( + ".quarto-listing-category .category.active" + ); + for (const activeEl of activeEls) { + activeEl.classList.remove("active"); + } + + // Activate this category + const categoryEl = window.document.querySelector( + `.quarto-listing-category .category[data-category='${category}'` + ); + if (categoryEl) { + categoryEl.classList.add("active"); + } + + // Filter the listings to this category + filterListingCategory(category); +} + +function filterListingCategory(category) { + const listingIds = Object.keys(window["quarto-listings"]); + for (const listingId of listingIds) { + const list = window["quarto-listings"][listingId]; + if (list) { + if (category === "") { + // resets the filter + list.filter(); + } else { + // filter to this category + list.filter(function (item) { + const itemValues = item.values(); + if (itemValues.categories !== null) { + const categories = itemValues.categories.split(","); + return categories.includes(category); + } else { + return false; + } + }); + } + } + } +} diff --git a/site_libs/quarto-nav/headroom.min.js b/site_libs/quarto-nav/headroom.min.js new file mode 100644 index 0000000..b08f1df --- /dev/null +++ b/site_libs/quarto-nav/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); diff --git a/site_libs/quarto-nav/quarto-nav.js b/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 0000000..f6a53b1 --- /dev/null +++ b/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,289 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function dashboardOffset() { + const dashboardNavEl = window.document.getElementById( + "quarto-dashboard-header" + ); + if (dashboardNavEl !== null) { + return dashboardNavEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset() + dashboardOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver(() => { + setTimeout(updateDocumentOffsetWithoutAnimation, 0); + }); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].dataset.originalHref = links[i].href; + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/site_libs/quarto-search/autocomplete.umd.js b/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 0000000..ae0063a --- /dev/null +++ b/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.11.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r=3||2===n&&r>=4||1===n&&r>=10);function i(t,n,r){if(o&&void 0!==r){var i=r[0].__autocomplete_algoliaCredentials,u={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(D(n),[{headers:u}]))}else e.apply(void 0,[t].concat(D(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDsAfterSearch",B(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDs",B(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDsAfterSearch",B(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDs",B(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=k(t,A);return[].concat(D(e),D(q(N(N({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function F(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function L(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function M(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&z({onItemsChange:r,items:n,insights:a,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function l(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:W({clickAnalytics:!0},e?{userToken:e}:{}),insights:a}})}u("addAlgoliaAgent","insights-plugin"),l(),u("onUserTokenChange",l),u("getUserToken",null,(function(e,t){l(t)})),n((function(e){var t=e.item,n=e.state,r=e.event,i=e.source;L(t)&&o({state:n,event:r,insights:a,item:t,insightsEvents:[W({eventName:"Item Selected"},j({item:t,items:i.getItems().filter(L)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,o=e.event;L(t)&&i({state:r,event:o,insights:a,item:t,insightsEvents:[W({eventName:"Item Active"},j({item:t,items:n.getItems().filter(L)}))]})}))},onStateChange:function(e){var t=e.state;c({state:t})},__autocomplete_pluginOptions:e}}function J(e,t){var n=t;return{then:function(t,r){return J(e.then(Y(t,n,e),Y(r,n,e)),n)},catch:function(t){return J(e.catch(Y(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),J(e.finally(Y(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function X(e){return J(e,{isCanceled:!1,onCancelList:[]})}function Y(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function Z(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:d(),plugins:o,initialState:he({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(ye(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:O,onResolve:O};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return m(e)})).then((function(e){return e.map((function(e){return he(he({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:he({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var He,Ve,We,Ke=null,Qe=(He=-1,Ve=-1,We=void 0,function(e){var t=++He;return Promise.resolve(e).then((function(e){return We&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function et(e){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},et(e)}var tt=["props","refresh","store"],nt=["inputElement","formElement","panelElement"],rt=["inputElement"],ot=["inputElement","maxLength"],it=["source"],ut=["item","source"];function at(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ft(e){var t=e.props,n=e.refresh,r=e.store,o=st(e,tt);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return lt({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},st(e,nt))},getRootProps:function(e){return lt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label")},e)},getFormProps:function(e){return e.inputElement,lt({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(lt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},st(e,rt))},getLabelProps:function(e){return lt({htmlFor:ie(t.id,"input"),id:ie(t.id,"label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&$e(lt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var l=a.maxLength,c=void 0===l?512:l,s=st(a,ot),f=oe(r.getState()),p=function(e){return Boolean(e&&e.match(ue))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),m=t.enterKeyHint||(null!=f&&f.itemUrl&&!p?"go":"search");return lt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?ie(t.id,"item-".concat(r.getState().activeItemId),null==f?void 0:f.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ie(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ie(t.id,"label"),value:r.getState().completion||r.getState().query,id:ie(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){$e(lt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=Ze(e,Ge);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=oe(o.getState()),t=n.environment.document.getElementById(ie(n.id,"item-".concat(o.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},a=function(){var e=oe(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,l=e.source;l.onActive(Xe({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?$e(Xe({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=oe(o.getState()),c=l.item,s=l.itemInputValue,f=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:f,item:c,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:f,item:c,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i)),void n.navigator.navigate({itemUrl:f,item:c,state:o.getState()});$e(Xe({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){p.onSelect(Xe({event:t,item:c,itemInputValue:s,itemUrl:f,refresh:r,source:p,state:o.getState()},i))}))}}}(lt({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:O,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return lt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,o=st(n,it);return lt({role:"listbox","aria-labelledby":ie(t.id,"label"),id:ie(t.id,"list",r)},o)},getItemProps:function(e){var i=e.item,u=e.source,a=st(e,ut);return lt({id:ie(t.id,"item-".concat(i.__autocomplete_id),u),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=oe(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(lt({event:e,item:u,itemInputValue:a,itemUrl:l,refresh:n,source:c,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),l=u.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():$e(lt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(lt({event:e,item:i,itemInputValue:a,itemUrl:l,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function pt(e){return pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pt(e)}function mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vt(e){for(var t=1;t=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},l=0;l"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[l][c+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var kt=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function xt(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Nt(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?Jt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return sn(e,u,r,o,null)}function sn(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++Yt:o};return null==o&&null!=Xt.vnode&&Xt.vnode(i),i}function fn(e){return e.children}function pn(e,t){this.props=e,this.context=t}function mn(e,t){if(null==t)return e.__?mn(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&Zt.sort(nn));yn.__r=0}function bn(e,t,n,r,o,i,u,a,l,c){var s,f,p,m,v,d,y,b=r&&r.__k||on,g=b.length;for(n.__k=[],s=0;s0?sn(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=b[s])||p&&m.key==p.key&&m.type===p.type)b[s]=void 0;else for(f=0;f=0;t--)if((n=e.__k[t])&&(r=On(n)))return r;return null}function _n(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||un.test(t)?n:n+"px"}function Sn(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||_n(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||_n(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?Pn:jn,i):e.removeEventListener(t,i?Pn:jn,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function jn(e){return this.l[e.type+!1](Xt.event?Xt.event(e):e)}function Pn(e){return this.l[e.type+!0](Xt.event?Xt.event(e):e)}function wn(e,t,n,r,o,i,u,a,l){var c,s,f,p,m,v,d,y,b,g,h,O,_,S,j,P=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(c=Xt.__b)&&c(t);try{e:if("function"==typeof P){if(y=t.props,b=(c=P.contextType)&&r[c.__c],g=c?b?b.props.value:c.__:r,n.__c?d=(s=t.__c=n.__c).__=s.__E:("prototype"in P&&P.prototype.render?t.__c=s=new P(y,g):(t.__c=s=new pn(y,g),s.constructor=P,s.render=Cn),b&&b.sub(s),s.props=y,s.state||(s.state={}),s.context=g,s.__n=r,f=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=P.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=an({},s.__s)),an(s.__s,P.getDerivedStateFromProps(y,s.__s))),p=s.props,m=s.state,s.__v=t,f)null==P.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==P.getDerivedStateFromProps&&y!==p&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,g),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,g)||t.__v===n.__v){for(t.__v!==n.__v&&(s.props=y,s.state=s.__s,s.__d=!1),s.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h=0;h0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(xn);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Tn(e){return function(e){if(Array.isArray(e))return qn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return qn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Fn=new RegExp(/\w/i),Ln=/&(amp|quot|lt|gt|#39);/g,Un=RegExp(Ln.source);function Mn(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Fn.test((o=i.value)&&Un.test(o)?o.replace(Ln,(function(e){return Rn[e]})):o)||a!==u?i.isHighlighted:a}function Hn(e){return Hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hn(e)}function Vn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wn(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ur(e){return function(e){if(Array.isArray(e))return ar(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ar(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ar(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ar(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(y.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:br,options:e}}))})),j=f(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),P={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},w={setActiveItemId:S.value.setActiveItemId,setQuery:S.value.setQuery,setCollections:S.value.setCollections,setIsOpen:S.value.setIsOpen,setStatus:S.value.setStatus,setContext:S.value.setContext,refresh:S.value.refresh,navigator:S.value.navigator},I=m((function(){return Ct.bind(O.value.renderer.renderer.createElement)})),A=m((function(){return Gt({autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:P,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function E(){Ht(A.value.panel,{style:_.value?{}:yr({panelPlacement:O.value.renderer.panelPlacement,container:A.value.root,form:A.value.form,environment:O.value.core.environment})})}function D(e){j.current=e;var t={autocomplete:S.value,autocompleteScopeApi:w,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:A.value,panelContainer:_.value?A.value.detachedContainer:O.value.renderer.panelContainer,propGetters:P,state:j.current,renderer:O.value.renderer.renderer},r=!b(e)&&!y.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;Vt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),Vt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),Ht(o.label,{hidden:"stalled"===u.status}),Ht(o.loadingIndicator,{hidden:"stalled"!==u.status}),Ht(o.clearButton,{hidden:!u.query}),Ht(o.detachedSearchButtonQuery,{textContent:u.query}),Ht(o.detachedSearchButtonPlaceholder,{hidden:Boolean(u.query)})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,l=t.dom,c=t.panelContainer,s=t.propGetters,f=t.state,p=t.components,m=t.renderer;if(f.isOpen){c.contains(l.panel)||"loading"===f.status||c.appendChild(l.panel),l.panel.classList.toggle("aa-Panel--stalled","stalled"===f.status);var v=f.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var l=e.source,c=e.items;return m.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":l.sourceId},l.templates.header&&m.createElement("div",{className:u.sourceHeader},l.templates.header({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})),l.templates.noResults&&0===c.length?m.createElement("div",{className:u.sourceNoResults},l.templates.noResults({components:p,createElement:m.createElement,Fragment:m.Fragment,source:l,state:f,html:a})):m.createElement("ul",i({className:u.list},s.getListProps(n({state:f,props:r.getListProps({source:l})},o))),c.map((function(e){var t=r.getItemProps({item:e,source:l});return m.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:f,props:t},o))),l.templates.item({components:p,createElement:m.createElement,Fragment:m.Fragment,item:e,state:f,html:a}))}))),l.templates.footer&&m.createElement("div",{className:u.sourceFooter},l.templates.footer({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})))})),d=m.createElement(m.Fragment,null,m.createElement("div",{className:u.panelLayout},v),m.createElement("div",{className:"aa-GradientBottom"})),y=v.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:d,state:f,sections:v,elements:y},m),{},{components:p,html:a},o),l.panel)}else c.contains(l.panel)&&c.removeChild(l.panel)}(r,t)}function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};l();var t=O.value.renderer,n=t.components,r=u(t,gr);g.current=qt(r,O.value.core,{components:Bt(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),v(),c(),S.value.refresh().then((function(){D(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(A.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),A.value.input.focus()):(O.value.core.environment.document.body.removeChild(A.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached")))}))}return a((function(){var e=S.value.getEnvironmentProps({formElement:A.value.form,panelElement:A.value.panel,inputElement:A.value.input});return Ht(O.value.core.environment,e),function(){Ht(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?A.value.detachedOverlay:A.value.panel;return _.value&&j.current.isOpen&&k(!0),D(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(A.value.root),function(){e.removeChild(A.value.root)}})),a((function(){var e=p((function(e){D(e.state)}),0);return h.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||E(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){h.current=void 0}})),a((function(){var e=p((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?C({}):requestAnimationFrame(E)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){A.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(E),function(){}})),n(n({},w),{},{update:C,destroy:function(){l()}})},e.getAlgoliaFacets=function(e){var t=hr({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=Or,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-search/fuse.min.js b/site_libs/quarto-search/fuse.min.js new file mode 100644 index 0000000..adc2835 --- /dev/null +++ b/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/site_libs/quarto-search/quarto-search.js b/site_libs/quarto-search/quarto-search.js new file mode 100644 index 0000000..5f723d7 --- /dev/null +++ b/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1286 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + placeholder: language["search-text-placeholder"], + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // If this is a file URL, note that + + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + document.addEventListener("keyup", (event) => { + const { key } = event; + const kbds = quartoSearchOptions["keyboard-shortcut"]; + const focusedEl = document.activeElement; + + const isFormElFocused = [ + "input", + "select", + "textarea", + "button", + "option", + ].find((tag) => { + return focusedEl.tagName.toLowerCase() === tag; + }); + + if ( + kbds && + kbds.includes(key) && + !isFormElFocused && + !document.activeElement.isContentEditable + ) { + event.preventDefault(); + window.quartoOpenSearch(); + } + }); + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = throttle(() => { + // Only do this if we're not detached + // Bug #7117 + // This will happen when the keyboard is shown on ios (resulting in a scroll) + // which then closed the search UI + if (!window.matchMedia(detachedMediaQuery).matches) { + setIsOpen(false); + } + }, 50); + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.flatMap((event) => { + // This API limits the number of items per event to 20 + const chunkSize = 20; + const itemChunks = []; + const eventItems = event.items; + for (let i = 0; i < eventItems.length; i += chunkSize) { + itemChunks.push(eventItems.slice(i, i + chunkSize)); + } + // Split the items into multiple events that can be sent + const events = itemChunks.map((items) => { + return { + ...event, + items, + }; + }); + return events; + }); + + for (const event of events) { + insights.viewedObjectIDs(event); + } + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +var shownWarning = false; + +// fuse index options +const kFuseIndexOptions = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, +}; + +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + if (window.location.protocol === "file:" && !shownWarning) { + window.alert( + "Search requires JavaScript features disabled when running in file://... URLs. In order to use search, please run this document in a web server." + ); + shownWarning = true; + return; + } + const fuse = new window.Fuse([], kFuseIndexOptions); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh, + quartoSearchOptions +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href, + item.crumbs, + quartoSearchOptions + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard( + createElement, + icon, + title, + section, + text, + href, + crumbs, + quartoSearchOptions +) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContents = [iconEl, titleEl]; + const showParent = quartoSearchOptions["show-item-context"]; + if (crumbs && showParent) { + let crumbsOut = undefined; + const crumbClz = ["search-result-crumbs"]; + if (showParent === "root") { + crumbsOut = crumbs.length > 1 ? crumbs[0] : undefined; + } else if (showParent === "parent") { + crumbsOut = crumbs.length > 1 ? crumbs[crumbs.length - 2] : undefined; + } else { + crumbsOut = crumbs.length > 1 ? crumbs.join(" > ") : undefined; + crumbClz.push("search-result-crumbs-wrap"); + } + + const crumbEl = createElement( + "p", + { class: crumbClz.join(" ") }, + crumbsOut + ); + titleContents.push(crumbEl); + } + + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + titleContents + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text", "crumbs"].forEach( + (keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + } + ); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +let subSearchTerm = undefined; +let subSearchFuse = undefined; +const kFuseMaxWait = 125; + +async function fuseSearch(query, fuse, fuseOptions) { + let index = fuse; + // Fuse.js using the Bitap algorithm for text matching which runs in + // O(nm) time (no matter the structure of the text). In our case this + // means that long search terms mixed with large index gets very slow + // + // This injects a subIndex that will be used once the terms get long enough + // Usually making this subindex is cheap since there will typically be + // a subset of results matching the existing query + if (subSearchFuse !== undefined && query.startsWith(subSearchTerm)) { + // Use the existing subSearchFuse + index = subSearchFuse; + } else if (subSearchFuse !== undefined) { + // The term changed, discard the existing fuse + subSearchFuse = undefined; + subSearchTerm = undefined; + } + + // Search using the active fuse + const then = performance.now(); + const resultsRaw = await index.search(query, fuseOptions); + const now = performance.now(); + + const results = resultsRaw.map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + crumbs: result.item.crumbs, + }; + }); + + // If we don't have a subfuse and the query is long enough, go ahead + // and create a subfuse to use for subsequent queries + if (now - then > kFuseMaxWait && subSearchFuse === undefined) { + subSearchTerm = query; + subSearchFuse = new window.Fuse([], kFuseIndexOptions); + resultsRaw.forEach((rr) => { + subSearchFuse.add(rr.item); + }); + } + return results; +} diff --git a/sitemap.xml b/sitemap.xml old mode 100755 new mode 100644 index da2c6fe..f8f48a4 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,126 +1,119 @@ - - -https://blog.pslmodels.org/introducing-psl-blog -2020-11-06T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-creating-reform-files -2020-11-18T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-tax-cruncher -2020-11-23T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-cost-of-capital-calculator -2020-12-03T00:00:00-06:00 - - -https://blog.pslmodels.org/2020-year-in-review -2020-12-23T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-tax-brain -2020-12-23T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-how-to-use-og-usa -2021-01-28T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-scf-microdf -2021-01-29T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-contributing-psl -2021-03-02T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-taxbrain-to-taxcruncher -2021-03-02T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-cs-api-stitch -2021-03-08T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-stacked-revenue-estimates -2021-04-05T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-jupyter-book-deploy -2021-05-17T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-tax-brain-python-api -2021-06-14T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-constructing-tax-data-for-the-50-states -2021-07-16T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-unit-testing -2021-08-09T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-cs-auto-deploy -2021-09-20T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-og-core -2021-11-01T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-synthimpute -2021-12-08T00:00:00-06:00 - - -https://blog.pslmodels.org/2021-year-in-review -2021-12-28T00:00:00-06:00 - - -https://blog.pslmodels.org/DC-workshop -2022-03-03T00:00:00-06:00 - - -https://blog.pslmodels.org/demo-day-policyengine-us -2022-04-12T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-ccc-international -2022-04-18T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-github -2022-06-28T00:00:00-05:00 - - -https://blog.pslmodels.org/demo-day-cambridge-cash-assistance -2022-07-14T00:00:00-05:00 - - -https://blog.pslmodels.org/2022-year-in-review -2022-12-31T00:00:00-06:00 - - -https://blog.pslmodels.org/2023-year-in-review -2023-12-28T00:00:00-06:00 - - -https://blog.pslmodels.org/about/ - - -https://blog.pslmodels.org/ - - -https://blog.pslmodels.org/search/ - - -https://blog.pslmodels.org/categories/ - - -https://blog.pslmodels.org/page2/ - + + + https://PSLmodels.github.io/blog/posts/2021-03-02-demo-day-contributing-psl.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-09-20-demo-day-cs-auto-deploy.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2020-11-06-introducing-psl-blog.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2020-11-18-demo-day-creating-reform-files.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-03-08-demo-day-cs-api-stitch.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2023-12-28-2023-year-in-review.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2022-04-12-demo-day-policyengine-us.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2022-04-18-demo-day-ccc-international.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2021-06-14-demo-day-tax-brain-python-api.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2021-03-02-demo-day-taxbrain-to-taxcruncher.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-12-28-2021-year-in-review.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2022-06-28-demo-day-github.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2022-07-14-demo-day-cambridge-cash-assistance.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2022-12-31-2022-year-in-review.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/about.html + 2024-03-06T02:59:08.201Z + + + https://PSLmodels.github.io/blog/index.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2022-03-03-DC-workshop.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2020-12-23-demo-day-tax-brain.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-11-01-demo-day-og-core.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2020-12-03-demo-day-cost-of-capital-calculator.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2020-11-23-demo-day-tax-cruncher.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-01-28-demo-day-how-to-use-og-usa.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-12-08-demo-day-synthimpute.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2021-04-05-demo-day-stacked-revenue-estimates.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2020-12-23-2020-year-in-review.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-05-17-demo-day-jupyter-book-deploy.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-07-16-demo-day-constructing-tax-data-for-the-50-states.html + 2024-03-06T02:59:08.229Z + + + https://PSLmodels.github.io/blog/posts/2021-01-29-demo-day-scf-microdf.html + 2024-03-06T02:59:08.225Z + + + https://PSLmodels.github.io/blog/posts/2021-08-09-demo-day-unit-testing.html + 2024-03-06T02:59:08.229Z + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..2ddf50c --- /dev/null +++ b/styles.css @@ -0,0 +1 @@ +/* css styles */
  • Posts

    + + + + + - - - - +Policy Simulation Library Blog + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    +

    Policy Simulation Library Blog

    +
    +
    + + +
    + -
    -
      -
    • -
    • 1
    • -
    • 2
    • -
    -
    \ No newline at end of file + +