Full Code of driftyco/ionic-site for AI

main 5263ee34e83c cached
847 files
23.8 MB
6.3M tokens
5954 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (25,118K chars total). Download the full file to get everything.
Repository: driftyco/ionic-site
Branch: main
Commit: 5263ee34e83c
Files: 847
Total size: 23.8 MB

Directory structure:
gitextract_zuy7n7xo/

├── .dockerignore
├── .env-docker
├── .gitignore
├── .npmrc
├── .slugignore
├── CONTRIBUTING.md
├── Dockerfile
├── Gulpfile.js
├── LICENSE
├── Procfile
├── README.md
├── app.json
├── assets/
│   ├── 3rd-party-libs.json
│   ├── js/
│   │   ├── analytics.js
│   │   ├── highlight.js
│   │   └── utils.js
│   ├── scss/
│   │   ├── _animations.scss
│   │   ├── _fonts.scss
│   │   ├── _general.scss
│   │   ├── _hljs.scss
│   │   ├── _mixins.scss
│   │   ├── _theme.scss
│   │   ├── _typography.scss
│   │   ├── _vars.scss
│   │   ├── components/
│   │   │   ├── _alert.scss
│   │   │   ├── _banner.scss
│   │   │   ├── _bar-chart.scss
│   │   │   ├── _bar.scss
│   │   │   ├── _buttons.scss
│   │   │   ├── _checkmark-list.scss
│   │   │   ├── _cta.scss
│   │   │   ├── _customer-callout.scss
│   │   │   ├── _docs_content.scss
│   │   │   ├── _draggable.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _form.scss
│   │   │   ├── _header.scss
│   │   │   ├── _hero.scss
│   │   │   ├── _hubspot_form.scss
│   │   │   ├── _jquery_UI.scss
│   │   │   ├── _mobile-nav.scss
│   │   │   ├── _modal.scss
│   │   │   ├── _pre-header.scss
│   │   │   ├── _pre_footer.scss
│   │   │   ├── _pro_docs_content.scss
│   │   │   ├── _resource-card.scss
│   │   │   ├── _resource-promo.scss
│   │   │   ├── _responsive_docs.scss
│   │   │   ├── _side_nav.scss
│   │   │   ├── _site-search.scss
│   │   │   ├── _snap_bar.scss
│   │   │   ├── _social_share_sidebar.scss
│   │   │   ├── _sticky-bar.scss
│   │   │   ├── _sub_header.scss
│   │   │   ├── _tables.scss
│   │   │   ├── _tabs.scss
│   │   │   ├── _tag.scss
│   │   │   ├── _testimonial-slides.scss
│   │   │   ├── _tippy.scss
│   │   │   ├── _toc.scss
│   │   │   ├── _tooltip.scss
│   │   │   ├── _utils.scss
│   │   │   ├── home_slides/
│   │   │   │   ├── _ioniconf.scss
│   │   │   │   ├── _limitless.scss
│   │   │   │   ├── _one-any.scss
│   │   │   │   ├── _react-1.scss
│   │   │   │   ├── _v5.scss
│   │   │   │   ├── _v6.scss
│   │   │   │   ├── _vue.scss
│   │   │   │   └── index.scss
│   │   │   └── promos/
│   │   │       ├── _hybrid-vs-native.scss
│   │   │       ├── _index.scss
│   │   │       ├── _ioniconf.scss
│   │   │       └── _offline-storage.scss
│   │   ├── creator.scss
│   │   ├── ionicons-v3/
│   │   │   ├── _ionicons-common.scss
│   │   │   ├── _ionicons-core.scss
│   │   │   ├── _ionicons-icons.scss
│   │   │   ├── _ionicons-variables.scss
│   │   │   └── _ionicons.scss
│   │   ├── pages/
│   │   │   ├── _404.scss
│   │   │   ├── _coming-soon.scss
│   │   │   ├── _contributors.scss
│   │   │   ├── _demo.scss
│   │   │   ├── _sales.scss
│   │   │   ├── _start.scss
│   │   │   ├── _startups.scss
│   │   │   ├── _what-is-ionic.scss
│   │   │   ├── about.scss
│   │   │   ├── angular.scss
│   │   │   ├── articles/
│   │   │   │   └── _why-hybrid.scss
│   │   │   ├── auth.scss
│   │   │   ├── community.scss
│   │   │   ├── contact.scss
│   │   │   ├── developers.scss
│   │   │   ├── enterprise/
│   │   │   │   ├── _index_bak.scss
│   │   │   │   ├── _shared.scss
│   │   │   │   ├── auth-connect.scss
│   │   │   │   ├── components/
│   │   │   │   │   └── _ee-hero.scss
│   │   │   │   ├── contact.scss
│   │   │   │   ├── customers.scss
│   │   │   │   ├── identity-vault.scss
│   │   │   │   ├── index.scss
│   │   │   │   ├── offline-storage.scss
│   │   │   │   ├── platform.scss
│   │   │   │   ├── solutions/
│   │   │   │   │   ├── _shared.scss
│   │   │   │   │   ├── cross-platform.scss
│   │   │   │   │   ├── design.scss
│   │   │   │   │   └── index.scss
│   │   │   │   ├── support.scss
│   │   │   │   ├── training.scss
│   │   │   │   └── why-ionic.scss
│   │   │   ├── framework.scss
│   │   │   ├── getting-started-with-ionic-vue-1.scss
│   │   │   ├── getting-started.scss
│   │   │   ├── go/
│   │   │   │   ├── _pwa-architects-guide.scss
│   │   │   │   └── _why-hybrid.scss
│   │   │   ├── home.scss
│   │   │   ├── integrations/
│   │   │   │   └── index1.scss
│   │   │   ├── ioniconf-2020.scss
│   │   │   ├── jobs.scss
│   │   │   ├── native.scss
│   │   │   ├── press/
│   │   │   │   ├── _release.scss
│   │   │   │   └── index.scss
│   │   │   ├── pricing/
│   │   │   │   ├── __feature-lists.scss
│   │   │   │   ├── __modal.scss
│   │   │   │   ├── __plan-cards.scss
│   │   │   │   ├── __table.scss
│   │   │   │   ├── __vars.scss
│   │   │   │   ├── compare.scss
│   │   │   │   ├── enterprise.scss
│   │   │   │   └── index.scss
│   │   │   ├── pro/
│   │   │   │   ├── _contact.scss
│   │   │   │   ├── _deploy.scss
│   │   │   │   ├── _general.scss
│   │   │   │   ├── _package.scss
│   │   │   │   ├── _teams.scss
│   │   │   │   └── index.scss
│   │   │   ├── products/
│   │   │   │   ├── advisory.scss
│   │   │   │   └── appflow.scss
│   │   │   ├── pwa/
│   │   │   │   └── _index.scss
│   │   │   ├── pwa-toolkit.scss
│   │   │   ├── react.scss
│   │   │   ├── resources/
│   │   │   │   ├── case-studies.scss
│   │   │   │   ├── index.scss
│   │   │   │   ├── webinars.scss
│   │   │   │   └── whitepapers.scss
│   │   │   ├── solutions/
│   │   │   │   └── _shared.scss
│   │   │   ├── subscribe.scss
│   │   │   ├── support.scss
│   │   │   ├── survey/
│   │   │   │   ├── 2017.scss
│   │   │   │   ├── 2018.scss
│   │   │   │   ├── 2020.scss
│   │   │   │   └── _surveys.scss
│   │   │   ├── team.scss
│   │   │   ├── thank-you.scss
│   │   │   ├── translations.scss
│   │   │   ├── trusted-partners.scss
│   │   │   ├── values.scss
│   │   │   └── vue.scss
│   │   ├── pygments/
│   │   │   ├── autumn.scss
│   │   │   ├── borland.css
│   │   │   ├── bw.css
│   │   │   ├── colorful.css
│   │   │   ├── default.css
│   │   │   ├── emacs.css
│   │   │   ├── friendly.css
│   │   │   ├── fruity.css
│   │   │   ├── github.css
│   │   │   ├── ionic.scss
│   │   │   ├── manni.css
│   │   │   ├── monokai.css
│   │   │   ├── murphy.css
│   │   │   ├── native.css
│   │   │   ├── pastie.css
│   │   │   ├── perldoc.css
│   │   │   ├── tango.css
│   │   │   ├── trac.css
│   │   │   ├── vim.css
│   │   │   ├── vs.css
│   │   │   └── zenburn.css
│   │   ├── styles.scss
│   │   └── utilities/
│   │       ├── u-enterprise.scss
│   │       ├── u-getting-started.scss
│   │       ├── u-ioniconf.scss
│   │       ├── u-mixins.scss
│   │       └── u-native.scss
│   └── stencil/
│       ├── _vars.scss
│       ├── components/
│       │   ├── additional-resources/
│       │   │   ├── additional-resources.scss
│       │   │   ├── additional-resources.tsx
│       │   │   └── default.json
│       │   ├── angular-components/
│       │   │   ├── angular-components.scss
│       │   │   └── angular-components.tsx
│       │   ├── app-wizard/
│       │   │   ├── app-wizard.scss
│       │   │   └── app-wizard.tsx
│       │   ├── auth-connect-promo/
│       │   │   ├── auth-connect-promo.scss
│       │   │   └── auth-connect-promo.tsx
│       │   ├── bar-chart/
│       │   │   ├── bar-chart.scss
│       │   │   └── bar-chart.tsx
│       │   ├── ebook-switcher/
│       │   │   ├── bookData.json
│       │   │   ├── ebook-switcher.scss
│       │   │   └── ebook-switcher.tsx
│       │   ├── emoji-picker/
│       │   │   ├── emoji-picker.scss
│       │   │   ├── emoji-picker.tsx
│       │   │   └── svgs.tsx
│       │   ├── home-components/
│       │   │   ├── home-components.scss
│       │   │   └── home-components.tsx
│       │   ├── home-countdown/
│       │   │   ├── home-countdown.scss
│       │   │   └── home-countdown.tsx
│       │   ├── home-native/
│       │   │   ├── home-native.scss
│       │   │   └── home-native.tsx
│       │   ├── hubspot-dynamic-content/
│       │   │   ├── hubspot-dynamic-content.scss
│       │   │   └── hubspot-dynamic-content.tsx
│       │   ├── hubspot-form/
│       │   │   ├── hubspot-form.scss
│       │   │   └── hubspot-form.tsx
│       │   ├── icon-external/
│       │   │   ├── icon-external.scss
│       │   │   └── icon-external.tsx
│       │   ├── ionic-appflow-activatior/
│       │   │   ├── activator-icons.tsx
│       │   │   ├── ionic-appflow-activatior.tsx
│       │   │   └── ionic-appflow-activator.scss
│       │   ├── ionic-bar-chart/
│       │   │   ├── ionic-bar-chart.scss
│       │   │   └── ionic-bar-chart.tsx
│       │   ├── ionic-button/
│       │   │   ├── ionic-button.scss
│       │   │   └── ionic-button.tsx
│       │   ├── ionic-newsletter-signup/
│       │   │   ├── ionic-newsletter-signup.scss
│       │   │   └── ionic-newsletter-signup.tsx
│       │   ├── ionic-search/
│       │   │   ├── ionic-search.scss
│       │   │   └── ionic-search.tsx
│       │   ├── ionic-slider/
│       │   │   ├── ionic-slider.scss
│       │   │   └── ionic-slider.tsx
│       │   ├── ionic-snap-bar/
│       │   │   ├── ionic-snap-bar.scss
│       │   │   └── ionic-snap-bar.tsx
│       │   ├── ionic-sub-header/
│       │   │   ├── ionic-sub-header.scss
│       │   │   └── ionic-sub-header.tsx
│       │   ├── ionic-switcher/
│       │   │   ├── ionic-switcher.scss
│       │   │   └── ionic-switcher.tsx
│       │   ├── ionic-toggle/
│       │   │   ├── ionic-toggle-button.scss
│       │   │   ├── ionic-toggle-button.tsx
│       │   │   ├── ionic-toggle-tab.tsx
│       │   │   ├── ionic-toggle.scss
│       │   │   └── ionic-toggle.tsx
│       │   ├── react-capacitor/
│       │   │   ├── react-capacitor.scss
│       │   │   └── react-capacitor.tsx
│       │   ├── react-components/
│       │   │   ├── react-components.scss
│       │   │   └── react-components.tsx
│       │   ├── react-demo/
│       │   │   ├── react-demo.scss
│       │   │   └── react-demo.tsx
│       │   ├── twitter-script/
│       │   │   └── twitter-script.tsx
│       │   ├── ui/
│       │   │   ├── floating-input/
│       │   │   │   ├── floating-input.scss
│       │   │   │   └── floating-input.tsx
│       │   │   └── tip/
│       │   │       ├── tip.scss
│       │   │       └── tip.tsx
│       │   └── vue-components/
│       │       ├── vue-components.scss
│       │       └── vue-components.tsx
│       ├── components.d.ts
│       ├── declarations.ts
│       ├── forms.tsx
│       ├── icons.tsx
│       ├── index.d.ts
│       ├── index.html
│       ├── index.ts
│       ├── prism-ionic.scss
│       └── util/
│           ├── analytics.ts
│           ├── app-icon.ts
│           ├── auth.ts
│           ├── common.ts
│           ├── hubspot.ts
│           └── recaptcha.ts
├── content/
│   ├── 404.html
│   ├── CNAME
│   ├── assets/
│   │   └── fonts/
│   │       └── inter/
│   │           └── inter.css
│   ├── browserconfig.xml
│   ├── circle.yml
│   ├── css/
│   │   ├── animate.css
│   │   ├── bootstrap/
│   │   │   ├── .gitkeep
│   │   │   └── bootstrap.css
│   │   ├── bootstrap.css
│   │   ├── creator.css
│   │   ├── ionic-hljs.css
│   │   ├── ionic.css
│   │   ├── ionicons.css
│   │   ├── job.css
│   │   ├── main.css
│   │   ├── nprogress.css
│   │   ├── pages/
│   │   │   ├── about.css
│   │   │   ├── case-studies.css
│   │   │   ├── contact.css
│   │   │   ├── developers.css
│   │   │   ├── enterprise/
│   │   │   │   ├── contact.css
│   │   │   │   ├── customers.css
│   │   │   │   ├── home.css
│   │   │   │   ├── index.css
│   │   │   │   ├── platform.css
│   │   │   │   ├── resources/
│   │   │   │   │   ├── case-studies.css
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── webinars.css
│   │   │   │   │   └── whitepapers.css
│   │   │   │   ├── solutions/
│   │   │   │   │   ├── cross-platform.css
│   │   │   │   │   ├── design.css
│   │   │   │   │   ├── index.css
│   │   │   │   │   └── toolkit.css
│   │   │   │   ├── support.css
│   │   │   │   └── why-ionic.css
│   │   │   ├── framework.css
│   │   │   ├── home.css
│   │   │   ├── integrations/
│   │   │   │   ├── detail.css
│   │   │   │   └── index.css
│   │   │   ├── integrations.css
│   │   │   ├── jobs.css
│   │   │   ├── press/
│   │   │   │   └── index.css
│   │   │   ├── pricing/
│   │   │   │   └── index.css
│   │   │   ├── pro/
│   │   │   │   └── index.css
│   │   │   ├── products/
│   │   │   │   ├── advisory.css
│   │   │   │   ├── appflow.css
│   │   │   │   ├── enterprise-core.css
│   │   │   │   ├── enterprise-edition.css
│   │   │   │   ├── enterprise-engine.css
│   │   │   │   ├── index.css
│   │   │   │   └── studio.css
│   │   │   ├── resources/
│   │   │   │   ├── case-studies.css
│   │   │   │   └── webinars.css
│   │   │   ├── solutions/
│   │   │   │   ├── cross-platform.css
│   │   │   │   └── design.css
│   │   │   ├── strategy-session.css
│   │   │   ├── subscribe.css
│   │   │   ├── support.css
│   │   │   ├── survey/
│   │   │   │   ├── 2017.css
│   │   │   │   └── 2018.css
│   │   │   ├── team.css
│   │   │   ├── thank-you.css
│   │   │   ├── translations.css
│   │   │   ├── trusted-partners.css
│   │   │   ├── values.css
│   │   │   └── webinars.css
│   │   ├── pygments/
│   │   │   ├── autumn.css
│   │   │   └── ionic.css
│   │   ├── site.css
│   │   ├── slick-theme.css
│   │   ├── slick.css
│   │   ├── style.css
│   │   ├── styles.css
│   │   ├── syntax.css
│   │   └── v2-demos/
│   │       ├── css/
│   │       │   └── ionic.css
│   │       └── ionic.css
│   ├── data/
│   │   └── index.json
│   ├── dist/
│   │   ├── bundles/
│   │   │   ├── ionic.css
│   │   │   ├── ionic.ios.css
│   │   │   ├── ionic.md.css
│   │   │   ├── ionic.system.js
│   │   │   └── ionic.wp.css
│   │   ├── demos/
│   │   │   ├── scrollbar-fix.css
│   │   │   └── scrollbar-fix.js
│   │   └── preview-app/
│   │       └── www/
│   │           ├── assets/
│   │           │   └── fonts/
│   │           │       ├── ionicons.scss
│   │           │       ├── noto-sans.scss
│   │           │       └── roboto.scss
│   │           ├── build/
│   │           │   ├── main.css
│   │           │   ├── main.js
│   │           │   ├── polyfills.js
│   │           │   ├── sw-toolbox.js
│   │           │   └── vendor.js
│   │           ├── index.html
│   │           ├── manifest.json
│   │           └── service-worker.js
│   ├── docs/
│   │   └── data/
│   │       └── index.json
│   ├── fonts/
│   │   ├── inter/
│   │   │   └── inter.css
│   │   └── roboto.scss
│   ├── js/
│   │   ├── css-docs-angular.js
│   │   ├── ionic-angular.js
│   │   ├── ionic-docs.js
│   │   ├── ionic-highlight.js
│   │   ├── ionic-site.js
│   │   ├── ionic.bundle.js
│   │   ├── ionic.js
│   │   ├── lunr.js
│   │   ├── nprogress.js
│   │   ├── site.js
│   │   ├── slick.js
│   │   ├── stencil/
│   │   │   ├── cjs/
│   │   │   │   └── es5/
│   │   │   │       ├── build/
│   │   │   │       │   ├── bubpozqb.entry.js
│   │   │   │       │   ├── bubpozqb.sc.entry.js
│   │   │   │       │   ├── cetridhp.entry.js
│   │   │   │       │   ├── cetridhp.sc.entry.js
│   │   │   │       │   ├── cz7vrrja.entry.js
│   │   │   │       │   ├── cz7vrrja.sc.entry.js
│   │   │   │       │   ├── ehteibio.entry.js
│   │   │   │       │   ├── ehteibio.sc.entry.js
│   │   │   │       │   ├── hclgi8iu.entry.js
│   │   │   │       │   ├── hclgi8iu.sc.entry.js
│   │   │   │       │   ├── index.js
│   │   │   │       │   ├── lo9utgpp.entry.js
│   │   │   │       │   ├── lo9utgpp.sc.entry.js
│   │   │   │       │   ├── m0trkizf.entry.js
│   │   │   │       │   ├── m0trkizf.sc.entry.js
│   │   │   │       │   ├── nrj8jyt7.entry.js
│   │   │   │       │   ├── nrj8jyt7.sc.entry.js
│   │   │   │       │   ├── raorzqti.entry.js
│   │   │   │       │   ├── raorzqti.sc.entry.js
│   │   │   │       │   ├── uy47nvwg.entry.js
│   │   │   │       │   ├── uy47nvwg.sc.entry.js
│   │   │   │       │   ├── uyiaiqzf.entry.js
│   │   │   │       │   ├── uyiaiqzf.sc.entry.js
│   │   │   │       │   ├── z7r5cewq.entry.js
│   │   │   │       │   └── z7r5cewq.sc.entry.js
│   │   │   │       ├── index.js
│   │   │   │       ├── ionic-site-components.components.js
│   │   │   │       ├── ionic-site-components.core.js
│   │   │   │       ├── ionic-site-components.define.js
│   │   │   │       └── polyfills/
│   │   │   │           ├── array.js
│   │   │   │           ├── css-shim.js
│   │   │   │           ├── dom.js
│   │   │   │           ├── fetch.js
│   │   │   │           ├── map.js
│   │   │   │           ├── object.js
│   │   │   │           ├── promise.js
│   │   │   │           ├── string.js
│   │   │   │           ├── tslib.js
│   │   │   │           └── url.js
│   │   │   ├── collection/
│   │   │   │   ├── collection-manifest.json
│   │   │   │   ├── components/
│   │   │   │   │   ├── icon-external/
│   │   │   │   │   │   ├── icon-external.css
│   │   │   │   │   │   ├── icon-external.js
│   │   │   │   │   │   └── icon-external.scss
│   │   │   │   │   ├── ionic-appflow-activatior/
│   │   │   │   │   │   ├── ionic-appflow-activatior.js
│   │   │   │   │   │   ├── ionic-appflow-activator.css
│   │   │   │   │   │   └── ionic-appflow-activator.scss
│   │   │   │   │   ├── ionic-bar-chart/
│   │   │   │   │   │   ├── ionic-bar-chart.css
│   │   │   │   │   │   ├── ionic-bar-chart.js
│   │   │   │   │   │   └── ionic-bar-chart.scss
│   │   │   │   │   ├── ionic-button/
│   │   │   │   │   │   ├── ionic-button.css
│   │   │   │   │   │   ├── ionic-button.js
│   │   │   │   │   │   └── ionic-button.scss
│   │   │   │   │   ├── ionic-newsletter-signup/
│   │   │   │   │   │   ├── ico-email.js
│   │   │   │   │   │   ├── ionic-newsletter-signup.css
│   │   │   │   │   │   ├── ionic-newsletter-signup.js
│   │   │   │   │   │   └── ionic-newsletter-signup.scss
│   │   │   │   │   ├── ionic-quick-signup/
│   │   │   │   │   │   ├── ionic-quick-signup.css
│   │   │   │   │   │   ├── ionic-quick-signup.js
│   │   │   │   │   │   └── ionic-quick-signup.scss
│   │   │   │   │   ├── ionic-search/
│   │   │   │   │   │   ├── arrow.svg.js
│   │   │   │   │   │   ├── ionic-search.css
│   │   │   │   │   │   ├── ionic-search.js
│   │   │   │   │   │   └── ionic-search.scss
│   │   │   │   │   ├── ionic-slider/
│   │   │   │   │   │   ├── ionic-slider.css
│   │   │   │   │   │   ├── ionic-slider.js
│   │   │   │   │   │   └── ionic-slider.scss
│   │   │   │   │   ├── ionic-snap-bar/
│   │   │   │   │   │   ├── ionic-snap-bar.css
│   │   │   │   │   │   ├── ionic-snap-bar.js
│   │   │   │   │   │   └── ionic-snap-bar.scss
│   │   │   │   │   └── ionic-toggle/
│   │   │   │   │       ├── ionic-toggle-button.css
│   │   │   │   │       ├── ionic-toggle-button.js
│   │   │   │   │       ├── ionic-toggle-button.scss
│   │   │   │   │       ├── ionic-toggle-tab.js
│   │   │   │   │       ├── ionic-toggle.css
│   │   │   │   │       ├── ionic-toggle.js
│   │   │   │   │       └── ionic-toggle.scss
│   │   │   │   ├── index.js
│   │   │   │   └── interface.js
│   │   │   ├── esm/
│   │   │   │   ├── es2017/
│   │   │   │   │   ├── build/
│   │   │   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   │   │   ├── cetridhp.entry.js
│   │   │   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   │   │   ├── ehteibio.entry.js
│   │   │   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   │   │   ├── raorzqti.entry.js
│   │   │   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   │   │   └── z7r5cewq.sc.entry.js
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── ionic-site-components.components.js
│   │   │   │   │   ├── ionic-site-components.core.js
│   │   │   │   │   └── ionic-site-components.define.js
│   │   │   │   ├── es5/
│   │   │   │   │   ├── build/
│   │   │   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   │   │   ├── cetridhp.entry.js
│   │   │   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   │   │   ├── ehteibio.entry.js
│   │   │   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   │   │   ├── raorzqti.entry.js
│   │   │   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   │   │   └── z7r5cewq.sc.entry.js
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── ionic-site-components.components.js
│   │   │   │   │   ├── ionic-site-components.core.js
│   │   │   │   │   ├── ionic-site-components.define.js
│   │   │   │   │   └── polyfills/
│   │   │   │   │       ├── array.js
│   │   │   │   │       ├── css-shim.js
│   │   │   │   │       ├── dom.js
│   │   │   │   │       ├── fetch.js
│   │   │   │   │       ├── map.js
│   │   │   │   │       ├── object.js
│   │   │   │   │       ├── promise.js
│   │   │   │   │       ├── string.js
│   │   │   │   │       ├── tslib.js
│   │   │   │   │       └── url.js
│   │   │   │   └── index.js
│   │   │   ├── index.js
│   │   │   ├── ionic-site-components/
│   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   ├── bubpozqb.es5.entry.js
│   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   ├── bubpozqb.sc.es5.entry.js
│   │   │   │   ├── cetridhp.entry.js
│   │   │   │   ├── cetridhp.es5.entry.js
│   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   ├── cetridhp.sc.es5.entry.js
│   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   ├── cz7vrrja.es5.entry.js
│   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   ├── cz7vrrja.sc.es5.entry.js
│   │   │   │   ├── ehteibio.entry.js
│   │   │   │   ├── ehteibio.es5.entry.js
│   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   ├── ehteibio.sc.es5.entry.js
│   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   ├── hclgi8iu.es5.entry.js
│   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   ├── hclgi8iu.sc.es5.entry.js
│   │   │   │   ├── index.es5.js
│   │   │   │   ├── index.js
│   │   │   │   ├── ionic-site-components.ftjdmnjq.js
│   │   │   │   ├── ionic-site-components.guhwuz8o.js
│   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   ├── lo9utgpp.es5.entry.js
│   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   ├── lo9utgpp.sc.es5.entry.js
│   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   ├── m0trkizf.es5.entry.js
│   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   ├── m0trkizf.sc.es5.entry.js
│   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   ├── nrj8jyt7.es5.entry.js
│   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   ├── nrj8jyt7.sc.es5.entry.js
│   │   │   │   ├── raorzqti.entry.js
│   │   │   │   ├── raorzqti.es5.entry.js
│   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   ├── raorzqti.sc.es5.entry.js
│   │   │   │   ├── svg/
│   │   │   │   │   ├── index.esm.d.ts
│   │   │   │   │   ├── index.esm.js
│   │   │   │   │   └── index.js
│   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   ├── uy47nvwg.es5.entry.js
│   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   ├── uy47nvwg.sc.es5.entry.js
│   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   ├── uyiaiqzf.es5.entry.js
│   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   ├── uyiaiqzf.sc.es5.entry.js
│   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   ├── z7r5cewq.es5.entry.js
│   │   │   │   ├── z7r5cewq.sc.entry.js
│   │   │   │   └── z7r5cewq.sc.es5.entry.js
│   │   │   ├── ionic-site-components.js
│   │   │   ├── loader/
│   │   │   │   ├── index.cjs.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.es2017.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── svg/
│   │   │   │   ├── index.esm.d.ts
│   │   │   │   ├── index.esm.js
│   │   │   │   └── index.js
│   │   │   ├── types/
│   │   │   │   ├── components/
│   │   │   │   │   ├── icon-external/
│   │   │   │   │   │   └── icon-external.d.ts
│   │   │   │   │   ├── ionic-appflow-activatior/
│   │   │   │   │   │   └── ionic-appflow-activatior.d.ts
│   │   │   │   │   ├── ionic-bar-chart/
│   │   │   │   │   │   └── ionic-bar-chart.d.ts
│   │   │   │   │   ├── ionic-button/
│   │   │   │   │   │   └── ionic-button.d.ts
│   │   │   │   │   ├── ionic-newsletter-signup/
│   │   │   │   │   │   ├── ico-email.d.ts
│   │   │   │   │   │   └── ionic-newsletter-signup.d.ts
│   │   │   │   │   ├── ionic-quick-signup/
│   │   │   │   │   │   └── ionic-quick-signup.d.ts
│   │   │   │   │   ├── ionic-search/
│   │   │   │   │   │   ├── arrow.svg.d.ts
│   │   │   │   │   │   └── ionic-search.d.ts
│   │   │   │   │   ├── ionic-slider/
│   │   │   │   │   │   └── ionic-slider.d.ts
│   │   │   │   │   ├── ionic-snap-bar/
│   │   │   │   │   │   └── ionic-snap-bar.d.ts
│   │   │   │   │   └── ionic-toggle/
│   │   │   │   │       ├── ionic-toggle-button.d.ts
│   │   │   │   │       ├── ionic-toggle-tab.d.ts
│   │   │   │   │       └── ionic-toggle.d.ts
│   │   │   │   ├── components.d.ts
│   │   │   │   ├── index.d.ts
│   │   │   │   └── stencil.core.d.ts
│   │   │   └── web-components.json
│   │   └── v2site.js
│   ├── manifest.json
│   ├── present-ionic/
│   │   ├── animate.css
│   │   ├── index.html
│   │   ├── slides/
│   │   │   ├── css/
│   │   │   │   ├── ionic.css
│   │   │   │   └── print/
│   │   │   │       ├── paper.css
│   │   │   │       └── pdf.css
│   │   │   ├── demos/
│   │   │   │   ├── actionsheet/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── collection-repeat/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── list/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── index.js
│   │   │   │   ├── modal/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── navigation/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── page1.html
│   │   │   │   │       ├── page2.html
│   │   │   │   │       └── page3.html
│   │   │   │   ├── popover/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── pull-to-refresh/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── sidemenu/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── attendees.html
│   │   │   │   │       ├── check-in.html
│   │   │   │   │       ├── event-menu.html
│   │   │   │   │       └── home.html
│   │   │   │   ├── slidebox/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── style.css
│   │   │   │   └── tabs/
│   │   │   │       ├── index.html
│   │   │   │       ├── index.js
│   │   │   │       └── templates/
│   │   │   │           ├── about.html
│   │   │   │           ├── contact.html
│   │   │   │           ├── facts.html
│   │   │   │           ├── facts2.html
│   │   │   │           ├── home.html
│   │   │   │           └── nav-stack.html
│   │   │   ├── index.html
│   │   │   ├── ionic/
│   │   │   │   ├── css/
│   │   │   │   │   └── ionic.css
│   │   │   │   ├── js/
│   │   │   │   │   ├── angular/
│   │   │   │   │   │   ├── angular-animate.js
│   │   │   │   │   │   ├── angular-resource.js
│   │   │   │   │   │   ├── angular-sanitize.js
│   │   │   │   │   │   └── angular.js
│   │   │   │   │   ├── angular-ui/
│   │   │   │   │   │   └── angular-ui-router.js
│   │   │   │   │   ├── ionic-angular.js
│   │   │   │   │   ├── ionic.bundle.js
│   │   │   │   │   └── ionic.js
│   │   │   │   └── version.json
│   │   │   ├── lib/
│   │   │   │   ├── css/
│   │   │   │   │   └── zenburn.css
│   │   │   │   └── js/
│   │   │   │       ├── classList.js
│   │   │   │       └── html5shiv.js
│   │   │   └── plugin/
│   │   │       ├── highlight/
│   │   │       │   └── highlight.js
│   │   │       └── print-pdf/
│   │   │           └── print-pdf.js
│   │   └── style.css
│   ├── public_html/
│   │   └── css/
│   │       └── site.css
│   ├── robots.txt
│   ├── scss/
│   │   ├── _demos.scss
│   │   ├── _docs-api.scss
│   │   ├── _docs.scss
│   │   ├── _fonts.scss
│   │   ├── _footer.scss
│   │   ├── _forms.scss
│   │   ├── _getting-started.scss
│   │   ├── _guide.scss
│   │   ├── _header.scss
│   │   ├── _input-types.scss
│   │   ├── _news.scss
│   │   ├── _products.scss
│   │   ├── _showcase.scss
│   │   ├── _syntax.scss
│   │   ├── _testimonials.scss
│   │   ├── _tutorials.scss
│   │   ├── _type.scss
│   │   ├── _v2.scss
│   │   ├── _what-is.scss
│   │   ├── bootstrap/
│   │   │   ├── _alerts.scss
│   │   │   ├── _badges.scss
│   │   │   ├── _breadcrumbs.scss
│   │   │   ├── _button-groups.scss
│   │   │   ├── _buttons.scss
│   │   │   ├── _carousel.scss
│   │   │   ├── _close.scss
│   │   │   ├── _code.scss
│   │   │   ├── _component-animations.scss
│   │   │   ├── _dropdowns.scss
│   │   │   ├── _forms.scss
│   │   │   ├── _glyphicons.scss
│   │   │   ├── _grid.scss
│   │   │   ├── _input-groups.scss
│   │   │   ├── _jumbotron.scss
│   │   │   ├── _labels.scss
│   │   │   ├── _list-group.scss
│   │   │   ├── _media.scss
│   │   │   ├── _mixins.scss
│   │   │   ├── _modals.scss
│   │   │   ├── _navbar.scss
│   │   │   ├── _navs.scss
│   │   │   ├── _normalize.scss
│   │   │   ├── _pager.scss
│   │   │   ├── _pagination.scss
│   │   │   ├── _panels.scss
│   │   │   ├── _popovers.scss
│   │   │   ├── _print.scss
│   │   │   ├── _progress-bars.scss
│   │   │   ├── _responsive-utilities.scss
│   │   │   ├── _scaffolding.scss
│   │   │   ├── _tables.scss
│   │   │   ├── _theme.scss
│   │   │   ├── _thumbnails.scss
│   │   │   ├── _tooltip.scss
│   │   │   ├── _type.scss
│   │   │   ├── _utilities.scss
│   │   │   ├── _variables.scss
│   │   │   ├── _wells.scss
│   │   │   └── bootstrap.scss
│   │   ├── ionic/
│   │   │   └── _ionic.scss
│   │   ├── site.css
│   │   └── site.scss
│   └── sitemap.xml
├── debug.log
├── package.json
├── scripts/
│   ├── deploy_staging.sh
│   ├── gulp-tasks.js
│   ├── linkchecker.sh
│   ├── prepare.sh
│   ├── preview-app/
│   │   └── webpack.config.js
│   ├── sitemappings.json
│   └── test.sh
├── server/
│   ├── config.js
│   ├── controllers/
│   │   ├── contactCtrl.js
│   │   ├── getformCtrl.js
│   │   ├── hsblockedCtrl.js
│   │   ├── hsconvertedCtrl.js
│   │   ├── newsletterCtrl.js
│   │   └── viewCtrl.js
│   ├── markdown/
│   │   ├── code-of-conduct.md
│   │   ├── corona.md
│   │   ├── enterprise-license-agreement.md
│   │   ├── pr-1704222-latest-version-of-ionic-provides-universal-design-system-for-enterprises.md
│   │   ├── pr-170725-dev-survey-says-the-web-is-wi.md
│   │   ├── pr-171206-ionic-brings-powerful-app-dev.md
│   │   ├── pr-capacitor-adds-support-for-swift-5-and-android-10-securty-performance.md
│   │   ├── pr-ionic-5-brings-major-design-updates.md
│   │   ├── pr-ionic-achieves-record-revenue-growth-in-2019.md
│   │   ├── pr-ionic-alan-announce-integration.md
│   │   ├── pr-ionic-framework-4-release.md
│   │   ├── privacy-policy.md
│   │   └── tos.md
│   ├── markdown.js
│   ├── pageNotFound.js
│   ├── pages/
│   │   ├── 404.html
│   │   ├── _includes/
│   │   │   ├── footer.html
│   │   │   ├── head.html
│   │   │   ├── header.html
│   │   │   ├── header_nav.html
│   │   │   ├── logo_svg.html
│   │   │   ├── macros.html
│   │   │   ├── mixpanel.html
│   │   │   ├── mobile_nav.html
│   │   │   ├── pre_footer.html
│   │   │   ├── promos/
│   │   │   │   ├── card-auth-connect.html
│   │   │   │   ├── card-identity-vault.html
│   │   │   │   ├── card-offline-storage.html
│   │   │   │   ├── data-sheet-offline-storage.html
│   │   │   │   ├── evaluating-ionic-for-enterprise.html
│   │   │   │   ├── how-to-get-started.html
│   │   │   │   ├── hybrid-vs-native.html
│   │   │   │   ├── ioniconf.html
│   │   │   │   ├── newsletter-signup.html
│   │   │   │   ├── pwa-architects-guide.html
│   │   │   │   ├── pwa-frameworks.html
│   │   │   │   ├── quad-cta.html
│   │   │   │   ├── rethinking-low-code.html
│   │   │   │   ├── start-enterprise.html
│   │   │   │   ├── start-shipping.html
│   │   │   │   ├── state-of-app-dev-2020.html
│   │   │   │   ├── tri-cta.html
│   │   │   │   └── why-hybrid.html
│   │   │   ├── scripts.html
│   │   │   └── svg/
│   │   │       ├── advisory-icon.html
│   │   │       ├── appflow-icon.html
│   │   │       ├── enterprise-edition-icon.html
│   │   │       ├── ionic-blue.html
│   │   │       ├── ionic-grey.html
│   │   │       ├── ionic-navy.html
│   │   │       ├── ionic-purple.html
│   │   │       ├── ionic-salmon.html
│   │   │       ├── studio-icon.html
│   │   │       ├── survey-2018-bars.html
│   │   │       └── survey-2018-cubes.html
│   │   ├── _layouts/
│   │   │   ├── base.html
│   │   │   ├── blank.html
│   │   │   ├── creator.html
│   │   │   └── enterprise.html
│   │   ├── angular.html
│   │   ├── contributors.html
│   │   ├── creator/
│   │   │   ├── index.html
│   │   │   └── support.html
│   │   ├── developers.html
│   │   ├── ds.html
│   │   ├── early-access.html
│   │   ├── enterprise/
│   │   │   └── solutions/
│   │   │       ├── cross-platform.html
│   │   │       └── index.html
│   │   ├── getting-started-with-ionic-vue.html
│   │   ├── go/
│   │   │   ├── pwa-architects-guide/
│   │   │   │   ├── index.html
│   │   │   │   └── thank-you.html
│   │   │   └── why-hybrid/
│   │   │       ├── index.html
│   │   │       └── thank-you.html
│   │   ├── ioniconf-2020.html
│   │   ├── native.html
│   │   ├── pro/
│   │   │   └── contact.html
│   │   ├── react.html
│   │   ├── start.html
│   │   ├── stencil-jamstack2021.html
│   │   ├── subscribe.html
│   │   ├── survey/
│   │   │   ├── 2017.html
│   │   │   ├── 2018.html
│   │   │   └── 2020.html
│   │   ├── translate.html
│   │   ├── values.html
│   │   ├── verification/
│   │   │   ├── failed.html
│   │   │   └── success.html
│   │   └── vue.html
│   ├── prismic.js
│   ├── processRequest.js
│   ├── router.js
│   ├── tools.js
│   └── well-known/
│       └── openid-configuration.js
├── server.js
├── stencil.config.js
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
### Node template
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*



================================================
FILE: .env-docker
================================================
API_URL=http://api
DASHBOARD_URL=http://dashboard:8080
PORT=3000
PROD=false


================================================
FILE: .gitignore
================================================
.*.sw*
.sass-cache
.DS_Store
node_modules/
_site/
/.idea/
.jekyll-metadata
.tmp
linkchecker.html

* text=auto
/.env
/content/_includes/head_includes.prod.html
/content/_includes/fluid/footer_tags.prod.html
/content/_includes/fluid/head.prod.html
/dist/
/server/pages/_includes/head.prod.html
/server/pages/_includes/scripts.prod.html
/.vscode
/package-lock.json
/null
/.stencil


================================================
FILE: .npmrc
================================================
package-lock=false

================================================
FILE: .slugignore
================================================
assets/img/


================================================
FILE: CONTRIBUTING.md
================================================
The ionic website repo is licensed and managed separately from the ionic repo itself.

By contributing to the driftyco/ionic-site repo, you agree to have your contributions licensed under the Apache 2.0 license. See the `LICENSE` file for details on this license.

## GUIDELINES

When in doubt, keep pull requests small. Just a few related changes and nothing else. Separate different features or changes into different PRs to make it easy to merge.

Always use two spaces and no tabs for indentation.

## Structure

Note that `content/docs/api`, `content/docs/api`, `content/docs/native`, `content/docs/storage`, and anything in `content/dist` is automatically generated. The v1, v2, Ionic Native, and Ionic Storage docs are generated by dgeni on every commit to their respective source repos, using inline code comments.

This site's humble beginnings started as a Github Pages site, and much of that core structure remains. Now it is a tiny Node.js/Express app that lives on a Heroku server. The Node.js app for the most part serves static html files that have been generated by Jekyll. Some pages are generated server-side via traditional Express routes with Nunjucks templates (very similar to jekyll). These are contained within the `server` directory.

On every commit, Heroku runs a clean build and starts a node server at [ionic-site-staging.herokuapp.com](https://ionic-site-staging.herokuapp.com). Periodically the Ionic core team will inspect the site and promote the staging server to [ionicframework.com](https://ionicframework.com).

This project is in some ways multiple sites in one and has multiple build/compile processes. `gulp watch` will run all of these, and should meet most style and JS processing needs. Some older docs pages are ignored for performance reasons. A `bundle exec jekyll build` should update these.

v1 styles are in `content/scss` and output to `content/css/site.css`. v2 styles are in `assets/scss` and output to `content/css/v2.css`.

v2 images and JS are preprocessed and optimized. Their working directories should be `assets/img` and `assets/js` respectively.

Per Jekyll conventions, any directory starting with an underscore does not get copied to production.


================================================
FILE: Dockerfile
================================================
FROM node:16

WORKDIR /usr/src/app

COPY package.json ./

RUN npm i

COPY . ./

EXPOSE 3000

CMD npm run start


================================================
FILE: Gulpfile.js
================================================
const gulp = require('gulp');
const $ = require('gulp-load-plugins')();
const browserSync = require('browser-sync');
const cachebust = require('gulp-cache-bust');
const cleanCSS = require('gulp-clean-css');
const concat = require('gulp-concat');
const cp = require('child_process');
const del = require('del');
const es = require('event-stream');
const footer = require('gulp-footer');
const header = require('gulp-header');
const lib = require('./assets/3rd-party-libs.json');
const nodemon = require('gulp-nodemon');
const path = require('path');
const pkg = require('./package.json');
const prefix = require('gulp-autoprefixer');
const rename = require('gulp-rename');
const sass = require('gulp-sass')(require('node-sass'));
const uglify = require('gulp-uglify-es').default;

var closureStart =
  '/*!\n' +
  ' * Ionic \n' +
  ' * Copyright 2015-present Drifty Co.\n' +
  ' */\n' +
  '(function() {\n';
var closureEnd = '\n})();\n';
var version = pkg.version;
let server;

const bustCache = async () => {

  function cacheBust(path, fileName) {
    return gulp.src(path + fileName)
      .pipe(cachebust({
        basePath: 'dist'
      }))
      .pipe(rename({ extname: '.prod.html' }))
      .pipe(gulp.dest('./' + path));
  }

  var bustArray = function () {
    return [
      cacheBust('server/pages/_includes/', 'head.html'),
      cacheBust('server/pages/_includes/', 'scripts.html'),
    ];
  };

  return es.concat(bustArray());
}

function bustCacheAndReload(done) {
  bustCache().on('end', function () {
    done();
    browserSync.reload();
    // apply the template change in the background
    // gulp.start('jekyll-build.incremental');
  });
}

function restartAndReload(done) {
  server.emit('restart');
  if (typeof done === 'function') {
    done();
  }
  browserSync.reload();
}

function justReload(done) {
  // server.restart(function(err) {
  // if (!err) {
  done();
  browserSync.reload();
  // }
  // });
}

const stylesOthers = () => {
  // For best performance, don't add Sass partials to `gulp.src`
  return gulp.src([
    'assets/scss/**/*.scss',
    '!assets/scss/styles.scss'
  ])
    .pipe($.sourcemaps.init())
    .pipe(sass({
      precision: 10,
      onError: console.error.bind(console, 'Sass error:'),
      includePaths: [path.join(__dirname, 'node_modules')]
    }))
    .pipe(prefix())
    .pipe($.sourcemaps.write())
    .pipe(gulp.dest('dist/css/'))
    // Concatenate and minify styles
    .pipe(cleanCSS({ compatibility: 'ie8' }))
    .pipe(rename({ extname: '.min.css' }))
    .pipe(gulp.dest('dist/css/'))
    .pipe($.size({ title: 'styles' }));
};

const stylesMain = () => {
  // For best performance, don't add Sass partials to `gulp.src`
  return gulp.src(
    ['assets/scss/styles.scss'].concat(lib.css)
  ).pipe($.sourcemaps.init())
    .pipe(sass({
      precision: 10,
      onError: console.error.bind(console, 'Sass error:'),
      includePaths: [path.join(__dirname, 'node_modules')]
    }))
    .pipe(prefix())
    .pipe(concat('styles.css'))
    .pipe($.sourcemaps.write())
    .pipe(gulp.dest('dist/css/'))
    // Concatenate and minify styles
    .pipe(cleanCSS({ compatibility: 'ie8' }))
    .pipe(rename({ extname: '.min.css' }))
    .pipe(gulp.dest('dist/css/'))
    .pipe($.size({ title: 'styles' }));
};

// compress and concat JS
const js = () => {
  return gulp.src(lib.js.concat(['assets/js/**/*.js']))
    .pipe($.sourcemaps.init())
    .pipe(concat('ionic-site.js', { newLine: ';' }))
    .pipe(header(closureStart))
    .pipe(footer(closureEnd))
    .pipe($.sourcemaps.write())
    .pipe(gulp.dest('dist/js'))
    .pipe(uglify())
    .pipe(rename({ extname: '.min.js' }))
    .pipe(gulp.dest('dist/js'))
    .pipe($.size({ title: 'js' }));
};


const stencil = (done) => {
  return cp.spawn(path.join('node_modules', '.bin', 'stencil'),
    ['build', process.env.PROD ? '' : '--dev'],
    {
      cwd: process.cwd(),
      env: {
        PATH: process.env.PATH
      },
      shell: true,
      stdio: 'inherit'
    }
  )

    .on('close', async () => {
      done();

    }).on('error', function (err) {
      console.log(err)
      throw err;
    });
};

const serverStart = (done) => {
  server = nodemon({
    script: 'server.js',
    watch: 'server',
  }).on('start', () => {
    if (browserSync.active) {
      setTimeout(browserSync.reload, 3050);
    } else {
      // giving the server 2 seconds to start
      setTimeout(done, 2000);
    }
  })
    .on('crash', function () {
      console.error('Application has crashed!\n')
      server.emit('restart', 10)  // restart the server in 10 seconds
    });
};


const slugPrep = () => {
  return del(['assets']);
};

const build = gulp.series(
  gulp.parallel(
    gulp.series(
      stencil,
      js
    ),
    stylesMain,
    stylesOthers
  ),
  bustCache
)

const run = gulp.parallel(
  build,
  serverStart
)

const watchServer = async () => gulp.watch(['server.js', 'server/**/*'], restartAndReload);
const watchStylesMain = async () => gulp.watch(['assets/scss/**/_*.scss', 'assets/scss/components/_*.scss', 'assets/scss/styles.scss'], gulp.series(stylesMain, justReload))
const watchStylesOthers = async () => gulp.watch(['assets/scss/**/*.scss', '!assets/scss/styles.scss', '!assets/scss/**/_*.scss'], gulp.series(stylesOthers, justReload))
const watchJS = async () => gulp.watch(['assets/js/**/*.js'], gulp.series(js, justReload));
const watchStencil = async () => gulp.watch(['assets/stencil/**/*.{ts,tsx,scss}', '!assets/stencil/components.d.ts'], gulp.series(stencil, justReload));

const watch = gulp.series(
  run,
  // serverStart,
  gulp.parallel(
    watchServer,
    watchStylesMain,
    watchStylesOthers,
    watchJS,
    watchStencil
  ),
  async () => {
    return browserSync.init({ 'proxy': 'http://localhost:3000', 'port': 3003 })
  }
);


// gulp.task('default', ['build']);

module.exports = {
  build,
  bustCache,
  js,
  run,
  serverStart,
  slugPrep,
  stencil,
  stylesMain,
  stylesOthers,
  watch,
};


================================================
FILE: LICENSE
================================================

                                 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

   Copyright 2016 Drifty Co.

   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.


================================================
FILE: Procfile
================================================
web: node server.js


================================================
FILE: README.md
================================================
ionic-site
==========

Repo for the ionicframework.com site.  To preview local Ionic changes, follow the instructions at the [Ionic repo](https://github.com/ionic-team/ionic#documentation).

## No Docs Here

Ionic Docs are in a [separate repo](https://github.com/ionic-team/ionic-docs/). This site is primarily used for general communications and promotion of Ionic framework and related products and services. 

## Local Build

1. Run `npm install`
2. Run `npm start` (after the first run, this is the only step needed)


## Third Party Libraries

3rd part libraries should be concatenated into the site bundle by adding them via package.json and specifying what files to include in the `assets/3rd-party-libs.json` file. 


## Deploy

Changes to master are automatically deployed to  [staging.ionicframework.com/](https://staging.ionicframework.com/). Periodically, the Ionic team will inspect staging and promote it to [ionicframework.com](https://ionicframework.com).


## Community

* Follow [@ionicframework on Twitter](https://twitter.com/ionicframework).
* Subscribe to the [Ionic Newsletter](https://ionicframework.com/subscribe/).
* Have a question that's not a feature request or bug report? [Discuss on the Ionic Forum](https://forum.ionicframework.com/).
* Read our [Blog](https://ionicframework.com/blog/).
* Have a feature request or find a bug? [Submit an issue](https://github.com/ionic-team/ionic/issues).
* See a problem with our documentation? [Submit an issue](https://github.com/ionic-team/ionic-docs/issues).
* See a typo or browser bug on a non-docs page? [Submit an issue](https://github.com/ionic-team/ionic-site/issues).


================================================
FILE: app.json
================================================
{
  "addons": [
    "heroku-redis"
  ],
  "buildpacks": [
    {
      "url": "heroku/nodejs"
    }
  ],
  "description": "The marketing/communications parts of the ",
  "repository": "https://github.com/ionic-team/ionic-site",
  "env": {
    "PIPEDRIVE_TOKEN": {
      "required": true
    },
    "PORT": {
      "required": true
    },
    "PRISMIC_PREVIEW": {
      "required": true
    },
    "PROD": {
      "required": true
    },
    "SENTRY_DSN": {
      "required": true
    },
    "SENTRY_ENVIRONMENT": {
      "required": true
    }
  },
  "formation": {
    "web": {
      "quantity": 1
    }
  },
  "name": "ionic-site",
  "scripts": {
  },
  "stack": "heroku-18"
}


================================================
FILE: assets/3rd-party-libs.json
================================================
{
  "css": [

  ],
  "js": [
    "node_modules/jquery/dist/jquery.slim.min.js",
    "node_modules/bootstrap-sass/assets/javascripts/bootstrap.min.js",
    "node_modules/typed.js/dist/typed.umd.js"
  ]
}


================================================
FILE: assets/js/analytics.js
================================================
// Google Tag Manager
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TKMGCBC');


$(function() {
  var hsqCount = 0;

  function linker() {
    // Append Hubspot IDs to dashboard links
    var hsutk = window.getCookie('hubspotutk');
    if(hsqCount > 10) {
      // Hubspot is disabled or down
      console.log('failing', hsutk)
      return;
    } else if (!window._hsq && !hsutk) {
      hsqCount++;
      // console.log('no hubspot ID yet')
      setTimeout(linker, 300);
      return;
    }

    var els = Array.prototype.slice.call(document.querySelectorAll('a[href*="dashboard.ionicframework.com"]'));
    if(!els) {
      //console.log('no dash links')
      return;
    }

    // console.log(els)
    els.forEach(function(el) {
      var href = el.getAttribute('href');

      // https://stackoverflow.com/questions/44412241/is-it-possible-to-read-experimentid-and-variationid-in-javascript-with-google-op
      // var propertyId = "UA-44023830-1";
      // var experimentId = Object.keys(gaData[propertyId].experiments)[0];
      // var variationId = gaData[propertyId].experiments[experimentId];
      // console.log(experimentId, variationId)

      if (href.indexOf('?') !== -1) {

        // If a source attribute has been added to URI and an A/B test is running, append test group ID to value of source attribute
        // var sourceVal = getQuerystringParameter('source', '?' + href.split('?')[1]);
        // if (sourceVal.length && experimentId.length) {
        //   href = updateQuerystringParameter(href, 'source', sourceVal + '-' + experimentId + '-' + variationId);
        // }
        // console.log(href)
        href += '&'
      } else {
        href += '?'
      }
      // Add Hubspot UTK ID as HSID if present
      if (hsutk) {
        href += 'hsid=' + encodeURIComponent(hsutk);
      }

      // pass along any query parameters on the current page on to the dashboard as well
      href += '&' + (window.location.search.split('?')[1] || '');

      el.setAttribute('href', href );
    })
  }
  linker();
});

function getQuerystringParameter(name, querystring) {
  name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
  var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
  var results = regex.exec(querystring);
  return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};

function updateQuerystringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }
  else {
    return uri + separator + key + "=" + value;
  }
}

window.hsSnitch = () => {
  // no hubspot forms on this page, bail
  if (!document.querySelector('[src="//js.hsforms.net/forms/v2.js"]')) return;

  const selector = '.hs-form';
  let submitting;

  // has the form already loaded?
  let hsFound = !!document.querySelector(selector);
  if (hsFound) return;

  const report = async (type) => {
    console.error(`Hubspot Error: ${type} blocked`);
    const response = await fetch('/api/v1/hsblocked', {
      method: 'POST',
      mode: 'same-origin',
      cache: 'no-cache',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        browser: navigator.userAgent,
        url: window.location.href,
        type
      })
    });
    // give HS 3 seconds to load
  }

  const timer = setTimeout(() => {
    // one last check, just to be safe
    if (hsFound || !!document.querySelector(selector)) return;
    report('form');
  }, 3000);

  // listen for the form to load
  window.addEventListener('message', event => {
    // console.log(event.data);
    if(event.data.type !== 'hsFormCallback') return;

    // form found
    if(event.data.eventName === 'onFormReady') {
      hsFound = true;
      clearTimeout(timer);
      return;
    }

    // form submitting
    if(event.data.eventName === 'onFormSubmit') {
      submitting = setTimeout(() => {
        report('form-submit');
      }, 2000);
      return;
    }

    // form submission sucessful
    if(event.data.eventName === 'onFormSubmitted') {
      clearTimeout(submitting)
      return;
    }
  });
}
window.hsSnitch();

// shorthand global analytics click event helper
window.c = (cat, lbl, el, val, opts = {}) => {
  if (typeof val === 'undefined') {
    val = null;
  }

  try {
    window._hsq.push(['trackEvent', {
      id: lbl
    }])
  } catch(e) {
    console.warn('Hubspot blocked', e);
  }

  if (window.ga && ga.loaded) {
    let linkFollowed = false;
    const followLink = () => {
      if (!el || linkFollowed) return;
      linkFollowed = true;
      if (el.target === '_blank') {
        const newWindow = window.open(el.href);
        // if new tab wasn't blocked, we're done
        if (newWindow) return;
      }
      document.location = el.href;
    }

    ga(opts.trackerName ? `${opts.trackerName}.send` : 'send', {
      hitType: 'event',
      eventCategory: cat,
      eventAction: 'Click',
      eventLabel: lbl,
      eventValue: val,
      hitCallback: followLink
    });
    // GA has 1 second to do its thing
    setTimeout(followLink, 1000);
  } else {
    if (!!el) {
      document.location = el.href;
    }
  }
  // don't follow links until analytics is recieved
  if (!!el) {
    return false;
  }
};


================================================
FILE: assets/js/highlight.js
================================================
(function(factory) {

  // Setup highlight.js for different environments. First is Node.js or
  // CommonJS.
  if(typeof exports !== 'undefined') {
    factory(exports);
  } else {
    // Export hljs globally even when using AMD for cases when this script
    // is loaded with others that may still expect a global hljs.
    window.hljs = factory({});

    // Finally register the global hljs with AMD.
    if(typeof define === 'function' && define.amd) {
      define('hljs', [], function() {
        return window.hljs;
      });
    }
  }

}(function(hljs) {

  /* Utility functions */

  function escape(value) {
    return value.replace(/&/gm, '&amp;').replace(/</gm, '&lt;').replace(/>/gm, '&gt;');
  }

  function tag(node) {
    return node.nodeName.toLowerCase();
  }

  function testRe(re, lexeme) {
    var match = re && re.exec(lexeme);
    return match && match.index == 0;
  }

  function isNotHighlighted(language) {
    return (/^(no-?highlight|plain|text)$/i).test(language);
  }

  function blockLanguage(block) {
    var i, match, length,
        classes = block.className + ' ';

    classes += block.parentNode ? block.parentNode.className : '';

    // language-* takes precedence over non-prefixed class names
    match = (/\blang(?:uage)?-([\w-]+)\b/i).exec(classes);
    if (match) {
      return getLanguage(match[1]) ? match[1] : 'no-highlight';
    }

    classes = classes.split(/\s+/);
    for (i = 0, length = classes.length; i < length; i++) {
      if (getLanguage(classes[i]) || isNotHighlighted(classes[i])) {
        return classes[i];
      }
    }
  }

  function inherit(parent, obj) {
    var result = {}, key;
    for (key in parent)
      result[key] = parent[key];
    if (obj)
      for (key in obj)
        result[key] = obj[key];
    return result;
  }

  /* Stream merging */

  function nodeStream(node) {
    var result = [];
    (function _nodeStream(node, offset) {
      for (var child = node.firstChild; child; child = child.nextSibling) {
        if (child.nodeType == 3)
          offset += child.nodeValue.length;
        else if (child.nodeType == 1) {
          result.push({
            event: 'start',
            offset: offset,
            node: child
          });
          offset = _nodeStream(child, offset);
          // Prevent void elements from having an end tag that would actually
          // double them in the output. There are more void elements in HTML
          // but we list only those realistically expected in code display.
          if (!tag(child).match(/br|hr|img|input/)) {
            result.push({
              event: 'stop',
              offset: offset,
              node: child
            });
          }
        }
      }
      return offset;
    })(node, 0);
    return result;
  }

  function mergeStreams(original, highlighted, value) {
    var processed = 0;
    var result = '';
    var nodeStack = [];

    function selectStream() {
      if (!original.length || !highlighted.length) {
        return original.length ? original : highlighted;
      }
      if (original[0].offset != highlighted[0].offset) {
        return (original[0].offset < highlighted[0].offset) ? original : highlighted;
      }

      /*
      To avoid starting the stream just before it should stop the order is
      ensured that original always starts first and closes last:

      if (event1 == 'start' && event2 == 'start')
        return original;
      if (event1 == 'start' && event2 == 'stop')
        return highlighted;
      if (event1 == 'stop' && event2 == 'start')
        return original;
      if (event1 == 'stop' && event2 == 'stop')
        return highlighted;

      ... which is collapsed to:
      */
      return highlighted[0].event == 'start' ? original : highlighted;
    }

    function open(node) {
      function attr_str(a) {return ' ' + a.nodeName + '="' + escape(a.value) + '"';}
      result += '<' + tag(node) + Array.prototype.map.call(node.attributes, attr_str).join('') + '>';
    }

    function close(node) {
      result += '</' + tag(node) + '>';
    }

    function render(event) {
      (event.event == 'start' ? open : close)(event.node);
    }

    while (original.length || highlighted.length) {
      var stream = selectStream();
      result += escape(value.substr(processed, stream[0].offset - processed));
      processed = stream[0].offset;
      if (stream == original) {
        /*
        On any opening or closing tag of the original markup we first close
        the entire highlighted node stack, then render the original tag along
        with all the following original tags at the same offset and then
        reopen all the tags on the highlighted stack.
        */
        nodeStack.reverse().forEach(close);
        do {
          render(stream.splice(0, 1)[0]);
          stream = selectStream();
        } while (stream == original && stream.length && stream[0].offset == processed);
        nodeStack.reverse().forEach(open);
      } else {
        if (stream[0].event == 'start') {
          nodeStack.push(stream[0].node);
        } else {
          nodeStack.pop();
        }
        render(stream.splice(0, 1)[0]);
      }
    }
    return result + escape(value.substr(processed));
  }

  /* Initialization */

  function compileLanguage(language) {

    function reStr(re) {
        return (re && re.source) || re;
    }

    function langRe(value, global) {
      return new RegExp(
        reStr(value),
        'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')
      );
    }

    function compileMode(mode, parent) {
      if (mode.compiled)
        return;
      mode.compiled = true;

      mode.keywords = mode.keywords || mode.beginKeywords;
      if (mode.keywords) {
        var compiled_keywords = {};

        var flatten = function(className, str) {
          if (language.case_insensitive) {
            str = str.toLowerCase();
          }
          str.split(' ').forEach(function(kw) {
            var pair = kw.split('|');
            compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];
          });
        };

        if (typeof mode.keywords == 'string') { // string
          flatten('keyword', mode.keywords);
        } else {
          Object.keys(mode.keywords).forEach(function (className) {
            flatten(className, mode.keywords[className]);
          });
        }
        mode.keywords = compiled_keywords;
      }
      mode.lexemesRe = langRe(mode.lexemes || /\b\w+\b/, true);

      if (parent) {
        if (mode.beginKeywords) {
          mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\b';
        }
        if (!mode.begin)
          mode.begin = /\B|\b/;
        mode.beginRe = langRe(mode.begin);
        if (!mode.end && !mode.endsWithParent)
          mode.end = /\B|\b/;
        if (mode.end)
          mode.endRe = langRe(mode.end);
        mode.terminator_end = reStr(mode.end) || '';
        if (mode.endsWithParent && parent.terminator_end)
          mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;
      }
      if (mode.illegal)
        mode.illegalRe = langRe(mode.illegal);
      if (mode.relevance === undefined)
        mode.relevance = 1;
      if (!mode.contains) {
        mode.contains = [];
      }
      var expanded_contains = [];
      mode.contains.forEach(function(c) {
        if (c.variants) {
          c.variants.forEach(function(v) {expanded_contains.push(inherit(c, v));});
        } else {
          expanded_contains.push(c == 'self' ? mode : c);
        }
      });
      mode.contains = expanded_contains;
      mode.contains.forEach(function(c) {compileMode(c, mode);});

      if (mode.starts) {
        compileMode(mode.starts, parent);
      }

      var terminators =
        mode.contains.map(function(c) {
          return c.beginKeywords ? '\\.?(' + c.begin + ')\\.?' : c.begin;
        })
        .concat([mode.terminator_end, mode.illegal])
        .map(reStr)
        .filter(Boolean);
      mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};
    }

    compileMode(language);
  }

  /*
  Core highlighting function. Accepts a language name, or an alias, and a
  string with the code to highlight. Returns an object with the following
  properties:

  - relevance (int)
  - value (an HTML string with highlighting markup)

  */
  function highlight(name, value, ignore_illegals, continuation) {

    function subMode(lexeme, mode) {
      for (var i = 0; i < mode.contains.length; i++) {
        if (testRe(mode.contains[i].beginRe, lexeme)) {
          return mode.contains[i];
        }
      }
    }

    function endOfMode(mode, lexeme) {
      if (testRe(mode.endRe, lexeme)) {
        while (mode.endsParent && mode.parent) {
          mode = mode.parent;
        }
        return mode;
      }
      if (mode.endsWithParent) {
        return endOfMode(mode.parent, lexeme);
      }
    }

    function isIllegal(lexeme, mode) {
      return !ignore_illegals && testRe(mode.illegalRe, lexeme);
    }

    function keywordMatch(mode, match) {
      var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];
      return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];
    }

    function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {
      var classPrefix = noPrefix ? '' : options.classPrefix,
          openSpan    = '<span class="' + classPrefix,
          closeSpan   = leaveOpen ? '' : '</span>';

      openSpan += classname + '">';

      return openSpan + insideSpan + closeSpan;
    }

    function processKeywords() {
      if (!top.keywords)
        return escape(mode_buffer);
      var result = '';
      var last_index = 0;
      top.lexemesRe.lastIndex = 0;
      var match = top.lexemesRe.exec(mode_buffer);
      while (match) {
        result += escape(mode_buffer.substr(last_index, match.index - last_index));
        var keyword_match = keywordMatch(top, match);
        if (keyword_match) {
          relevance += keyword_match[1];
          result += buildSpan(keyword_match[0], escape(match[0]));
        } else {
          result += escape(match[0]);
        }
        last_index = top.lexemesRe.lastIndex;
        match = top.lexemesRe.exec(mode_buffer);
      }
      return result + escape(mode_buffer.substr(last_index));
    }

    function processSubLanguage() {
      var explicit = typeof top.subLanguage == 'string';
      if (explicit && !languages[top.subLanguage]) {
        return escape(mode_buffer);
      }

      var result = explicit ?
                   highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :
                   highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);

      // Counting embedded language score towards the host language may be disabled
      // with zeroing the containing mode relevance. Usecase in point is Markdown that
      // allows XML everywhere and makes every XML snippet to have a much larger Markdown
      // score.
      if (top.relevance > 0) {
        relevance += result.relevance;
      }
      if (explicit) {
        continuations[top.subLanguage] = result.top;
      }
      return buildSpan(result.language, result.value, false, true);
    }

    function processBuffer() {
      return top.subLanguage !== undefined ? processSubLanguage() : processKeywords();
    }

    function startNewMode(mode, lexeme) {
      var markup = mode.className? buildSpan(mode.className, '', true): '';
      if (mode.returnBegin) {
        result += markup;
        mode_buffer = '';
      } else if (mode.excludeBegin) {
        result += escape(lexeme) + markup;
        mode_buffer = '';
      } else {
        result += markup;
        mode_buffer = lexeme;
      }
      top = Object.create(mode, {parent: {value: top}});
    }

    function processLexeme(buffer, lexeme) {

      mode_buffer += buffer;
      if (lexeme === undefined) {
        result += processBuffer();
        return 0;
      }

      var new_mode = subMode(lexeme, top);
      if (new_mode) {
        result += processBuffer();
        startNewMode(new_mode, lexeme);
        return new_mode.returnBegin ? 0 : lexeme.length;
      }

      var end_mode = endOfMode(top, lexeme);
      if (end_mode) {
        var origin = top;
        if (!(origin.returnEnd || origin.excludeEnd)) {
          mode_buffer += lexeme;
        }
        result += processBuffer();
        do {
          if (top.className) {
            result += '</span>';
          }
          relevance += top.relevance;
          top = top.parent;
        } while (top != end_mode.parent);
        if (origin.excludeEnd) {
          result += escape(lexeme);
        }
        mode_buffer = '';
        if (end_mode.starts) {
          startNewMode(end_mode.starts, '');
        }
        return origin.returnEnd ? 0 : lexeme.length;
      }

      if (isIllegal(lexeme, top))
        throw new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || '<unnamed>') + '"');

      /*
      Parser should not reach this point as all types of lexemes should be caught
      earlier, but if it does due to some bug make sure it advances at least one
      character forward to prevent infinite looping.
      */
      mode_buffer += lexeme;
      return lexeme.length || 1;
    }

    var language = getLanguage(name);
    if (!language) {
      throw new Error('Unknown language: "' + name + '"');
    }

    compileLanguage(language);
    var top = continuation || language;
    var continuations = {}; // keep continuations for sub-languages
    var result = '', current;
    for(current = top; current != language; current = current.parent) {
      if (current.className) {
        result = buildSpan(current.className, '', true) + result;
      }
    }
    var mode_buffer = '';
    var relevance = 0;
    try {
      var match, count, index = 0;
      while (true) {
        top.terminators.lastIndex = index;
        match = top.terminators.exec(value);
        if (!match)
          break;
        count = processLexeme(value.substr(index, match.index - index), match[0]);
        index = match.index + count;
      }
      processLexeme(value.substr(index));
      for(current = top; current.parent; current = current.parent) { // close dangling modes
        if (current.className) {
          result += '</span>';
        }
      }
      return {
        relevance: relevance,
        value: result,
        language: name,
        top: top
      };
    } catch (e) {
      if (e.message.indexOf('Illegal') != -1) {
        return {
          relevance: 0,
          value: escape(value)
        };
      } else {
        throw e;
      }
    }
  }

  /*
  Highlighting with language detection. Accepts a string with the code to
  highlight. Returns an object with the following properties:

  - language (detected language)
  - relevance (int)
  - value (an HTML string with highlighting markup)
  - second_best (object with the same structure for second-best heuristically
    detected language, may be absent)

  */
  function highlightAuto(text, languageSubset) {
    languageSubset = languageSubset || options.languages || Object.keys(languages);
    var result = {
      relevance: 0,
      value: escape(text)
    };
    var second_best = result;
    languageSubset.forEach(function(name) {
      if (!getLanguage(name)) {
        return;
      }
      var current = highlight(name, text, false);
      current.language = name;
      if (current.relevance > second_best.relevance) {
        second_best = current;
      }
      if (current.relevance > result.relevance) {
        second_best = result;
        result = current;
      }
    });
    if (second_best.language) {
      result.second_best = second_best;
    }
    return result;
  }

  /*
  Post-processing of the highlighted markup:

  - replace TABs with something more useful
  - replace real line-breaks with '<br>' for non-pre containers

  */
  function fixMarkup(value) {
    if (options.tabReplace) {
      value = value.replace(/^((<[^>]+>|\t)+)/gm, function(match, p1 /*..., offset, s*/) {
        return p1.replace(/\t/g, options.tabReplace);
      });
    }
    if (options.useBR) {
      value = value.replace(/\n/g, '<br>');
    }
    return value;
  }

  function buildClassName(prevClassName, currentLang, resultLang) {
    var language = currentLang ? aliases[currentLang] : resultLang,
        result   = [prevClassName.trim()];

    if (!prevClassName.match(/\bhljs\b/)) {
      result.push('hljs');
    }

    if (prevClassName.indexOf(language) === -1) {
      result.push(language);
    }

    return result.join(' ').trim();
  }

  /*
  Applies highlighting to a DOM node containing code. Accepts a DOM node and
  two optional parameters for fixMarkup.
  */
  function highlightBlock(block) {
    var language = blockLanguage(block);
    if (isNotHighlighted(language))
        return;

    var node;
    if (options.useBR) {
      node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
      node.innerHTML = block.innerHTML.replace(/\n/g, '').replace(/<br[ \/]*>/g, '\n');
    } else {
      node = block;
    }
    var text = node.textContent;
    var result = language ? highlight(language, text, true) : highlightAuto(text);

    var originalStream = nodeStream(node);
    if (originalStream.length) {
      var resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
      resultNode.innerHTML = result.value;
      result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
    }
    result.value = fixMarkup(result.value);

    block.innerHTML = result.value;
    block.className = buildClassName(block.className, language, result.language);
    block.result = {
      language: result.language,
      re: result.relevance
    };
    if (result.second_best) {
      block.second_best = {
        language: result.second_best.language,
        re: result.second_best.relevance
      };
    }
  }

  var options = {
    classPrefix: 'hljs-',
    tabReplace: null,
    useBR: false,
    languages: undefined
  };

  /*
  Updates highlight.js global options with values passed in the form of an object
  */
  function configure(user_options) {
    options = inherit(options, user_options);
  }

  /*
  Applies highlighting to all <pre><code>..</code></pre> blocks on a page.
  */
  function initHighlighting() {
    if (initHighlighting.called)
      return;
    initHighlighting.called = true;

    var blocks = document.querySelectorAll('pre code');
    Array.prototype.forEach.call(blocks, highlightBlock);
  }

  /*
  Attaches highlighting to the page load event.
  */
  function initHighlightingOnLoad() {
    addEventListener('DOMContentLoaded', initHighlighting, false);
    addEventListener('load', initHighlighting, false);
  }

  var languages = {};
  var aliases = {};

  function registerLanguage(name, language) {
    var lang = languages[name] = language(hljs);
    if (lang.aliases) {
      lang.aliases.forEach(function(alias) {aliases[alias] = name;});
    }
  }

  function listLanguages() {
    return Object.keys(languages);
  }

  function getLanguage(name) {
    name = (name || '').toLowerCase();
    return languages[name] || languages[aliases[name]];
  }

  /* Interface definition */

  hljs.highlight = highlight;
  hljs.highlightAuto = highlightAuto;
  hljs.fixMarkup = fixMarkup;
  hljs.highlightBlock = highlightBlock;
  hljs.configure = configure;
  hljs.initHighlighting = initHighlighting;
  hljs.initHighlightingOnLoad = initHighlightingOnLoad;
  hljs.registerLanguage = registerLanguage;
  hljs.listLanguages = listLanguages;
  hljs.getLanguage = getLanguage;
  hljs.inherit = inherit;

  // Common regexps
  hljs.IDENT_RE = '[a-zA-Z]\\w*';
  hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*';
  hljs.NUMBER_RE = '\\b\\d+(\\.\\d+)?';
  hljs.C_NUMBER_RE = '(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float
  hljs.BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b...
  hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~';

  // Common modes
  hljs.BACKSLASH_ESCAPE = {
    begin: '\\\\[\\s\\S]', relevance: 0
  };
  hljs.APOS_STRING_MODE = {
    className: 'string',
    begin: '\'', end: '\'',
    illegal: '\\n',
    contains: [hljs.BACKSLASH_ESCAPE]
  };
  hljs.QUOTE_STRING_MODE = {
    className: 'string',
    begin: '"', end: '"',
    illegal: '\\n',
    contains: [hljs.BACKSLASH_ESCAPE]
  };
  hljs.PHRASAL_WORDS_MODE = {
    begin: /\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/
  };
  hljs.COMMENT = function (begin, end, inherits) {
    var mode = hljs.inherit(
      {
        className: 'comment',
        begin: begin, end: end,
        contains: []
      },
      inherits || {}
    );
    mode.contains.push(hljs.PHRASAL_WORDS_MODE);
    mode.contains.push({
      className: 'doctag',
      begin: "(?:TODO|FIXME|NOTE|BUG|XXX):",
      relevance: 0
    });
    return mode;
  };
  hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');
  hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\*', '\\*/');
  hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');
  hljs.NUMBER_MODE = {
    className: 'number',
    begin: hljs.NUMBER_RE,
    relevance: 0
  };
  hljs.C_NUMBER_MODE = {
    className: 'number',
    begin: hljs.C_NUMBER_RE,
    relevance: 0
  };
  hljs.BINARY_NUMBER_MODE = {
    className: 'number',
    begin: hljs.BINARY_NUMBER_RE,
    relevance: 0
  };
  hljs.CSS_NUMBER_MODE = {
    className: 'number',
    begin: hljs.NUMBER_RE + '(' +
      '%|em|ex|ch|rem'  +
      '|vw|vh|vmin|vmax' +
      '|cm|mm|in|pt|pc|px' +
      '|deg|grad|rad|turn' +
      '|s|ms' +
      '|Hz|kHz' +
      '|dpi|dpcm|dppx' +
      ')?',
    relevance: 0
  };
  hljs.REGEXP_MODE = {
    className: 'regexp',
    begin: /\//, end: /\/[gimuy]*/,
    illegal: /\n/,
    contains: [
      hljs.BACKSLASH_ESCAPE,
      {
        begin: /\[/, end: /\]/,
        relevance: 0,
        contains: [hljs.BACKSLASH_ESCAPE]
      }
    ]
  };
  hljs.TITLE_MODE = {
    className: 'title',
    begin: hljs.IDENT_RE,
    relevance: 0
  };
  hljs.UNDERSCORE_TITLE_MODE = {
    className: 'title',
    begin: hljs.UNDERSCORE_IDENT_RE,
    relevance: 0
  };

hljs.registerLanguage('bash', function(hljs) {
  var VAR = {
    className: 'variable',
    variants: [
      {begin: /\$[\w\d#@][\w\d_]*/},
      {begin: /\$\{(.*?)}/}
    ]
  };
  var QUOTE_STRING = {
    className: 'string',
    begin: /"/, end: /"/,
    contains: [
      hljs.BACKSLASH_ESCAPE,
      VAR,
      {
        className: 'variable',
        begin: /\$\(/, end: /\)/,
        contains: [hljs.BACKSLASH_ESCAPE]
      }
    ]
  };
  var APOS_STRING = {
    className: 'string',
    begin: /'/, end: /'/
  };

  return {
    aliases: ['sh', 'zsh'],
    lexemes: /-?[a-z\.]+/,
    keywords: {
      keyword:
        'if then else elif fi for while in do done case esac function',
      literal:
        'true false',
      built_in:
        // Shell built-ins
        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +
        'trap umask unset ' +
        // Bash built-ins
        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +
        'read readarray source type typeset ulimit unalias ' +
        // Shell modifiers
        'set shopt ' +
        // Zsh built-ins
        'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +
        'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +
        'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +
        'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +
        'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +
        'zpty zregexparse zsocket zstyle ztcp',
      operator:
        '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster
    },
    contains: [
      {
        className: 'shebang',
        begin: /^#![^\n]+sh\s*$/,
        relevance: 10
      },
      {
        className: 'function',
        begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
        returnBegin: true,
        contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\w[\w\d_]*/})],
        relevance: 0
      },
      hljs.HASH_COMMENT_MODE,
      hljs.NUMBER_MODE,
      QUOTE_STRING,
      APOS_STRING,
      VAR
    ]
  };
});

hljs.registerLanguage('css', function(hljs) {
  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';
  var FUNCTION = {
    className: 'function',
    begin: IDENT_RE + '\\(',
    returnBegin: true,
    excludeEnd: true,
    end: '\\('
  };
  var RULE = {
    className: 'rule',
    begin: /[A-Z\_\.\-]+\s*:/, returnBegin: true, end: ';', endsWithParent: true,
    contains: [
      {
        className: 'attribute',
        begin: /\S/, end: ':', excludeEnd: true,
        starts: {
          className: 'value',
          endsWithParent: true, excludeEnd: true,
          contains: [
            FUNCTION,
            hljs.CSS_NUMBER_MODE,
            hljs.QUOTE_STRING_MODE,
            hljs.APOS_STRING_MODE,
            hljs.C_BLOCK_COMMENT_MODE,
            {
              className: 'hexcolor', begin: '#[0-9A-Fa-f]+'
            },
            {
              className: 'important', begin: '!important'
            }
          ]
        }
      }
    ]
  };

  return {
    case_insensitive: true,
    illegal: /[=\/|'\$]/,
    contains: [
      hljs.C_BLOCK_COMMENT_MODE,
      {
        className: 'id', begin: /\#[A-Za-z0-9_-]+/
      },
      {
        className: 'class', begin: /\.[A-Za-z0-9_-]+/
      },
      {
        className: 'attr_selector',
        begin: /\[/, end: /\]/,
        illegal: '$'
      },
      {
        className: 'pseudo',
        begin: /:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/
      },
      {
        className: 'at_rule',
        begin: '@(font-face|page)',
        lexemes: '[a-z-]+',
        keywords: 'font-face page'
      },
      {
        className: 'at_rule',
        begin: '@', end: '[{;]', // at_rule eating first "{" is a good thing
                                 // because it doesn’t let it to be parsed as
                                 // a rule set but instead drops parser into
                                 // the default mode which is how it should be.
        contains: [
          {
            className: 'keyword',
            begin: /\S+/
          },
          {
            begin: /\s/, endsWithParent: true, excludeEnd: true,
            relevance: 0,
            contains: [
              FUNCTION,
              hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,
              hljs.CSS_NUMBER_MODE
            ]
          }
        ]
      },
      {
        className: 'tag', begin: IDENT_RE,
        relevance: 0
      },
      {
        className: 'rules',
        begin: '{', end: '}',
        illegal: /\S/,
        contains: [
          hljs.C_BLOCK_COMMENT_MODE,
          RULE,
        ]
      }
    ]
  };
});

hljs.registerLanguage('javascript', function(hljs) {
  return {
    aliases: ['js'],
    keywords: {
      keyword:
        'in of if for while finally var new function do return void else break catch ' +
        'instanceof with throw case default try this switch continue typeof delete ' +
        'let yield const export super debugger as async await',
      literal:
        'true false null undefined NaN Infinity',
      built_in:
        'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +
        'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +
        'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +
        'TypeError URIError Number Math Date String RegExp Array Float32Array ' +
        'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +
        'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +
        'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +
        'Promise'
    },
    contains: [
      {
        className: 'pi',
        relevance: 10,
        begin: /^\s*['"]use (strict|asm)['"]/
      },
      hljs.APOS_STRING_MODE,
      hljs.QUOTE_STRING_MODE,
      { // template string
        className: 'string',
        begin: '`', end: '`',
        contains: [
          hljs.BACKSLASH_ESCAPE,
          {
            className: 'subst',
            begin: '\\$\\{', end: '\\}'
          }
        ]
      },
      hljs.C_LINE_COMMENT_MODE,
      hljs.C_BLOCK_COMMENT_MODE,
      {
        className: 'number',
        variants: [
          { begin: '\\b(0[bB][01]+)' },
          { begin: '\\b(0[oO][0-7]+)' },
          { begin: hljs.C_NUMBER_RE }
        ],
        relevance: 0
      },
      { // "value" container
        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
        keywords: 'return throw case',
        contains: [
          hljs.C_LINE_COMMENT_MODE,
          hljs.C_BLOCK_COMMENT_MODE,
          hljs.REGEXP_MODE,
          { // E4X / JSX
            begin: /</, end: />\s*[);\]]/,
            relevance: 0,
            subLanguage: 'xml'
          }
        ],
        relevance: 0
      },
      {
        className: 'function',
        beginKeywords: 'function', end: /\{/, excludeEnd: true,
        contains: [
          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),
          {
            className: 'params',
            begin: /\(/, end: /\)/,
            excludeBegin: true,
            excludeEnd: true,
            contains: [
              hljs.C_LINE_COMMENT_MODE,
              hljs.C_BLOCK_COMMENT_MODE
            ]
          }
        ],
        illegal: /\[|%/
      },
      {
        begin: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`
      },
      {
        begin: '\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots
      },
      // ECMAScript 6 modules import
      {
        beginKeywords: 'import', end: '[;$]',
        keywords: 'import from as',
        contains: [
          hljs.APOS_STRING_MODE,
          hljs.QUOTE_STRING_MODE
        ]
      },
      { // ES6 class
        className: 'class',
        beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,
        illegal: /[:"\[\]]/,
        contains: [
          {beginKeywords: 'extends'},
          hljs.UNDERSCORE_TITLE_MODE
        ]
      }
    ],
    illegal: /#/
  };
});

hljs.registerLanguage('scss', function(hljs) {
  var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';
  var VARIABLE = {
    className: 'variable',
    begin: '(\\$' + IDENT_RE + ')\\b'
  };
  var FUNCTION = {
    className: 'function',
    begin: IDENT_RE + '\\(',
    returnBegin: true,
    excludeEnd: true,
    end: '\\('
  };
  var HEXCOLOR = {
    className: 'hexcolor', begin: '#[0-9A-Fa-f]+'
  };
  var DEF_INTERNALS = {
    className: 'attribute',
    begin: '[A-Z\\_\\.\\-]+', end: ':',
    excludeEnd: true,
    illegal: '[^\\s]',
    starts: {
      className: 'value',
      endsWithParent: true, excludeEnd: true,
      contains: [
        FUNCTION,
        HEXCOLOR,
        hljs.CSS_NUMBER_MODE,
        hljs.QUOTE_STRING_MODE,
        hljs.APOS_STRING_MODE,
        hljs.C_BLOCK_COMMENT_MODE,
        {
          className: 'important', begin: '!important'
        }
      ]
    }
  };
  return {
    case_insensitive: true,
    illegal: '[=/|\']',
    contains: [
      hljs.C_LINE_COMMENT_MODE,
      hljs.C_BLOCK_COMMENT_MODE,
      FUNCTION,
      {
        className: 'id', begin: '\\#[A-Za-z0-9_-]+',
        relevance: 0
      },
      {
        className: 'class', begin: '\\.[A-Za-z0-9_-]+',
        relevance: 0
      },
      {
        className: 'attr_selector',
        begin: '\\[', end: '\\]',
        illegal: '$'
      },
      {
        className: 'tag', // begin: IDENT_RE, end: '[,|\\s]'
        begin: '\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b',
        relevance: 0
      },
      {
        className: 'pseudo',
        begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'
      },
      {
        className: 'pseudo',
        begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'
      },
      VARIABLE,
      {
        className: 'attribute',
        begin: '\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b',
        illegal: '[^\\s]'
      },
      {
        className: 'value',
        begin: '\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b'
      },
      {
        className: 'value',
        begin: ':', end: ';',
        contains: [
          FUNCTION,
          VARIABLE,
          HEXCOLOR,
          hljs.CSS_NUMBER_MODE,
          hljs.QUOTE_STRING_MODE,
          hljs.APOS_STRING_MODE,
          {
            className: 'important', begin: '!important'
          }
        ]
      },
      {
        className: 'at_rule',
        begin: '@', end: '[{;]',
        keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',
        contains: [
          FUNCTION,
          VARIABLE,
          hljs.QUOTE_STRING_MODE,
          hljs.APOS_STRING_MODE,
          HEXCOLOR,
          hljs.CSS_NUMBER_MODE,
          {
            className: 'preprocessor',
            begin: '\\s[A-Za-z0-9_.-]+',
            relevance: 0
          }
        ]
      }
    ]
  };
});

hljs.registerLanguage('typescript', function(hljs) {
  var KEYWORDS = {
    keyword:
      'in if for while finally var new function|0 do return void else break catch ' +
      'instanceof with throw case default try this switch continue typeof delete ' +
      'let yield const class public private get set super ' +
      'static implements enum export import declare type protected @',
    literal:
      'true false null undefined NaN Infinity',
    built_in:
      'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +
      'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +
      'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +
      'TypeError URIError Number Math Date String RegExp Array Float32Array ' +
      'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +
      'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +
      'module console window document any number boolean string void'
  };

  return {
    aliases: ['ts'],
    keywords: KEYWORDS,
    contains: [
      {
        className: 'pi',
        begin: /^\s*['"]use strict['"]/,
        relevance: 0
      },
      hljs.APOS_STRING_MODE,
      hljs.QUOTE_STRING_MODE,
      hljs.C_LINE_COMMENT_MODE,
      hljs.C_BLOCK_COMMENT_MODE,
      {
        className: 'number',
        variants: [
          { begin: '\\b(0[bB][01]+)' },
          { begin: '\\b(0[oO][0-7]+)' },
          { begin: hljs.C_NUMBER_RE }
        ],
        relevance: 0
      },
      { // "value" container
        begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
        keywords: 'return throw case',
        contains: [
          hljs.C_LINE_COMMENT_MODE,
          hljs.C_BLOCK_COMMENT_MODE,
          hljs.REGEXP_MODE
        ],
        relevance: 0
      },
      {
        className: 'function',
        begin: 'function', end: /[\{;]/, excludeEnd: true,
        keywords: KEYWORDS,
        contains: [
          'self',
          hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),
          {
            className: 'params',
            begin: /\(/, end: /\)/,
            excludeBegin: true,
            excludeEnd: true,
            keywords: KEYWORDS,
            contains: [
              hljs.C_LINE_COMMENT_MODE,
              hljs.C_BLOCK_COMMENT_MODE
            ],
            illegal: /["'\(]/
          }
        ],
        illegal: /\[|%/,
        relevance: 0 // () => {} is more typical in TypeScript
      },
      {
        className: 'constructor',
        beginKeywords: 'constructor', end: /\{/, excludeEnd: true,
        relevance: 10
      },
      {
        className: 'module',
        beginKeywords: 'module', end: /\{/, excludeEnd: true
      },
      {
        className: 'interface',
        beginKeywords: 'interface', end: /\{/, excludeEnd: true,
        keywords: 'interface extends'
        },
        // MH ADDED: ES7 Decorators/Annotations
      {
        className: 'keyword',
        begin: '@', end: /\(/, excludeEnd: true
      },
      {
        className: 'string',
        begin: '`', end: /\`/, excludeEnd: false
      },
      {
        begin: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`
      },
      {
        begin: '\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots
      }
    ]
  };
});

hljs.registerLanguage('xml', function(hljs) {
  var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+';
  var PHP = {
    begin: /<\?(php)?(?!\w)/, end: /\?>/,
    subLanguage: 'php'
  };
  var TAG_INTERNALS = {
    endsWithParent: true,
    illegal: /</,
    relevance: 0,
    contains: [
      PHP,
      {
        className: 'attribute',
        begin: XML_IDENT_RE,
        relevance: 0
      },
      {
        begin: '=',
        relevance: 0,
        contains: [
          {
            className: 'value',
            contains: [PHP],
            variants: [
              {begin: /"/, end: /"/},
              {begin: /'/, end: /'/},
              {begin: /[^\s\/>]+/}
            ]
          }
        ]
      }
    ]
  };
  return {
    aliases: ['html', 'xhtml', 'rss', 'atom', 'xsl', 'plist'],
    case_insensitive: true,
    contains: [
      {
        className: 'doctype',
        begin: '<!DOCTYPE', end: '>',
        relevance: 10,
        contains: [{begin: '\\[', end: '\\]'}]
      },
      hljs.COMMENT(
        '<!--',
        '-->',
        {
          relevance: 10
        }
      ),
      {
        className: 'cdata',
        begin: '<\\!\\[CDATA\\[', end: '\\]\\]>',
        relevance: 10
      },
      {
        className: 'tag',
        /*
        The lookahead pattern (?=...) ensures that 'begin' only matches
        '<style' as a single word, followed by a whitespace or an
        ending braket. The '$' is needed for the lexeme to be recognized
        by hljs.subMode() that tests lexemes outside the stream.
        */
        begin: '<style(?=\\s|>|$)', end: '>',
        keywords: {title: 'style'},
        contains: [TAG_INTERNALS],
        starts: {
          end: '</style>', returnEnd: true,
          subLanguage: 'css'
        }
      },
      {
        className: 'tag',
        // See the comment in the <style tag about the lookahead pattern
        begin: '<script(?=\\s|>|$)', end: '>',
        keywords: {title: 'script'},
        contains: [TAG_INTERNALS],
        starts: {
          end: '\<\/script\>', returnEnd: true,
          subLanguage: ['actionscript', 'javascript', 'handlebars']
        }
      },
      PHP,
      {
        className: 'pi',
        begin: /<\?\w+/, end: /\?>/,
        relevance: 10
      },
      {
        className: 'tag',
        begin: '</?', end: '/?>',
        contains: [
          {
            className: 'title', begin: /[^ \/><\n\t]+/, relevance: 0
          },
          TAG_INTERNALS
        ]
      }
    ]
  };
});

  return hljs;
}));


================================================
FILE: assets/js/utils.js
================================================
// shim foreach for ie11
if ( !Array.prototype.forEach ) {
  Array.prototype.forEach = function(fn, scope) {
    for (var i = 0, len = this.length; i < len; ++i) {
      fn.call(scope || this, this[i], i, this);
    }
  }
}

// sidebar toggle for mobile views
var sidebarToggleEl = document.getElementById('sidebar-toggle');
if (sidebarToggleEl) {
  sidebarToggleEl.onclick = function() {
    document.getElementById('side-nav').classList.toggle('shown');
    this.classList.toggle('active');
  };
}

$(document).ready(function() {
  var detectMouse = function(e){
    $('.dropdown-toggle').dropdown();
    // remove event bindings, so it only runs once
    $(document.body).off('touchstart', detectMouse);
  }
  // attach both events to body
  $(document.body).on('touchstart', detectMouse);
//   // activate dropdowns
//   $('.dropdown-toggle').dropdown();
//
//   $(".navbar.transparent .dropdown, .pre-header .dropdown").hover(
//     function(){ $(this).addClass('open') },
//     function(){ $(this).removeClass('open') }
//   );
// 	$(".navbar.transparent .dropdown, .pre-header .dropdown").click()
//
//   // Generic helper class for on-load animations
//   $('.active-on-load').addClass('active');
});

(function () {
  // pre-header announcement animation
  var announcement = document.querySelector('.pre-header__announcement');

  if (announcement) {
    var lastClear = localStorage.getItem('last-clear');
    var timeNow  = (new Date()).getTime();

    if ((timeNow - lastClear) > 1000 * 60 * 60 ) {
      localStorage.clear();
      localStorage.setItem('last-clear', timeNow);

      setTimeout(function(){
        announcement.classList.add('animate-in');
      }, 2500)
    } else {
      announcement.classList.add('in');
    }
  }


  // mobile nav
  var mobileNav = document.querySelector('.mobile-nav');

  if (mobileNav) {
    document.querySelector('#collapse-toggle').addEventListener('click', function(){
      document.body.classList.add('no-scroll');
      mobileNav.classList.add('open');
      mobileNav.classList.remove('closed');
      mobileNav.style.display = 'block';
    });

    document.querySelector('.mobile-nav__close').addEventListener('click', function(){
      document.body.classList.remove('no-scroll');
      mobileNav.classList.remove('open');
      mobileNav.classList.add('closed');
      setTimeout(function() {
        mobileNav.style.display = 'none';
      }, 300);
    });
  }
})();

window.mobileAndTabletCheck = function() {
  var check = false;
  (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check=true})(navigator.userAgent||navigator.vendor||window.opera);
  return check;
};

window.getCookie = function(name) {
  var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
  return v ? v[2] : null;
}

window.tocToggle = function(btnEl) {
  btnEl.parentElement.classList.toggle('collapsed');
};

$('[data-toggle="tooltip"]').tooltip({container: 'body'});

// since we don't use mixpanel on every page
if (!window.mixpanel) {
  window.mixpanel = {
    track: function() { console.log('Mixpanel not enabled on this page'); }
  }
}
// optional shorthand
window.t = mixpanel.track;

window.guid = function() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000)
      .toString(16)
      .substring(1);
  }
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
    s4() + '-' + s4() + s4() + s4();
}

// add an .active class to elements w/ .activateOnScroll class on when they
// scroll in to view
var activateOnScroll = function() {
  var elems;
  var windowHeight;
  function init() {
    elems = document.querySelectorAll( window.activateOnScrollSelector ?
      activateOnScrollSelector : '.activateOnScroll');
    // avoiding a potential edge bug by activating everything
    if (window.navigator.userAgent.indexOf("Edge") > -1) {
      for (var i = 0; i < elems.length; i++) {
        elems[i].classList.add('active');
      }
      return
    }
    windowHeight = window.innerHeight ||
                   document.documentElement.clientHeight ||
                   document.body.clientHeight;;
    addEventHandlers();
    checkPosition();
  }
  function addEventHandlers() {
    window.addEventListener('scroll', checkPosition);
    window.addEventListener('resize', init);
  }
  function checkPosition() {
    for (var i = 0; i < elems.length; i++) {
      var elPos = elems[i].getBoundingClientRect();
      var offset = parseInt(elems[i].dataset.offset || 0, 10);
      if (
        (
          elPos.y - offset < 0 &&  // already past the item
          elPos.y + (elPos.height / 2) - offset > 0
        ) || (
          elPos.y + offset > 0 && // item is yet below
          elPos.y + (elPos.height / 2) + offset < windowHeight
        )
        ) {
        elems[i].classList.add('active');
      }
    }
  }
  return {
    init: init
  };
};
activateOnScroll().init();

// highlight.js syntax highlighting
hljs.initHighlightingOnLoad();

// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
// MIT license

(function() {
  var lastTime = 0;
  var vendors = ['ms', 'moz', 'webkit', 'o'];
  for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
    window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
    window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
                                  window[vendors[x] + 'CancelRequestAnimationFrame'];
  }

  if (!window.requestAnimationFrame) {
    window.requestAnimationFrame = function(callback, element) {
      var currTime = new Date().getTime();
      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
      var id = window.setTimeout(function() {
        callback(currTime + timeToCall);
      }, timeToCall);
      lastTime = currTime + timeToCall;
      return id;
    };
  }
  if (!window.cancelAnimationFrame) {
    window.cancelAnimationFrame = function(id) {
      clearTimeout(id);
    };
  }
}());

// determine if sticky sub-nav is stuck
// *intersection observer and position:sticky browser support match
const subHeader = {
  el: document.getElementById('sub-header'),
  stuck: false,
  queued: false,
  observer: new IntersectionObserver(function(entries) {
    if (subHeader.queued) return;

    // no intersection with screen
  	if(!subHeader.stuck && entries[0].intersectionRatio === 0) {
      subHeader.queued = true;
      requestAnimationFrame(function() {
        subHeader.el.classList.add('sub-header--stuck');
        subHeader.stuck = true;
        subHeader.queued = false;
      });

  	// fully intersects with screen
    } else if(subHeader.stuck && entries[0].intersectionRatio === 1) {
      subHeader.queued = true;
      requestAnimationFrame(function() {
        subHeader.el.classList.remove('sub-header--stuck');
        subHeader.stuck = false;
        subHeader.queued = false;
      })
    }
  }, { threshold: [0,1] }),
  init: function() {
    if (subHeader.el) {
      subHeader.observer.observe(document.getElementById('sub-header__trigger'));
      setTimeout(function() {
        subHeader.el.classList.add('sub-header_initialized');
        document.querySelector('.navbar-default').classList.add('navbar--not-fixed');
      }, 405)
    }
  }
}
subHeader.init();

// Smooth Scroll To anchor links with the .anchor class
$('a.anchor[href*="#"]').click(function(event) {
  // On-page links
  if (
    location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
    &&
    location.hostname == this.hostname
  ) {
    // Figure out element to scroll to
    var target = $(this.hash);
    if (!target.length) {
      target = $('[name="' + this.hash.substring(1) + '"]');
    }
    // Does a scroll target exist?
    if (target.length) {
      var offset = event.target.dataset && event.target.dataset.offset
        ? event.target.dataset.offset : 100
      scrollToY(target.offset().top - offset, 2000);
    } else {
      // otherwise scroll to the top of the page
      scrollToY(0, 2000);
    }
    history.pushState && history.pushState(null, null, this.hash)
    return false;
  }
});


window.scrollToEl = function(selector, speed) {
  // if passed a string, query for the element
  // otherwise assume it's already and element
  if(typeof selector === 'string') {
    selector = document.querySelector(selector);
  }
  scrollToY(selector.offsetTop, speed)
}

window.scrollToY = function(scrollTargetY, speed, easing) {
    // scrollTargetY: the target scrollY property of the window
    // speed: time in pixels per second
    // easing: easing equation to use

    var scrollY = window.scrollY,
        scrollTargetY = scrollTargetY || 0,
        speed = speed || 2000,
        easing = easing || 'easeOutSine',
        currentTime = 0;
    // min time .1, max time .8 seconds
    var time = Math.max(.1, Math.min(Math.abs(scrollY - scrollTargetY) / speed, .8));

    // easing equations from https://github.com/danro/easing-js/blob/master/easing.js
    var PI_D2 = Math.PI / 2,
        easingEquations = {
            easeOutSine: function (pos) {
                return Math.sin(pos * (Math.PI / 2));
            },
            easeInOutSine: function (pos) {
                return (-0.5 * (Math.cos(Math.PI * pos) - 1));
            },
            easeInOutQuint: function (pos) {
                if ((pos /= 0.5) < 1) {
                    return 0.5 * Math.pow(pos, 5);
                }
                return 0.5 * (Math.pow((pos - 2), 5) + 2);
            },
            easeOutExpo: function(pos) {
              return (pos===1) ? 1 : -Math.pow(2, -10 * pos) + 1;
            }
        };

    // add animation loop
    function tick() {
        currentTime += 1 / 60;

        var p = currentTime / time;
        var t = easingEquations[easing](p);

        if (p < 1) {
            requestAnimationFrame(tick);
            window.scrollTo(0, scrollY + ((scrollTargetY - scrollY) * t));
        } else {
            window.scrollTo(0, scrollTargetY);
        }
    }

    // call it once to get started
    tick();
}


window.stickyNav = {
  init: function () {
    this.isShown = false;
    this.once = false;
    this.navBar = document.querySelector('.navbar');
    this.stickyNavBar = document.createElement("div");
    this.stickyNavBar.classList.add('navbar','navbar-default', 'light', 'navbar-sticky', 'navbar-sticky--hide');
    if (this.navBar.className.indexOf('enterprise') > -1) {
      this.stickyNavBar.classList.add('enterprise');
    }
    this.stickyNavBar.appendChild(this.navBar.querySelector('.wrapper').cloneNode(true));
    this.stickyNavBar.style.visibility = 'hidden';
    document.body.appendChild(this.stickyNavBar);
    document.body.classList.add('body-sticky-nav');
    document.addEventListener('scroll', this.handleScroll.bind(this))
  },

  handleScroll: function () {
    var self = this;
    requestAnimationFrame(function(){
      //header nav height + announcement bar height
      if (window.scrollY > (70 + 74)) {
        self.show();
      } else {
        self.hide();
      }
    });
  },

  show: function () {
    if (this.isShown) return;
    this.isShown = true;

    if (!this.once) {
      this.stickyNavBar.style.visibility = 'visible';
      this.once = true;
    }

    this.stickyNavBar.classList.add('navbar-sticky--show');
    this.stickyNavBar.classList.remove('navbar-sticky--hide');
  },

  hide: function () {
    if (!this.isShown) return;
    this.isShown = false;
    this.stickyNavBar.classList.add('navbar-sticky--hide');
    this.stickyNavBar.classList.remove('navbar-sticky--show');
  }
}

window.rafContext = function(drawFn) {
  var requestId;
  function render() {
    drawFn();
    requestId = requestAnimationFrame(render);
  }

  return {
    play: function() {
      if (!requestId) {
        render();
      }
    },
    stop: function() {
      if (requestId) {
        cancelAnimationFrame(requestId);
        requestId = null;
      }
    }
  }
}

window.initAnimation = function(el, ctx, _options) {
  var options = _options || {};
  var breakpoint = (options.breakpoint) ?  options.breakpoint : 767;
  var once = options.once || false;
  var hasPlayed = options.playWhenInView ? false : true;
  var isPlaying = false;

  function firstPlay () {
    play();
    hasPlayed = true;
  }

  function play () {
    if (isPlaying || window.innerWidth < breakpoint) return;
    if (typeof ctx === 'function') {
      ctx();
    } else {
      ctx.play();
    }

    isPlaying = true;
  }

  function pause () {
    if (!isPlaying || typeof ctx === 'function') return;
    ctx.stop();
    isPlaying = false;
  }

  function checkScroll() {
    if (once && hasPlayed) return;
    var winHeight = window.innerHeight;
    var bbox = el.getBoundingClientRect();
    var offset = 0.5;

    if (!hasPlayed && bbox.top < winHeight * offset && bbox.bottom > winHeight * offset ) firstPlay();
    if (!hasPlayed) return;
    if (!isPlaying && bbox.top < winHeight && bbox.bottom > 0) play();
    if (isPlaying && bbox.top > winHeight) pause();
    if (isPlaying && bbox.bottom < 0) pause();
    if (!isPlaying && bbox.bottom > 0 && bbox.top < winHeight) play();
  }

  function checkViewport() {
    if (window.innerWidth < breakpoint && isPlaying) pause();
  }

  checkScroll();
  window.addEventListener('scroll', function() { requestAnimationFrame(checkScroll) });
  window.addEventListener('resize', function() { requestAnimationFrame(checkViewport) });
}

window.pjx = {
  isAnimating: false,
  navLinks: null,

  init: function(urlRoot, delegatorID, hooks) {
    var self = this;
    this.urlRoot = urlRoot;
    this.navLinks = document.querySelectorAll('.pjxNavLink');
    this.hooks = hooks || {};
    this.delegator = document.querySelector(delegatorID);

    // If delegator does not exist, bail
    if (!this.delegator) return;

    this.delegator.addEventListener('click', function(ev){
      var el = ev.target;
      while (el && !el.matches('a.pjxLink')) {
        el = el.parentNode;
        if (el.matches(delegatorID)) return;
      }
      ev.preventDefault();
      self.handleClick(el);
    });

    window.onpopstate = this.handlePopState.bind(this);
  },

  each: function(fn) {
    for (i = 0; i < this.navLinks.length; i++) {
      fn(this.navLinks[i], i);
    }
  },

  handleClick: function(el) {
    if (this.isAnimating) return;
    this.handleTransition(el.href, true)
  },

  handlePopState: function(ev) {
    if (this.isAnimating) {
      ev.preventDefault();
      return;
    }
    var direction = ev.state ? ev.state.direction : 1;
    this.handleTransition(document.location.href, false);
  },

  handleTransition: function (url, doPushState) {
    var self = this;
    var urlSplit = url.split('/');
    var slug ='/' + this.urlRoot + (urlSplit[urlSplit.indexOf(this.urlRoot) + 1] ?  '/' + urlSplit.slice(urlSplit.indexOf(this.urlRoot) + 1).join('/') : '');

    this.each(function(el) {
      el.parentElement.classList.remove('active');
      if (el.href === url) {
        el.parentElement.classList.add('active');
      }
    });
    if (self.hooks.willTransition) {
      self.hooks.willTransition(slug);
    }
    this.fetchContent(url , function(content){
      if (doPushState) self.updateHistory(slug);
      self.transition(content, slug);
    });
  },

  transition: function(content, slug) {
    this.isAnimating = true;

    var self = this;
    var parser = new DOMParser();
    var nextDoc = parser.parseFromString(content, "text/html");

    var nextBody = nextDoc.querySelector('.pjxTransitionBody');
    var currBody = document.querySelector('.pjxTransitionBody' );
    var currBodyWrapper = currBody.parentElement;

    TweenLite.to(currBody, 0.3, {
      y: 10,
      opacity: 0,
      onComplete: function () {
        currBodyWrapper.removeChild(currBody);
        currBodyWrapper.appendChild(nextBody);
        if (self.hooks.inTransition) {
          self.hooks.inTransition(slug);
        }
        TweenLite.set(nextBody, {
          opacity: 0,
          y: -10
        });
        TweenLite.to(nextBody, 0.6, {
          opacity: 1,
          y: 0,
          ease: Expo.easeOut,
          // delay: 0.125,
          onComplete: function () {
            self.isAnimating = false;
            if (self.hooks.didTransition) {
              self.hooks.didTransition(slug);
            }
          }
        });
      }
    });
  },

  updateHistory: function(slug) {
    history.pushState({}, '', slug);
  },

  fetchContent: function(url, callback) {
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4
        if (xmlhttp.status == 200) {
          callback(xmlhttp.responseText);
        }
        else if (xmlhttp.status == 400) {
          alert('There was an error 400');
        }
      }
    };

    xmlhttp.open("GET", url, true);
    xmlhttp.send();
  }
}


================================================
FILE: assets/scss/_animations.scss
================================================
@keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes crossFadeInOut {
  0%, 40%, 100% { opacity: 0;}
  50%, 90% { opacity: 1; }
}

@keyframes fadeInUpSmall {
  0% {
    opacity: 0;
    transform: scale(.667, .667) translateY(20px);
  }

  100% {
    opacity: .5;
    transform: scale(.667, .667) translateY(0);
  }
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }

  50% { opacity: 1; }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInDown {
  0% {
    opacity: 0;
    transform: translateY(-20px);
  }

  50% { opacity: 1; }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeOut {
  0% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes fadeOutUp {
  0% {
    opacity: 1;
    transform: translateY(0);
  }

  100% {
    opacity: 0;
    transform: translateY(-20px);
  }
}

@keyframes pulse {
  0% { transform: scale3d(1, 1, 1); }
  20% { transform: scale3d(1.05, 1.05, 1); }
  100% { transform: scale3d(1, 1, 1); }
}

@keyframes tiltIn {
  0% { transform: rotateX(-30deg); }
  100% { transform: rotateX(0deg); }
}

@keyframes simpleHoverY {
  0% {transform: translate3d(0, 0, 0);}
  50% {transform: translate3d(0, 10px, 0);}
  100% {transform: translate3d(0, 0);}
}

@keyframes simpleHoverX {
  0% {transform: translate3d(0, 0, 0);}
  50% {transform: translate3d(225px, 0, 0);}
  100% {transform: translate3d(0, 0);}
}

@keyframes simpleHoverXSmall {
  0% {transform: translate3d(0, 0, 0);}
  50% {transform: translate3d(50px, 0, 0);}
  100% {transform: translate3d(0, 0);}
}

@keyframes inertiaTilt {
  0% {transform: rotate(5deg);}
  15% {transform: rotate(-1deg);}
  30% {transform: rotate(1deg);}
  40% {transform: rotate(0deg);}
  50% {transform: rotate(-5deg);}
  65% {transform: rotate(1deg);}
  80% {transform: rotate(-1deg);}
  90% {transform: rotate(0deg);}
  100% {transform: rotate(5deg);}
}

@keyframes hoverY {
  0% {transform: translate(0, 0) scale(1);}
  10% {transform: translate(1px, 2px) scale(1);}
  20% {transform: translate(0, -3px) scale(1);}
  30% {transform: translate(-1px, 3px) scale(1);}
  40% {transform: translate(0, -1px) scale(1);}
  50% {transform: translate(-1px, 0) scale(1);}
  60% {transform: translate(0, -3px) scale(1);}
  70% {transform: translate(1px, 2px) scale(1);}
  80% {transform: translate(0, -3px) scale(1);}
  90% {transform: translate(-1px, 1px) scale(1);}
  100% {transform: translate(0, 0) scale(1);}
}

@keyframes figureeight {
  0% {transform: translate3d(0, 0, 0);}
  2% {transform: translate3d(1px, .5px, 0);}
  5% {transform: translate3d(2px, 1px, 0);}
  7% {transform: translate3d(3px, 1.5px, 0);}
  10% {transform: translate3d(4px, 1.8px, 0);}
  12% {transform: translate3d(5px, 2px, 0);}
  15% {transform: translate3d(6px, 1.8px, 0);}
  17% {transform: translate3d(7px, 1.5px, 0);}
  20% {transform: translate3d(8px, 1px, 0);}
  22% {transform: translate3d(8.6px, .5px, 0);}
  25% {transform: translate3d(9px, 0, 0);}
  27% {transform: translate3d(8.3px, -.5px, 0);}
  30% {transform: translate3d(8px, -1px, 0);}
  32% {transform: translate3d(7px, -1.5px, 0);}
  35% {transform: translate3d(6px, -1.8px, 0);}
  37% {transform: translate3d(5px, -2px, 0);}
  40% {transform: translate3d(4px, -1.8px, 0);}
  42% {transform: translate3d(3px, -1.5px, 0);}
  45% {transform: translate3d(2px, -1px, 0);}
  47% {transform: translate3d(1px, -.5px, 0);}
  50% {transform: translate3d(0, 0, 0);}
  52% {transform: translate3d(-1px, .5px, 0);}
  55% {transform: translate3d(-2px, 1px, 0);}
  57% {transform: translate3d(-3px, 1.5px, 0);}
  60% {transform: translate3d(-4px, 1.8px, 0);}
  62% {transform: translate3d(-5px, 2px, 0);}
  65% {transform: translate3d(-6px, 1.8px, 0);}
  67% {transform: translate3d(-7px, 1.5px, 0);}
  70% {transform: translate3d(-8px, 1px, 0);}
  72% {transform: translate3d(-8.6px, .5px, 0);}
  75% {transform: translate3d(-9px, 0, 0);}
  77% {transform: translate3d(-8.3px, -1px, 0);}
  80% {transform: translate3d(-8px, -2px, 0);}
  82% {transform: translate3d(-7px, -1.5px, 0);}
  85% {transform: translate3d(-6px, -1.8px, 0);}
  87% {transform: translate3d(-5px, -2px, 0);}
  90% {transform: translate3d(-4px, -1.8px, 0);}
  92% {transform: translate3d(-3px, -1.5px, 0);}
  95% {transform: translate3d(-2px, -1px, 0);}
  97% {transform: translate3d(-1px, -.5px, 0);}
  100% {transform: translate3d(0, 0, 0);}
}

@keyframes dotExpand {
  0% {
    transform: scale3d(.1, .1, 1);
    opacity: 1;
  }

  100% {
    transform: scale3d(2, 2, 1);
    opacity: 0;
  }
}

@keyframes glow {
  0%, 30%, 100% { opacity: 0; }
  15% { opacity: 1; }
}

@keyframes spread {
  0% {transform: scaleX(1); opacity: 1;}
  50% {transform: scaleX(.8); opacity: .5;}
  100% {transform: scaleX(1); opacity: 1;}
}

@keyframes spin {
  0% {transform: rotate(0deg);}
  100% {transform: rotate(360deg);}
}

@keyframes floatingCloud {
  0% {
    transform: scale3d(.6,.6,1);
    opacity: 0;
  }
  5% {opacity: .9}
  10% {opacity: 1}
  95% {opacity: 1}
  100% {
    transform: translate3d(150%, 100%, 0);
    opacity: 0;
  }
}

@keyframes floatingCloud-2 {
  0% {
    transform: scale3d(.2,.2,1);
    opacity: 0;
  }
  5% {opacity: .9}
  20% {opacity: 1}
  95% {opacity: 1}
  100% {
    transform: translate3d(110%, 30%, 0) scale3d(.4,.4,1);
    opacity: 0;
  }
}

@keyframes floatingCloud-3 {
  0% {
    transform: translate3d(150%, 70%, 0) scale3d(.8,.8,1);
    opacity: 0;
  }
  5% {opacity: 1}
  20% {opacity: 1}
  90% {opacity: .9}
  100% {
    transform: scale3d(.4,.4,1);
    opacity: 0;
  }
}

@keyframes floatingCloud-4 {
  0% {
    transform: scale3d(1.2,1.2,1);
    transform: translate3d(110%, 150%, 0);
    opacity: 0;
  }
  5% {opacity: 1}
  90% {opacity: 1}
  95% {opacity: .9}
  100% {
    transform: scale3d(.8,.8,1);
    opacity: 0;
  }
}

@keyframes rainDrop {
  0% {
    transform: translate3d(0, 0, 0);
    opacity: 0;
  }
  5% {opacity: .9}
  10% {opacity: 1}
  95% {opacity: 1}
  100% {
    transform: translate3d(0, 800%, 0);
    opacity: 0;
  }
}

@keyframes screenPop-1 {
  0% {
    opacity: 1;
    z-index: 0;
  }
  89% {  opacity: 1; }
  95% {
    transform: scale3d(1,1,1);
    opacity: 0;
  }
  96% {  transform: scale3d(1.1, 1.1, 1); }
  100% {
    opacity: 1;
    transform: scale3d(1,1,1);
  }
}


@keyframes screenPop-2 {
  0% { opacity: 0; }
  30% {
    transform: scale3d(1,1,1);
    opacity: 0;
  }
  31% {  transform: scale3d(1.1, 1.1, 1); }
  35% {
    transform: scale3d(1,1,1);
    opacity: 1;
  }
  69% { opacity: 1; }
  70% { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes screenPop-3 {
  0% { opacity: 0; }
  63% {
    transform: scale3d(1,1,1);
    opacity: 0;
  }
  64% {  transform: scale3d(1.1, 1.1, 1); }
  68% {
    transform: scale3d(1,1,1);
    opacity: 1;
  }
  96% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes home-app-group-iphone {
  0% { transform: rotateY(15deg) translate3d(80px, 0, 0); }
  100% { transform: rotateY(15deg) translate3d(0, 0, 0); }
}

@keyframes home-app-group-android {
  0% { transform: rotateY(15deg) translate3d(-74px, 40px, 0); }
  100% { transform: rotateY(15deg) translate3d(0, 0, 0); }
}

@keyframes home-app-iphone {
  0% { transform: translate3d(30px, -10px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes home-app-android {
  0% { transform: translate3d(10px, -4px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes carousel {
  0% {  transform: translateX(0) }
  100% {  transform: translateX(-50%) }
}

================================================
FILE: assets/scss/_fonts.scss
================================================
@import url("https://fonts.googleapis.com/css?family=Roboto+Mono");

$fontsDir: "/fonts/";
$graphikDir: $fontsDir + "graphik/";
$interDir: $fontsDir + "inter/";
$interVariableUrl: $fontsDir + "inter/Inter-variable-ASCII-subset.woff2";

@font-face {
  font-family: "Ionicons";
  src: local("Ionicons"), url($fontsDir + "ionicons.woff2") format("woff2"),
    url($fontsDir + "ionicons.woff") format("woff"),
    url($fontsDir + "ionicons.ttf") format("ttf"),
    url($fontsDir + "ionicons.eot#iefix") format("eot"),
    url($fontsDir + "ionicons.svg#Ionicons") format("svg");
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 400;
  unicode-range: U+000-5FF;
  src: local("Inter Regular"), url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-Regular.woff2") format("woff2"),
    url($interDir + "Inter-Regular.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 400;
  unicode-range: U+000-5FF;
  src: local("Inter Italic"), url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-Italic.woff2") format("woff2"),
    url($interDir + "Inter-Italic.woff") format("woff");
}

@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 500;
  unicode-range: U+000-5FF;
  src: local("Inter Medium"), url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-Medium.woff2") format("woff2"),
    url($interDir + "Inter-Medium.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 500;
  unicode-range: U+000-5FF;
  src: local("Inter Medium Italic"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-MediumItalic.woff2") format("woff2"),
    url($interDir + "Inter-MediumItalic.woff") format("woff");
}

@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 600;
  unicode-range: U+000-5FF;
  src: local("Inter SemiBold"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-SemiBold.woff2") format("woff2"),
    url($interDir + "Inter-SemiBold.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 600;
  unicode-range: U+000-5FF;
  src: local("Inter SemiBoldItalic"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-SemiBoldItalic.woff2") format("woff2"),
    url($interDir + "Inter-SemiBoldItalic.woff") format("woff");
}

@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 700;
  unicode-range: U+000-5FF;
  src: local("Inter Bold"), url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-Bold.woff2") format("woff2"),
    url($interDir + "Inter-Bold.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 700;
  unicode-range: U+000-5FF;
  src: local("Inter BoldItalic"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-BoldItalic.woff2") format("woff2"),
    url($interDir + "Inter-BoldItalic.woff") format("woff");
}

@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 800;
  unicode-range: U+000-5FF;
  src: local("Inter ExtraBold"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-ExtraBold.woff2") format("woff2"),
    url($interDir + "Inter-ExtraBold.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 800;
  unicode-range: U+000-5FF;
  src: local("Inter ExtraBoldItalic"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-ExtraBoldItalic.woff2") format("woff2"),
    url($interDir + "Inter-ExtraBoldItalic.woff") format("woff");
}

@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: normal;
  font-weight: 900;
  unicode-range: U+000-5FF;
  src: local("Inter Black"), url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-Black.woff2") format("woff2"),
    url($interDir + "Inter-Black.woff") format("woff");
}
@font-face {
  font-family: "Inter";
  font-display: swap;
  font-style: italic;
  font-weight: 900;
  unicode-range: U+000-5FF;
  src: local("Inter BlackItalic"),
    url($interVariableUrl) format("woff2-variations"),
    url($interDir + "Inter-BlackItalic.woff2") format("woff2"),
    url($interDir + "Inter-BlackItalic.woff") format("woff");
}


================================================
FILE: assets/scss/_general.scss
================================================
body {
  font-family: $font-family-default;
  position: relative;
  overflow-x: hidden;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'calt' on;

  @media (max-width: $screen-xs-max) {
    padding-top: 50px;
    width: 100%;
    min-width: 100%;
    background: #fff;
  }

  .docs {
    background: linear-gradient(90deg, $whiteish, $whiteish ($sidenav-width),
      white ($sidenav-width), white 100%);
  }

  @media (max-width: $screen-sm-min) {
    &#page-pricing-table {
      padding-top: 0px;
    }
  }

  &.no-scroll {
    overflow: hidden;
  }
}

main {
  overflow: hidden;
}

#components-index ul.nav > li > a {
  background-color: #F9FAFB;
}

.arrow {
  letter-spacing: 0;
  white-space: pre;
}

.improve-docs {
  position: absolute;
  right: 3.5em;
  top: 20px;
}

.improve-v2-docs {
  display: block;
  float: right;
  margin-top: -7em;
}

.component-doc-demo {
  display: block;
  float: right;
  margin-top: -3.1em;
  line-height: 25px;


  .component-doc-demo-mobile {
    margin-right: 6px;
  }
}

.component-doc-demo-mobile {
  cursor: pointer;
  padding: 3px 12px;
  border-radius: 4px;
  font-size: 15px;
  font-weight: 500;
  color: white;
  background-color: $blue;
  display: none;
  line-height: inherit;
}

.docs-container {
  .side-nav {
    width: $sidenav-width;
    // padding-top: 73px;
  }

  > main {
    margin-left: $sidenav-width;
  }

  > aside {
    width: $platform-preview-width;

    + main {
      margin-right: $platform-preview-width - 60px;
      min-height: 777px;
    }
  }

  @media (max-width: 1100px) {
    aside {
      display: none;

      & + main {
        margin-right: 0;
      }
    }

    .component-doc-demo-mobile {
      display: inline-block;
    }
  }

  @media (max-width: $screen-xs-max) {
    background-color: #fff;

    main {
      margin-left: 0;
      padding: 30px 20px 100px;
    }

    #side-nav {
      z-index: 1;
      top: -4px;
      transform: translateX(-$sidenav-width);
      transition: transform .3s ease;

      &.shown {
        transform: translateX(0);
        box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
        transition: transform .3s ease;
      }
    }
  }
}

// sticky footer
html {
  position: relative;
  height: 100%;
}

body {
  min-height: 100%;
  margin: 0 0 -130px; // bottom = footer height

  @media (max-width: $screen-xs-max) {
    // margin-top: 50px;
  }
}

a {
  color: $blue;
  transition: .3s color;
}

.footer-links {
  position: absolute;
  left: $sidenav-width + 40px;
  bottom: 0;
  height: 130px;
  right: 40px;
  @media (max-width: $screen-xs-max) {
    left: 40px;
  }
}

a.footer-link {
  color: black;
  font-size: 18px;
  text-decoration: none;
  font-weight: 500;
  position: absolute;
  padding-top: 10px;
  right: 40px;
  text-align: right;
  transition: color .2s;

  &.prev {
    right: auto;
    left: 40px;
    text-align: left;

    @media (max-width: 500px) {
      display: none;
    }

    &::before {
      content: 'Previous';
    }

    &::after {
      right: auto;
      left: -25px;
      content: '\f117';
    }
  }

  &:hover {
    color: $blue;
  }

  &::before {
    display: block;
    content: 'Next';
    font-size: 13px;
    color: $grey;
    font-weight: 400;
  }

  &::after {
    content: '\f119';
    font-family: Ionicons;
    display: block;
    position: absolute;
    right: -25px;
    font-size: 32px;
    font-weight: 600;
    bottom: -10px;
  }
}

.platform-preview {
  position: absolute;
  right: 0;
  text-align: center;
  right: -20px;
  z-index: 1;
  background-color: white;

  &.fixey {
    position: fixed;
    top: 0;
  }

  > a {
    position: relative;
    top: -25px;
    font-size: 15px;

    &, &:hover, &:active, &:focus {
      text-decoration: none;
    }
  }
}

.platform-preview .platform-toggle, .docs-container .sass-platform-toggle {

  a {
    cursor: pointer;
    display: inline-block;
    padding: 4px 16px;
    border-radius: 16px;
    color: $grey;
    font-size: 14px;
    font-weight: 500;
    -webkit-font-smoothing: antialiased;
    transition: .2s color, .2s background-color;

    &.active,
    &.active:hover {
      background-color: $blue;
      color: white;
    }

    &:hover {
      color: $blue;
      text-decoration: none;
    }
  }
}

.platform-preview  .platform-toggle {
  padding: 8px 10px 4px;
}

.docs-container .sass-platform-toggle {
  padding-top: 0px 10px 4px;
  margin-bottom: 10px;
  float: right;
}

#sass-variable-header {
  margin-bottom: 0px;
  padding-bottom: 0px;
}

#sass-variables {
  margin-bottom: 0px;
  position: relative;
  bottom: 15px;

  .table.param-table {
    td,
    th {
      white-space: nowrap;

      &:last-child, &:nth-last-child(2) {
        white-space: normal;
      }

      &:nth-last-child(2) {
        width: 10%;
      }
    }
  }
}

@media (max-width: 1300px) and (min-width: $screen-xs) {
  #sass-variables {
    bottom: -10px;

    .table.param-table {
      td,
      th {
        white-space: normal;

        &:nth-last-child(2) {
          width: auto;
        }
      }
    }
  }
}

@media (max-width: $screen-xs) {
  #sass-variables {
    bottom: -25px;

    .table.param-table {
      tr,td {
        white-space: normal;
      }
    }
  }
}

#demo-device-ios {
  width: $platform-preview-width;
  height: 800px;
  background: center top no-repeat url('/img/devices-sprite.jpg');
  background-size: $platform-preview-width;
  margin: 0 auto;

  iframe {
    margin-top: 85px;
    width: 320px;
    height: 568px;
  }
}

#demo-device-android {
  @extend #demo-device-ios;

  background-position: center center;

  iframe {
    margin-top: 64px;
    width: 360px;
    height: 590px;
  }
}

#demo-device-windows {
  @extend #demo-device-ios;

  background-position: center bottom;

  iframe {
    margin-top: 72px;
    width: 350px;
    height: 622px;
    background: white;
  }
}

li.nav-item-hidden {
  position: absolute;
  top: -9999px;
  left: -9999px;
}

ul.docs-content {
  list-style: none;
  line-height: 26px;
  padding-left: 16px;

  li.docs-content-header {
    font-weight: 400;
    color: #B9BEC5;
  }

}

ul.docs-example {
  list-style: none;
  display: block;
  margin: 3em 0;
  padding: 0;
  border-radius: 4px;

  li {
    display: inline-block;
    border: 1px solid #e6e9ee;
    width: 32%;
    margin: 0;
    padding: 8% 0;

    @media screen and (max-width: $screen-xs-max) {
      display: block;
      width: 100%;
      margin-bottom: 1em;
    }

    &:not(:first-child) {
      margin-left: 1%;
    }
  }

  li img {
    display: block;
    margin: 0 auto;
    width: 55.7%;
  }
}

.highlight .err {
  background-color: #fff;
}

.param-table {
  td p {
    margin: 0;
    line-height: 22px;
  }

  td ul {
    list-style: none;
    margin-right: -7px;
    margin-left: -92px;
    border: 1px solid #e6e9ee;
    border-left: 0;
    border-top: 0;
    padding: 10px 17px;
    border-bottom-right-radius: 0.5em;

    li {
      padding: 0;
      margin: 17px 0;
    }
  }
}

.return-value {
  b {
    &::before {
      font-family: 'Ionicons';
      -webkit-font-smoothing: antialiased;
      content: '\f203';
      font-size: 16px;
      font-weight: 800;
      position: relative;
      padding-right: 5px;
      top: 2px;
    }
  }
}

.docs-container {
  h2, h3 {
    a:not([role='button']) {
      color: #26292e !important;

      &:hover {
        color: #26292e !important;
      }
    }
  }
}

.hero {
  position: relative;
}

.faq-section {
  margin: 80px auto;
}

@media (max-width: $screen-sm-max) and (min-width: $screen-sm-min){
  .hide-sm {
    display: none !important;
  }
}

.native-docs a{
  margin-top: 0 !important;
}

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
  display: none !important;
}

#hubspot-messages-iframe-container { z-index: 1 } //so hubspot messages button doesn't cover mpobile nav, modals, etc.


================================================
FILE: assets/scss/_hljs.scss
================================================
pre {
  background-color: white;
}

.hljs {
  display: block;
  padding: 0.5em;
  background: #ffffff;
  overflow-x: auto;
  word-wrap: normal;
  white-space: pre;
  color: #314361;
}


// Done

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc,
.hljs-comment * {
  color: #999988;
  font-style: italic;
}


// Done

.hljs-keyword,
.method,
.hljs-list .hljs-title,
.clojure .hljs-built_in,
.nginx .hljs-title,
.hljs-tag .hljs-title,
.setting .hljs-value,
.hljs-winutils,
.tex .hljs-command,
.http .hljs-title,
.hljs-request,
.hljs-status {
  color: #4a86ef;
  font-weight: bold;
}

.hljs-envvar,
.tex .hljs-special {
  color: #660;
}


// Done

.hljs-string,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.hljs-regexp,
.coffeescript .hljs-attribute {
  color: #f2576d;
}

.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-decorator,
.ini .hljs-title,
.hljs-shebang,
.hljs-prompt,
.hljs-hexcolor,
.hljs-rules .hljs-value,
.css .hljs-value .hljs-number,
.hljs-literal,
.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-number,
.css .hljs-function,
.clojure .hljs-attribute {
  color: #00b07d;
}

.hljs-class .hljs-title,
.haskell .hljs-type,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-typename,
.hljs-tag .hljs-attribute,
.hljs-doctype,
.hljs-class .hljs-id,
.hljs-built_in,
.setting,
.hljs-params,
.hljs-variable,
.clojure .hljs-title {
  color: #3dafd4;
}

.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.hljs-subst {
  color: #000;
}

.css .hljs-class,
.css .hljs-id {
  color: #9B703F;
}

.hljs-value .hljs-important {
  color: #ff7700;
  font-weight: bold;
}

.hljs-rules .hljs-keyword {
  color: #C5AF75;
}

.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #9B859D;
}

.hljs-preprocessor,
.hljs-preprocessor *,
.hljs-pragma {
  color: #444;
}

.tex .hljs-formula {
  background-color: #EEE;
  font-style: italic;
}

.diff .hljs-header,
.hljs-chunk {
  color: #808080;
  font-weight: bold;
}

.diff .hljs-change {
  background-color: #BCCFF9;
}

.hljs-addition {
  background-color: #BAEEBA;
}

.hljs-deletion {
  background-color: #FFC8BD;
}

.hljs-comment .hljs-yardoctag {
  font-weight: bold;
}


================================================
FILE: assets/scss/_mixins.scss
================================================
// mixins
@mixin box {
  background-color: #fff;
  border-radius: 6px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.1),
              0 2px 8px  rgba(0,0,0,0.1);
}

@mixin flex-list {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  padding-left: 0;

  li {
    margin-right: 1em;
    list-style: none;
  }
}

@mixin sprite($items, $height: 64, $selector: '::before') {
  @each $icon in $items {
    $i: index($items, $icon);

    &.#{$icon}#{$selector} {
      background-position: 0 #{($height * ($i - 1) * -1)}px;
    }
  }
}

@mixin hoverSprite(
  $items, $height: 64, $selector1: '::before', $selector2: '::after'
) {
  &#{$selector1}, 
  &#{$selector2} {
    transition: .2s opacity;
  }

  &#{$selector2} {
    opacity: 0;
  }

  &:hover {
    &#{$selector1} {
      // opacity: 0;
    }

    &#{$selector2} {
      opacity: 1;
    }
  }

  @each $icon in $items {
    $i: index($items, $icon);

    &.#{$icon}#{$selector1} {
      background-position: 0 #{($height * ($i - 1) * -2)}px;
    }

    &.#{$icon}#{$selector2} {
      background-position: 0 #{($height * ($i - 1) * -2) - $height}px;
    }
  }
}

================================================
FILE: assets/scss/_theme.scss
================================================
:root {
  --c-white: #ffffff;
  --c-black: #000000;

  --c-blue-0: #F0F6FF;
  --c-blue-100: #E3EDFF;
  --c-blue-200: #CDDFFF;
  --c-blue-300: #B2CEFF;
  --c-blue-400: #97BDFF;
  --c-blue-500: #7CABFF;
  --c-blue-600: #639CFF;
  --c-blue-700: #4D8DFF;
  --c-blue-800: #3880FF;

  --c-grey-100: #F9F9F9;
  --c-grey-200: #F3F3F3;
  --c-grey-300: #EBEBEB;
  --c-grey-400: #E1E1E1;
  --c-grey-500: #D8D8D8;
  --c-grey-600: #C5C5C5;
  --c-grey-700: #AEAEAE;
  --c-grey-800: #8C8C8C;
  --c-grey-900: #727272;
  --c-grey-1000: #555555;
  --c-grey-1100: #444444;
  --c-grey-1200: #222222;

  --c-carbon-100: #778391;
  --c-carbon-200: #616E7E;
  --c-carbon-300: #4E5B6A;
  --c-carbon-400: #414D5C;
  --c-carbon-500: #2F3A48;
  --c-carbon-600: #27323F;
  --c-carbon-700: #1A232F;
  --c-carbon-800: #0E151F;
  --c-carbon-900: #020814;

  --c-indigo-50: #FBFBFD;
  --c-indigo-400: #CED6E0;

  --c-purple-0: #F4F4FF;
  --c-purple-100: #E9EAFF;
  --c-purple-200: #D0D2FF;
  --c-purple-300: #B6B9F9;
  --c-purple-400: #9A99FC;
  --c-purple-500: #8582FB;
  --c-purple-600: #786DF9;
  --c-purple-700: #6E5BFD;
  --c-purple-800: #6030FF;

  --c-pink-0: #FFF1FB;
  --c-pink-200: #FFE7F8;
  --c-pink-400: #FBC4DB;
  --c-pink-600: #F37BAB;
  --c-pink-800: #E54385;

  --c-red-0: #FFE3E3;
  --c-red-200: #FFCDCD;
  --c-red-400: #F88D8D;
  --c-red-600: #F45454;
  --c-red-800: #E13535;
}

================================================
FILE: assets/scss/_typography.scss
================================================
h1 {
  font-weight: 800;
  letter-spacing: -0.04em;
}

h2,
h3,
h4,
h5,
h6 {
  letter-spacing: -0.02em;
  font-weight: 700;
}

a {
  transition: color 0.2s;

  &:hover {
    text-decoration: none;
  }
}

p {
  &.lg {
    font-size: 18px;
    font-weight: 400;
    color: $darkish-grey;

    &.strong {
      font-weight: 500;
    }

    &.light {
      color: $darkish-grey;
    }
  }

  &.sm {
    font-size: 13px;
  }

  &.xs {
    font-size: 11px;
  }
}

.subheading {
  color: #888;
  font-size: 15px;
}


================================================
FILE: assets/scss/_vars.scss
================================================
$font-family-inter: "Inter", "Inter UI", Helvetica, Arial, sans-serif;
$font-family-system: apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial,
  sans-serif;

$font-family-monospace: "SF Mono", "Roboto Mono", Menlo, monospace;
$font-family-serif: "Adobe Caslon", Georgia, Times, "Times New Roman", serif;

$font-family-default: $font-family-inter;

$blue: #4a8bfc;
$blue-800: #4d8dff;
$light-blue: #529eff;
$green: #00ceab;
$orange: #fcb52c;
$purple: #7580f4;
$red: #f8556c;
$navy: #104784;

$whiteish: #f9fafb;
$lighter-grey: #ebeef2;
$light-grey: #e6e9ee;
$lightish-grey: #a0a5b0;
$grey: #9da5b3;
$darkish-grey: #898989;
$dark-grey: #576070;
$blackish: #4c555a;
$blacker: #24282e;

$sidenav-width: 230px;
$platform-preview-width: 467px;

// bootstrap overrides
$navbar-default-bg: $blue;
$navbar-default-border: $blue;
$navbar-default-brand-color: rgba(white, 0.8);
$navbar-default-link-color: rgba(white, 0.8);
$navbar-default-brand-hover-color: #fff;
$navbar-default-link-hover-color: #fff;
$navbar-default-link-active-color: #fff;
$navbar-default-link-active-bg: transparent;

$grid-gutter-width: 30px;
$screen-lg: 1104px;
$container-large-desktop: (1024px + $grid-gutter-width);

// $navbar-default-brand-hover-bg;
// $navbar-default-link-hover-bg;
// $navbar-default-link-disabled-color;
// $navbar-default-link-disabled-bg;
// $navbar-default-toggle-border-color;
// $navbar-default-toggle-hover-bg;
// $navbar-default-toggle-icon-bar-bg;

// bootstrap variables and mixins
@import "bootstrap-sass/assets/stylesheets/bootstrap/variables";
@import "bootstrap-sass/assets/stylesheets/bootstrap/mixins";


================================================
FILE: assets/scss/components/_alert.scss
================================================
.alert,
.docs-container main .alert {
  border-radius: 4px;
  display: inline-block;
  padding: 20px 28px;
  position: relative;
  width: 100%;
  font-weight: 400;
  margin: 0 0 20px;
  background: rgba(253,200,69,.1);
  border: 1px solid rgba(253,200,69,.3);
  color: #353940;
  font-size: 14px;

  /*
  &::before {
    content: '\f137';
    font-family: 'Ionicons';
    position: absolute;
    left: 25px;
    font-size: 30px;
    font-weight: 300;
    color: rgba(255,255,255,.9);
  }
  */

  a,
  a:not(.btn) {
    color: rgba(255,255,255, 1);
    opacity: 1;

    &:hover {
      color: #fff;
    }
  }

  &-success {
    background-color: rgba($green, 0.1);
    border-color: rgba($green, 0.3);
  }
}


================================================
FILE: assets/scss/components/_banner.scss
================================================
.banner {
  text-align: center;

  &--hero {
    .container {
      max-width: 700px;
    }

    h1 {
      margin-top: 2em;
      font-size: 36px;
      margin-bottom: 1.4em;
    }

    p {
      font-size: 16px;
      line-height: 1.8em;
    }
  }
}


================================================
FILE: assets/scss/components/_bar-chart.scss
================================================
bar-chart,
.survey-layout main svg {
  width: 100%;
  display: block;
  margin-bottom: 48px;

  > svg {
    width: 100%;
  }

  .tick {
    line {
      opacity: 0;
    }

    tspan {
      font-size: 12px;
      font-weight: 500;
      -webkit-font-smoothing: subpixel-antialiased;
    }
  }

  .c3-text {
    font-size: 11px;
    font-weight: 500;
    -webkit-font-smoothing: subpixel-antialiased;
  }

  .domain {
    opacity: 0;
  } 

  .c3-grid line {
    stroke: #eee;
    stroke-dasharray: 0;
  }

  .c3-bar._expanded_ {
    fill-opacity: 1;
  }
}



================================================
FILE: assets/scss/components/_bar.scss
================================================
.bar {
  &.navy {
    background: linear-gradient(to right, #1d2534 0%,#243452 100%);

    h1,
    h2,
    h3,
    h4,
    h5 {
      color: white;
    }

    p {
      color: #a2b5d6;
    }
  }

  h1,
  h2,
  h3,
  h4,
  h5 {
    font-weight: 600;
  }

  p {
    margin-bottom: 27px;
  }

  .btn {
    padding: 20px 21px 15px;
  }

  .hero {
    padding: 95px 0 101px;
  }
}


================================================
FILE: assets/scss/components/_buttons.scss
================================================
.btn,
.navbar .btn {
  font-weight: 500;
  border-radius: 4px;
  line-height: 1.4em;
  padding: 14px 33px 14px;
  margin-right: 10px;
  transition: all 0.3s ease;
  font-size: 18px;
  border: 0px solid rgba(0, 0, 0, 0);
  color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.12);
  background: #3880ff;
  letter-spacing: -0.01em;

  &:last-child {
    margin-right: 0;
  }

  &:hover,
  &:focus {
    box-shadow: 0 7px 14px rgba(0, 0, 0, 0.12), 0 3px 6px rgba(0, 0, 0, 0.08);
    background: #4d8dfd;
    color: #fff;
    outline: none;
  }

  &:active,
  &:active:focus,
  &:active:hover {
    box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.2);
    background: lighten($blue, 3);
    outline: none;
  }

  &.outline {
    border-color: $blue;
    background: transparent;
    color: $blue;
    border-width: 1px;

    &:hover,
    &:focus {
      border-color: lighten($blue, 3);
      background: rgba($blue, 0.05);
    }

    &.faded {
      border: 1px solid rgba(54, 74, 110, 0.5);
      color: #a1abbc;

      &:hover,
      &:focus {
        color: white;
        border-color: lighten(#a1abbc, 3);
        background: rgba(#a1abbc, 0.05);
      }
    }
  }

  &.btn-primary,
  &.light-blue {
    background: $light-blue;

    &:hover,
    &:focus,
    &:active {
      background: lighten($light-blue, 3);
    }

    &.outline {
      border-color: $light-blue;
      color: $light-blue;
    }
  }

  &.red {
    background: $red;

    &:hover,
    &:focus,
    &:active {
      background: #ff6177;
    }
  }

  &.light {
    background: #eef6fe;
    color: $blue;

    &:hover,
    &:focus,
    &:active {
      background: darken(#eef6fe, 2);
    }
  }

  &.navy {
    background: #0039a2;

    &:hover,
    &:focus,
    &:active {
      background: darken(#0039a2, 10);
    }
  }

  &.green {
    background: $green;

    &:hover,
    &:focus,
    &:active,
    &:active:focus,
    &:active:hover {
      background: lighten($green, 5);
    }
  }

  &.white {
    background: white;
    // box-shadow: 0 1px 4px rgba(0, 0, 0, .1);
    color: $blue;

    &:hover,
    &:focus,
    &:active {
      color: $blue;
      // box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
      color: lighten($blue, 5);
    }

    &:active,
    &:active:focus,
    &:active:hover {
      background: white;
      // box-shadow: inset 0 1px 4px rgba(0, 0, 0, .2);
    }

    &.outline {
      color: $blue;
      background: white;

      &:hover,
      &:focus,
      &:active {
        color: darken($blue, 10);
        background: white;
      }
    }
  }

  &.grey {
    background: $grey;

    &:hover,
    &:focus,
    &:active {
      background: $grey;
    }

    &.outline {
      color: $grey;
      background: transparent;

      &:hover,
      &:focus,
      &:active,
      &:active:focus,
      &:active:hover {
        color: darken($grey, 10);
        background: transparent;
      }
    }
  }

  &.light-purple {
    background: rgba(207, 212, 254, 0.35);
    color: #7283ff;
    box-shadow: none;

    &:hover,
    &:focus,
    &:active {
      background: rgba(207, 212, 254, 0.35);
    }

    &.outline {
      color: rgba(207, 212, 254, 0.35);
      background: transparent;

      &:hover,
      &:focus,
      &:active,
      &:active:focus,
      &:active:hover {
        color: rgba(darken(#cfd4fe, 10), 0.35);
        background: transparent;
      }
    }
  }

  &.dark {
    color: white;
  }

  &.dark-pink {
    background: #212f45;
    // box-shadow: 0 1px 4px rgba(0, 0, 0, .1);
    color: #ff567b;

    &:hover,
    &:focus,
    &:active,
    &:active:focus,
    &:active:hover {
      color: #ff567b;
      background: lighten(#212f45, 5);
    }
  }

  &.orange {
    background-color: #ffa800;

    &:hover {
      background-color: #feb323;
    }
  }

  &.sm {
    font-weight: 600;
    border-radius: 6px;
    letter-spacing: 0;
    text-transform: none;
    padding: 12px 19px 10px;
  }

  &.rounded {
    border-radius: 2.5em;
    letter-spacing: 0;
    text-transform: none;
    font-weight: 500;
    font-size: 16px;
    padding: 19px 25px 18px;
    line-height: 1em;

    &.sm {
      padding: 14px 24px 14px;
      font-size: 14px;
      font-weight: 600;
    }
  }

  &.uppercase {
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }

  &.micro {
    font-family: $font-family-inter;
    padding: 4px 8px;
    font-size: 10px;
    letter-spacing: 0;
    font-weight: 700;
    text-transform: uppercase;
    background: #fff;
    border: 1px solid rgba(#3880ff, 0.3);
    color: #3880ff;
    box-shadow: none;

    &:hover {
      border-color: #3880ff;
    }

    &:active,
    &:active:focus,
    &:active:hover {
      background: #f2f8ff;
      border-color: lighten(#3880ff, 15%);
      box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.1);
    }
  }
}


================================================
FILE: assets/scss/components/_checkmark-list.scss
================================================
.checkmark-list {
  &--large {
    max-width: 380px;

    li {
      line-height: 26px;
      font-size: 16px;
      letter-spacing: -0.01em;
      color: #616E7E;
      display: flex;
    }

    li + li {
      margin-top: 20px;
    }

    i {
      margin-right: 6px;
      position: relative;
      width: 24px;
      height: 24px;
      flex: 0 0 24px;
      display: flex;
      align-items: center;
      justify-content: center;
      border-radius: 100%;
      background-color: #73849A;;
      z-index: -1;
      margin-right: 16px;
      transform: translateY(2px);
    }

    ion-icon {
      font-size: 16px;
      color: #fff;
    }

    hgroup {
      h5 {
        margin-top: -2px;
        margin-bottom: 0;
        line-height: 33px;
        font-size: 16px;
        letter-spacing: -0.01em;
        color: #3C536F;
        font-weight: 600;
      }
      p {
        line-height: 23px;
        font-size: 14px;
        letter-spacing: -0.01em;
        color: #92A1B3;
      }
    }
  }

  &--small {
    margin: 0;
    padding: 0;

    li {
      line-height: 13px;
      font-size: 12px;
      color: #5B708B;
      display: flex;
    }

    ion-icon {
      font-size: 15px;
      color: #92A1B3;
      flex: 0 0 15px;
      margin-right: 6px;
      transform: translateY(4px);
    }
  }
}


================================================
FILE: assets/scss/components/_cta.scss
================================================
.transparent .cta {
  margin-top: -78px;
  padding-top: 78px;
}

.cta {
  color: white;
  background: $blue;

  &.gradient {
    background: linear-gradient(45deg, rgba(52,126,255,1) 0%,
                                       rgba(41,144,255,1) 50%,
                                       rgba(34,133,255,1) 50%,
                                       rgba(30,161,255,1) 100%);
  }

  &.cta--transparent {
    background: transparent;
    color: #020814;

    hgroup p {
      color: rgba(#27323F, .9);
    }
  }

  .center {
    text-align: center;
  }

  hgroup {
    padding-top: 33px;
    padding-bottom: 94px;
    max-width: 800px;
    min-height: 218px;

    h1 {
      font-size: 28px;
      margin-bottom: 12px;
      letter-spacing: -.03em;
    }

    h4 {
      font-size: 20px;
      color: rgba(255, 255, 255, .8);
      letter-spacing: -.03em;
      line-height: 1.6em;
      margin-top: -5px;
    }

    p {
      color: rgba(white, .7);
      font-size: 18px;
      font-weight: 400;
    }

    a {
      color: rgba(white, .9);

      &:hover {
        color: white;
        text-decoration: none;
      }
    }

    small {
      a {
        font-weight: 600;
      }
    }
  }

  .tabs {
    background: #f6f7fa;

    .container {
      flex-wrap: wrap;
      justify-content: center;
      list-style: none;
      margin-bottom: 0;
      text-align: center;
    }

    li {
      max-width: 360px;
      margin-left: 43px;
      text-align: left;
      display: inline-block;

      &:first-child {
        margin-left: 0;
      }


      @media (max-width: 991px) {
        margin-left: 0;
        display: block;
        margin: 0 auto;

        &:first-child {
          margin-left: auto;
        }
      }
    }

    h3 {
      font-size: 16px;
      color: #272a2f;
      margin-bottom: 5px;
      margin-top: 0;
      position: relative;
    }

    p {
      font-size: 14px;
      color: #727a87;
      position: relative;
      margin-bottom: 0;
    }

    a {
      position: relative;
      display: block;
      padding: 32px 0 28px 85px;
      z-index: 1;
      cursor: pointer;
      user-select: none;

      &::before {
        position: absolute;
        content: '';
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        transition: .3s box-shadow, .3s transform, .3s background, .3s border-radius;
      }

      &:hover,
      &:active,
      &:focus {
        text-decoration: none;

        &::before {
          background: white;
          border-radius: 4px;
          box-shadow: 0 0 4px rgba(0, 0, 0, .05), 0 6px 10px rgba(0, 0, 0, .08);
          transform: scale(1.1, 1.1);
        }

        &::after {
          opacity: 1;
        }
      }

      &.active {
        &::before {
          background: white;
          border-radius: 4px;
          box-shadow: 0 0 4px rgba(0, 0, 0, .05), 0 6px 10px rgba(0, 0, 0, .08);
          transform: scale(1.2, 1.2);
        }

        &::after {
          opacity: 1;
        }
      }

      &::after {
        background: url('/img/getting-started/getting-started-toggle-icons.png') no-repeat 0 0;
        background-size: 70px;
        width: 70px;
        height: 70px;
        content: '';
        left: 5px;
        top: 20px;
        display: block;
        position: absolute;
        opacity: .7;
        transition: .3s opacity;
      }

      &.creator::after {
        background-position: 0 -140px;
      }
    }
  }

  .alert {
    color: #ffeed6;
    font-size: 14px;
    font-weight: 500;
    border-radius: 0;
    margin-bottom: 0;
    text-align: center;
    padding-top: 10px;
    padding-bottom: 10px;

    &::before {
      position: relative;
      font-size: 20px;
      line-height: 14px;
      left: 0;
      top: 2px;
      margin-right: 5px;
      content: "\f17e";
    }

    a {
      color: #ffffff;
      font-weight: 600;

      &:hover {
        text-decoration: none;
        color: rgba(white, .8);
      }
    }
  }
}


================================================
FILE: assets/scss/components/_customer-callout.scss
================================================
.customer-callout {
  background: linear-gradient(180deg, #f9fafb 0%, #ffffff 100%);
  margin-top: 120px;
  margin-bottom: 140px;
  padding-top: 140px;

  @media (max-width: $screen-sm) {
    margin-top: 80px;
    margin-bottom: 80px;
    padding-top: 68px;
  }

  hgroup {
    text-align: center;

    h3 {
      font-size: 34px;
      line-height: 40px;
      text-align: center;
      letter-spacing: -0.02em;
      color: #1a232f;
    }

    p {
      font-size: 20px;
      line-height: 33px;
      text-align: center;
      letter-spacing: -0.02em;
      color: #5b708b;
      max-width: 860px;
      margin-left: auto;
      margin-right: auto;
    }
  }

  &__logos {
    display: flex;
    margin: 26px auto 0;
    padding: 0;
    justify-content: space-between;
    max-width: 780px;
    width: 100%;

    li {
      background: url("/img/customer-logos.jpg");
      background-size: 428px 46px;
      background-repeat: no-repeat;
      display: block;
      height: 46px;
    }

    @media (max-width: $screen-sm) {
      justify-content: center;
      flex-wrap: wrap;
      max-width: 460px;

      li {
        margin: 20px;
      }
    }
  }

  .mastercard {
    width: 58px;
  }
  .nationwide {
    background-position: -58px 0;
    width: 33px;
  }
  .uniqlo {
    background-position: -91px 0;
    width: 65px;
  }
  .ibm {
    background-position: -156px 0;
    width: 64px;
  }
  .ing {
    background-position: -222px 0;
    width: 103px;
  }
  .sap {
    background-position: -326px 0;
    width: 56px;
  }
  .nasa {
    background-position: -380px 0;
    width: 50px;
  }
}


================================================
FILE: assets/scss/components/_docs_content.scss
================================================
.page-pro-docs {
  .docs-container {
    main h2 {
      padding-top: 0.5em;
    }
    main p {
      margin-top: 0.7em;
      margin-bottom: 0.7em;
    }
  }

  .side-nav > ul.nested-menu > li > ul > li > a {
    margin-top: 15px;
  }
}

.docs-container {
  min-height: 100%;

  .fixed-header {
    position: fixed;
    left: 230px;
    top: 0px;
    width: 100%;
    border-bottom: 1px solid $light-grey;
    background-color: white;
    padding: 0px 38px;
    overflow: hidden;
    transform: translate3d(0, 0, 0);

    > hgroup {
      height: 74px;
      line-height: 74px;

      @media (max-width: $screen-xs-max) {
        height: 46px;
        line-height: 46px;
      }

      > * {
        display: inline-block;
        margin: 0px;
        line-height: inherit;
        vertical-align: top;
      }

      h3 + h4 {
        position: relative;
        height: 100%;
        margin-left: 31px;
        opacity: 1;
        transition: opacity 0.4s;

        &.not-shown {
          opacity: 0;
        }

        &:after {
          content: '';
          position: absolute;
          left: -24px;
          top: calc(50% - 5px);
          width: 10px;
          height: 10px;
          transform: rotate(45deg);
          border-right: 2px solid;
          border-top: 2px solid;
          border-color: #333333;
        }

        > nobr {
          position: absolute;
          transition: transform 0.3s, opacity 0.3s;

          &.top {
            transform: translateY(-28px);
            opacity: 0;
          }

          &.middle, &.top.middle, &.bottom.middle {
            transform: translateY(2px);
            opacity: 1;
          }

          &.bottom {
            transform: translateY(32px);
            opacity: 0;
          }

          &.no-transition {
            transition-duration: 0s, 0s;
          }
        }
      }
    }
  }


  @media (max-width: $screen-xs-max) {
    .fixed-header {
      left: 0px;
    }
  }

  main {
    padding: 50px 40px 100px;

    h1,
    h2,
    h3,
    h4,
    h5 {
      color: $blacker;
      line-height: 1.4em;
      margin: 2em 0 1em;
      font-size: 26px;
      font-weight: 700;
      letter-spacing: -0.01em;
      // position: relative;

      &:first-child {
        margin-top: 0;
      }

      a.anchor {
        &::before {
          content: '\f22a';
          font-family: 'Ionicons';
          margin-left: -15px;
          margin-right: 5px;
          font-size: 14px;
          color: $light-grey;
          transition: .3s color;
        }

        &:hover::before,
        &:active::before {
          color: rgba($blue, .6);
        }
      }
    }

    h1 {
      margin-bottom: 0;

      a.anchor::before {
        margin-left: -23px;
      }
    }

    h2 {
      padding: 2em 0 0;
      font-size: 24px;

      &.section-header {
        border-top: 1px solid #F0F3F7;
        margin-top: 5.6em;
      }
    }

    h3 {
      margin: 3.2em 0 0;
      font-size: 18px;

      &.no-para {
        margin-bottom: 1em;
      }
    }

    h4 {
      font-size: 16px;
    }

    h5 {
      font-size: 14px;
    }

    h6 {
      font-size: 12px;
    }

    p {
      coor: #3a3f47;
      line-height: 2.1em;
      margin: 1.2em 0 1.6em;
      font-weight: 400;
      font-size: 15px;
    }

    pre {
      border: 1px solid $light-grey;
      background: white;
      padding: 16px;
      line-height: 24px;
    }

    a:not(.btn) {
      color: $blue;
      text-decoration: none;
      transition: .2s color;

      &:hover {
        color: lighten($blue, 15);
      }
    }

    table {
      width: 100%;
    }

    td,
    th {
      white-space: nowrap;

      &:last-child {
        white-space: normal;
        width: 99%;
      }
    }

    b,
    strong {
      font-weight: 500;
      color: #26292e;
    }

    .fixed-width {
      font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
    }

    .nav {
      a {
        padding-top: 5px;
        padding-bottom: 5px;
      }
    }

    blockquote {
      padding: 0 15px;
      margin: 40px 0;
      font-size: 16px;
      border-left: 4px solid #eeeeee;
    }

    img.section-header {
      width: 100%;
      margin: 50px 0;
      max-width: 1037px;
      display: block;
    }

    .beta {
      background: $blue;
      color: white;
      font-weight: 700;
      font-size: 10px;
      padding: 0 2px;
      border-radius: 3px;
      position: relative;
      top: -9px;
      cursor: pointer;
    }

    .beta-notice {
      font-style: italic;
      font-size: 13px;
      position: relative;
      padding-left: 30px;

      &::before {
        position: absolute;
        left: 0px;
        top: 0px;
        font-family: 'Ionicons';
        content: '\f276';
        color: $blue;
        font-size: 24px;
        font-style: normal;
        margin-right: 3px;
      }
    }

    .paid {
      background: $blue;
      color: white;
      font-weight: 700;
      font-size: 10px;
      padding: 0 2px;
      border-radius: 3px;
      position: relative;
      top: -9px;
      cursor: pointer;
    }

    .paid-notice {
      font-style: italic;
      font-size: 13px;
      position: relative;
      padding-left: 30px;

      &::before {
        position: absolute;
        left: 0px;
        top: 0px;
        font-family: 'Ionicons';
        content: '\f48d';
        color: $blue;
        font-size: 24px;
        font-style: normal;
        margin-right: 3px;
      }
    }

    .api-title {
      .beta, .paid {
        margin-left: 6px;
      }
    }
  }

  img {
    max-width: 100%;
  }
}


.page-components .docs-container h3 {
  @media (max-width: 1100px) {
    width: calc(100% - 172px);
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
  }
}


================================================
FILE: assets/scss/components/_draggable.scss
================================================
.draggable {
  height: 345px;
  position: relative;

  .code,
  .app {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: white;
    border-radius: 8px;
  }

  .app {
    right: 0;
    position: absolute;
    overflow: hidden;
    padding: 9px 0 0 9px;
    background: white url('/img/home/ios-list-design.png') no-repeat 0 bottom;
    background-size: 540px;
  }

  .code {
    code {
      padding: 0;
      position: absolute;
      top: 0;
      bottom: 0;
      right: 0;
      left: 0;
      background: transparent;
      padding-top: 15px;
    }

    pre {
      font-family: monospace;
      background-color: #fff;
      position: absolute;
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      overflow: hidden;
      line-height: 0em;
      counter-reset: line;
      white-space: pre-wrap;
      padding: 0;
      border: 0;
      margin: 0;

      &::before {
        background: #f3f7ff;
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        width: 40px;
        content: '';
        display: block;
      }

      span.line {
        display: block;
        padding: 12px 0 12px 55px;
        position: relative;

        &:before {
          counter-increment: line;
          content: counter(line);
          display: block;
          color: #79a5f1;
          position: absolute;
          top: 0;
          left: 0;
          bottom: 0;
          width: 40px;
          text-align: right;
          padding-top: 12px;
          padding-right: 8px;
        }
      }
    }
  }

  .toggle {
    width: 4px;
    top: 0 !important;
    bottom: 0;
    right: 0;
    position: absolute;
    box-shadow: 0 0 18px rgba(0,0,0,.1),0 0 4px rgba(0,0,0,.06);
    background: white;
    z-index: 3;
    cursor: grab;

    &::after {
      background: url('/img/home/drag-button.png') no-repeat 0 0;
      background-size: 64px;
      width: 64px;
      height: 64px;
      display: block;
      content: '';
      top: calc(50% - 40px);
      left: -28px;
      position: absolute;
    }
  }
}


================================================
FILE: assets/scss/components/_footer.scss
================================================
.docs-container + footer {
  display: none;
}

footer {
  border-top: 1px solid #f3f5f9;
  padding-top: 70px;
  padding-bottom: 20px;
  font-weight: 500;

  .logo svg {
    fill: #3880ff;
    width: 78px;
    height: 26px;
  }

  nav {
    display: flex;
    justify-content: space-between;

    &.container {
      &::before,
      &::after {
        display: none;
      }
    }

    .logo,
    ul {
      flex: 1;
    }

    ul {
      list-style: none;
      font-weight: 500;
      padding-left: 0;

      &:first-child {
        margin-left: 1px;
      }

      strong {
        color: #000000;
        display: block;
        font-weight: 600;
        font-size: 16px;
        padding-bottom: 4px;
        letter-spacing: -0.01em;
      }

      a {
        line-height: 1;
        font-size: 14px;
        letter-spacing: -0.01em;
        color: #73849a;
        font-weight: 400;
        padding: 11px 0;
        display: inline-block;
        font-family: $font-family-inter;

        &:hover {
          text-decoration: none;
          color: $blue;
        }
      }
    }
  }

  .signup {
    margin-top: 60px;
    display: flex;

    &::before,
    &::after {
      display: none;
    }

    hgroup {
      flex: 0 0 auto;
    }

    ionic-newsletter-signup {
      flex: 1;
      margin-left: 60px;
    }

    form {
      display: flex;
      height: 50px;
    }

    hgroup {
      background: url("/img/footer/footer-newsletter-icon.png") no-repeat 1px
        8px;
      background-size: 40px;
      padding-left: 63px;
      min-height: 50px;

      h3 {
        font-size: 16px;
        margin-top: 0;
        margin-bottom: 3px;
        padding-top: 11px;
        font-weight: 600;
        letter-spacing: -0.02em;
      }

      p {
        font-family: $font-family-inter;
        font-size: 14px;
        color: #73849a;
        letter-spacing: -0.016em;
        font-weight: 400;
      }
    }
  }

  @media (max-width: $screen-sm-max) {
    padding-top: 46px;

    nav {
      flex-wrap: wrap;
      justify-content: flex-start;

      .logo {
        flex: 0 0 100%;
        margin-bottom: 40px;
      }
    }

    .signup {
      flex-direction: column;

      hgroup,
      ionic-newsletter-signup {
        flex: 0 0 100%;
      }

      ionic-newsletter-signup {
        margin-top: 4px;
      }
    }
  }

  @media (max-width: $screen-sm-min) {
    nav {
      .logo {
        display: none;
      }

      ul {
        flex: 0 0 33%;
        margin-bottom: 36px;
      }

      ul li a {
        padding: 9px 0;
      }
    }

    .signup {
      margin-top: 0;
    }
  }

  @media (max-width: $screen-xs-min) {
    nav ul {
      flex: 0 0 50%;
    }

    .signup ionic-newsletter-signup {
      margin-left: 0;
    }
  }

  .sub-footer {
    font-size: 12px;
    color: $grey;
    border-top: 1px solid #eff1f5;
    margin-top: 40px;
    padding-top: 29px;
    text-align: center;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;

    ul {
      display: flex;
      flex: 0 0 auto;
      list-style: none;
      padding-left: 0;
    }

    ul:last-child li + li {
      margin-left: 15px;
    }

    .license {
      margin-left: auto;
      margin-right: -3px;
      padding-left: 15px;
      text-align: right;

      @media (max-width: $screen-xs-max) {
        width: 100%;
        padding-left: 0;
      }
    }

    a {
      color: #bcc5d5;

      &:hover {
        color: $grey;
      }
    }

    .copyright,
    .privacy,
    .tos {
      margin-right: 8px;
    }

    .copyright {
      flex: 0 0 77px;
    }

    .privacy {
      height: 1em;
    }

    a[id^="btn-footer"] {
      position: relative;
      height: 16px;
      width: 16px;
      display: inline-block;
      opacity: 0.6;
      display: flex;
      align-items: center;
      justify-content: center;

      svg {
        fill: #ced6e0;
      }

      &:hover svg {
        fill: #b4bbc5;
      }
    }
  }
}


================================================
FILE: assets/scss/components/_form.scss
================================================
.modal form,
.form-inline {
  max-width: 420px;

  input,
  .select-wrapper,
  textarea {
    border: 1px solid #e1e5ed;
    // padding: 15px 5px 15px 18px;
    font-weight: 500;
    float: left;
    border-radius: 4px;
    transition: border-color .2s;
    box-shadow: none;

    &::-webkit-input-placeholder {
      color: $lightish-grey;
    }

    &:-ms-input-placeholder {
      color: $lightish-grey;
    }
    
    &:valid {
      border-color: #B4BBC5;
    }

    &:hover,
    &:focus,
    &:active {
      outline: none;
      border-color: $blue;
      box-shadow: none;
    }
  }

  input.invalid,
  input.ng-touched:not(:focus):not(:valid) {
    border-color: $red;
  }

  input:not(.hs-button),
  .select-wrapper,
  input.form-control {
    width: 190px;
    margin: 0 7px 10px 0;
    height: 43px;

    &:nth-child(2),
    &:nth-child(4),
    &:nth-child(6),
    &:nth-child(8) {
      margin-right: 0;
      width: 190px;
    }

    &.full-width,
    &.full-width:nth-child(2),
    &.full-width:nth-child(4),
    &.fuill-width:nth-child(6),
    &.fuill-width:nth-child(8) {
      width: 100%;
    }
  }

  .select-wrapper {
    position: relative;
    background: white;
    // border-color: #B4BBC5;

    .up {
      width: 0;
      height: 0;
      border-left: 5px solid transparent;
      border-right: 5px solid transparent;
      border-bottom: 5px solid $grey;
      display: block;
      margin-bottom: 3px;
      position: absolute;
      right: 10px;
      top: 13px;
    }

    .dn {
      width: 0;
      height: 0;
      border-left: 5px solid transparent;
      border-right: 5px solid transparent;
      border-top: 5px solid $grey;
      display: block;
      position: absolute;
      right: 10px;
      top: 20px;
    }

    select {
      -webkit-appearance: none;
      -moz-appearance: none;
      -ms-appearance: none;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      border: 0;
      padding-top: 10px;
      outline: none;
      box-shadow: none;
      z-index: 1;
      background: transparent;
      width: 100%;
    }

    &.null {
      border-color: $lighter-grey;

      select {
        color: $lightish-grey;
      }

      .up {
        border-top-color: $lightish-grey !important;
      }

      .dn {
        border-bottom-color: $lightish-grey !important;
      }
    }
  }

  textarea {
    width: 100%;
    padding: 12px;
  }

  @media (max-width: 420px)  {
    input,
    input:nth-child(2),
    input:nth-child(6),
    select:nth-child(4) {
      width: 100%;
      margin-right: 0;
    }
  }

  button {
    font-size: 13px;
    padding: 10px 13px 8px;
    height: 41px;
    line-height: 10px;
    margin-top: 10px;
    float: right;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
  }

  .success {
    color: $green;
  }

  .error {
    color: $red;
  }
}


================================================
FILE: assets/scss/components/_header.scss
================================================
.navbar-default {
  background: linear-gradient(to right, #347eff, #1ea3ff);
  font-family: $font-family-inter;
  margin-bottom: 18px;
  position: relative;
  padding-top: 18px;
  border-radius: 0;
  margin-bottom: 0;
  min-height: 64px;
  z-index: 999;
  border: 0;

  @media (max-width: $screen-xs-max) {
    position: fixed;
    top: 0;
    width: 100%;
    padding-top: 1px;
    min-height: 50px;
    transition: .3s box-shadow;
    // 1 less than sub-nav
    z-index: 98;

    &.navbar--not-fixed {
      position: absolute;
    }
  }

  .navbar-header {
    // width: 132px;
    @media (max-width: $screen-sm-max) {
      width: auto;
    }
  }

  .navbar-brand {
    height: 32px;
    color: white;
    padding: 1px 0 0 20px;
    transition: 0.3s color;
    position: relative;
    z-index: 10;

    @media (max-width: $screen-xs-max) {
      padding-top: 8px;
      color: #1A232F;
  
      &:hover {
        color: $blue;
      }
    }

    img {
      width: 128px;
    }

    &:hover {
      color: rgba(white, .8);
    }
  }

  .navbar__divider {
    border-right: 1px solid #CED6E0;
    height: 2em;
    margin: 1px 12px 0;
    display: inline-block;

    &.navbar__divider--finale ~ li > a {
      padding-right: 10px;
      padding-left: 10px;
    }
  }

  &.light {
    .navbar-brand {
      color: #1A232F;
  
      &:hover {
        color: $blue;
      }
    }
  }

  .navbar-right {
    padding-right: 20px;
  }

  &.transparent {
    background: transparent;

    @media (max-width: $screen-xs-max) {
      background: #fff;
      box-shadow: 0px 1px 2px 0px rgba(0, 20, 56, 0.06);
    }
  }

  @media (max-width: $screen-xs-max) {
    .navbar-collapse {
      box-shadow: 0 4px 4px rgba(0, 0, 0, .1);
    }
  }

  .navbar-collapse {
    text-align: center;
    max-height: 32px;

    @media (max-width: $screen-xs-max) {
      max-height: 600px;
      margin-top: 20px;
    }
  }

  .navbar-nav {
    @media (max-width: $screen-xs-max) {
      padding-right: 6px;
      padding-left: 6px;
    }

    > li {
      padding-top: 0;

      &:first-child {
        margin-left: 0px;
      }

      &.sm-hide {
        @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          display: none;
        }
      }

      @media (max-width: $screen-md-max) {
        &.hide-lt-lg,
        .hide-lt-lg {
          display: none;
        }
      }

      @media (min-width: $screen-lg-min) {
        &.hide-gt-md,
        .hide-gt-md {
          display: none;
        }
      }

      > a {
        color: white;
        font-size: 14px;
        font-weight: 500;
        margin: 0;
        padding: 5px 12px;
        letter-spacing: -.01em;
        transition: 0.2s color;
        border-top: none;
        border-radius: 4px;
        transition-duration: 0.3s;
        position: relative;
        z-index: 10;

        @media (max-width: $screen-md-max) {
          padding-left: 8px;
          padding-right: 7px;
        }

        @media (max-width: $screen-sm-max) {
          margin-left: 0;
          margin-right: 0;
          padding-left: 8px;
          padding-right: 7px;
        }

        @media (max-width: $screen-xs-max) {
          padding: 15px;
          border: 0;
        }

        .social path {
          fill: currentColor;
        }

        path {
          transition: 0.3s fill;
        }

        &:hover {
          color: rgba(white, .65);
        }
      }

      &.open > a {
        color: rgba(white, .65) !important;
      }

      &.active > a {
        color: rgba(white, 0.7);
      }

      &.active > a:hover {
        color: rgba(255, 255, 255, 0.65);
      }

      .light &.open > a {
        color: #131924 !important;
      }

      &.header-btn-white {
        a {
          background-color: rgba(white, 1);
          vertical-align: middle;
          padding: 7.5px 12px 8.5px;
          border-radius: 8px;
          color: #3880FF;
          letter-spacing: -0.03em;
          line-height: 16px;
          font-family: $font-family-inter;
          font-weight: 500;
          margin-right: 0;
          margin-left: 16px;
          transition: 0.3s box-shadow, 0.3s background;
          top: -2px;

          &:hover {
            opacity: 1;
            color: $blue;
            box-shadow: 0 3px 5px rgba(black, .15);
            background-color: rgba(white, 1);
          }

          &:active {
            box-shadow: inset 0 1px 4px rgba(0,0,0,.2);
          }

          @media (max-width: $screen-sm-max) {
            // margin-left: 0px;
          }
        }

        &.blue {
          @media (min-width: $screen-sm-min) {
            a {
              color: white;
              background: $blue;

              &:hover {
                background-color: rgba($blue, .9);
              }
            }
          }
        }
      }

      &.search {
        margin-right: 12px;
        position: static;

        @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
          margin-right: 8px;
        }
      }
    }
  }

  // mobile width animation & default styles
  .dropdown {
    .dropdown-menu {
      display: block;
      visibility: 0;
      opacity: 0;
      transform: scaleY(0);
      transform-origin: top;
      transition: transform 0.3s ease, opacity 0.3s;
    }

    &.open .dropdown-menu {
      // &:hover .dropdown-menu {
      visibility: 1;
      opacity: 1;
      transform: scaleY(1);
    }

    .divider {
      border-bottom: 1px solid #ebeef2;
      margin: 6px 0 13px;
    }

    @media (max-width: $screen-xs-max) {
      .dropdown-menu {
        text-align: center;
      }
    }
  }

  // desktop width animation
  @media (min-width: $screen-sm-min) {
    .dropdown {
      &.open .dropdown-menu,
      &:hover .dropdown-menu {
        opacity: 1;
        top: 49px;
        // z-index: 999;
        pointer-events: all;
        transform: translate3d(-50%, 0, 0) scale(1,1) perspective(1px);
        transition: transform 0.25s cubic-bezier(.17,.67,.52,1), opacity 0.2s linear, top 0.25s step-start;
        transition-delay: 0.2s;

        &--bar.dropdown-menu {
          transform: none;
          transition: 
            transform 0.25s cubic-bezier(.17,.67,.52,1), 
            opacity 0.2s linear, 
            top 0.25s step-start;

          .dropdown-menu__column li {
            opacity: 1;
            transform: none;
          }
        }
      }

      .dropdown-menu {
        display: block;
        position: absolute;
        border: 0;
        border-radius: 8px;
        top: 49px;
        padding: 0;
        right: auto;
        left: 50%;
        box-shadow: 
          0px 18px 24px rgba(2, 8, 20, 0.2), 
          0px 8px 8px rgba(2, 8, 20, 0.1);
        border-top: 1px solid #eee;
        opacity: 0;
        top: -2000px;
        pointer-events: none;
        transform: translate3d(-50%, -10px, 0) scale(1,1) perspective(1px);
        z-index: 1;
        transition-delay: 0s;
        transform-origin: 50% 0;
        transition: 
          transform 0.2s cubic-bezier(0.36,0.66,0.04,1), 
          opacity 0.2s linear, top 0.25s step-end;
        backface-visibility: hidden;

        li,
        ul {
          margin: 0;
          padding-left: 0;
          list-style-type: none;
        }

        &__text--l1,
        &__text--l2,
        &__text--l3,
        &__text--l4 {
          letter-spacing: -0.01em;
        }

        &__text--l1 {
          font-weight: 600;
          font-size: 16px;

          ion-icon {
            transition: translate 0.2s;
            transform: translate(0, 3px);
          }

          &:hover ion-icon {
            transform: translate(1px, 3px);
          }
        }

        &__text--l2 {
          font-weight: 500;
          font-size: 11px;
          line-height: 15px;
          color: #73849A;
          letter-spacing: .12em;
          text-transform: uppercase;
          padding: 15px 32px 10px;
        }

        &__text--l3 {
          font-size: 14px;
          line-height: 17px;
          font-weight: 500;
          position: relative;
          padding: 11px 20px 12px 60px;
          min-width: 232px;

          small {
            display: block;
            font-size: 12px;
            line-height: 17px;
            color: #73849A;
            margin-top: 1px;
            font-weight: 400;
            transition: .2s color;
          }

          &::before,
          &::after {
            background: url('/img/ico-nav.png?3') 0 0 no-repeat;
            background-size: 20px;
            height: 20px;
            width: 20px;
            content: '';
            position: absolute;
            top: 9px;
            left: 30px;

            @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { 
              background-image: url('/img/ico-nav@2x.png?3');
              background-size: 20px;
            }
          }


          @include hoverSprite(
            'icon--enterprise'
            'icon--installation'
            'icon--ui-components'
            'icon--native-apis'
            'icon--deployment' // unused
            'icon--cli'
            'icon--hub'
            'icon--resources'
            'icon--help-center'
            'icon--trusted-partners'
            'icon--forum'
            'icon--identity-vault' 
            'icon--auth-connect' 
            'icon--secure-storage'
            'icon--appflow' 
            'icon--react'
            'icon--angular'
            'icon--vue'
            'icon--integrations'
            'icon--advisory-services'
          , 20);
        }

        > li > .dropdown-menu__text--l3 {
          padding-top: 21px;
          padding-bottom: 19px;

          &::before,
          &::after {
            top: 19px;
          }
        }

        a, 
        span.dropdown-menu__text--l2 {
          display: block;
          transition: 0.2s color;
          font-family: $font-family-inter;
          white-space: nowrap;
        }

        a {
          color: #1A232F;

          &:hover {
            color: #000;
            background: transparent;

            small {
              color: #000;
            }

            path {
              fill: #000;
            }
          }

          &:hover,
          &:active,
          &:focus {
            text-decoration: none;
          }
        }

        &::after {
          position: absolute;
          top: -20px;
          content: '';
          width: 100%;
          height: 20px;
        }

        &::before {
            position: absolute;
            width: 14px;
            height: 14px;
            top: -5px;
            right: calc(50% - 7px);
            background: white;
            transform: rotate(45deg);
            border-radius: 4px;
            content: '';
            display: block;
        }
      }
    }
  }

  .navbar-toggle,
  .sidebar-toggle {
    border: 0;
    position: relative;
    background: transparent;

    i {
      position: absolute;
      font-size: 27px;
      top: -3px;
      color: #fff;
      transition: color 0.3s, transform 0.3s, opacity 0.3s;
    }

    &:active,
    &:focus,
    &:hover {
      background: transparent;
      outline: none;

      i {
        color: #fff;
      }
    }

    .ion-md-close {
      opacity: 0;
    }

    &.active {
      i {
        transform: rotate(90deg);
      }

      i:not(.ion-md-close) {
        opacity: 0;
      }

      .ion-md-close {
        transform: rotate(90deg);
        opacity: 1;
      }
    }
  }

  &.transparent .navbar-toggle,
  &.transparent .sidebar-toggle {
    i {
      color: $blue;
    }

    &:active,
    &:focus,
    &:hover {
      i {
        color: $blue;
      }
    }
  }


  .sidebar-toggle {
    float: left;
    margin: 8px 10px 0;
    display: none;
    @media (max-width: $screen-xs-max) {
      display: block;
    }
  }

  ~ .cta {
    .bar {
      background: rgba(black, .9);
      min-height: 64px;

      .container > div,
      p {
        color: rgba(white,.7);
        text-align: center;
        margin-top: 15px;
        margin-bottom: 15px;
        font-weight: 400;
        font-size: 16px;
      }

      &.affix-top {
        position: absolute;
        z-index: 1;
      }

      &.affix {
        top: 0;
        position: fixed;
        z-index: 100;
      }

      &.tabbed {
        background: #fbfcfd;
        border-bottom: 1px solid $whiteish;
        width: 100%;

        &.affix {
          border-bottom-color: transparent;
          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);

          ul li a {
            margin-bottom: -2px;
          }
        }

        ul {
          padding: none;
          text-align: center;

          li {
            display: inline-block;

            a {
              padding: 25px 18px;
              display: inline-block;
              line-height: 1em;
              font-size: 13px;
              font-weight: 500;
              margin: 0 15px -1px;
              color: $dark-grey;
              border-bottom: 2px solid transparent;
              transition: color 0.2s, border-color 0.2s;
              font-weight: 600;

              &:focus {
                background: transparent;
              }
            }

            &.active a {
              border-color: $blue;
            }

            &.active a,
            a:active,
            a:hover {
              color: $blue;
              background: transparent;
            }
          }
          @media (max-width: $screen-xs-max) {
            display: flex;
            justify-content: space-between;

            li a {
              margin-right: 0;
              margin-left: 0;
              padding-left: 4px;
              padding-right: 4px;
            }
          }
        }
      }
    }
  }
  @media (min-width: $screen-sm-min) {
    &.light {
      .navbar-nav > li:not(.header-btn-white) > a,
      .navbar-nav ionic-search ion-icon {
        color: #35404E;

        .social path {
          fill: #B2BECD;
        }

        .chevron path {
          fill: #2D4665
        }

        &:hover {
          color: $blue;

          .chevron path,
          .social path {
            fill: $blue;
          }
        }
      }

      .navbar-nav > li.active > a {
        color: #c7d0e0;
      }
    }
  }

  &.navbar-sticky {
    z-index: 999;
    padding: 16px 0px 0px;
    box-shadow:
      0px 2px 6px 0px rgba(0, 0, 0, 0.04),
      0px 6px 12px rgba(0, 0, 0, 0.02);
  }

  ionic-search:not(.hydrated) {
    visibility: hidden;
    width: 18px;
    height: 31px;
    display: block;
  }

  &.navbar-sticky {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    opacity: 0;
    transform: translate3d(0, -100%, 0);
    box-shadow: 0 2px 6px 0 rgba(0,0,0,0.07);
    background: #fff;
  
    @supports (backdrop-filter: saturate(180%) blur(20px)) {
      background: rgba(#fff, 0.9);
      backdrop-filter: saturate(180%) blur(20px);
    }
  
    .navbar-nav > li.header-btn-white a {
      background-color: #488aff;
      color: #fff;
  
      &:hover {
        background-color: rgba(74,139,252,.9);
        color: #fff;
      }
    }
  
    &--show,
    &--hide {
      animation-fill-mode:forwards;
    }
  
    &--hide {
      animation-duration: 0.1s;
      animation-name: slideup;
  
      @keyframes slideup {
        0% {
          opacity: 1;
          transform: translate3d(0, 0, 0);
        }
        100% {
          opacity: 0;
          transform: translate3d(0, -100%, 0);
        }
      }
    }
  
    &--show {
      animation-duration: 0.5s;
      animation-name: slidedown;
      animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
  
      @keyframes slidedown {
        0% {
          opacity: 0;
          transform: translate3d(0, -100%, 0);
        }
        1% {
          opacity: 1;
        }
        100% {
          opacity: 1;
          transform: translate3d(0, 0, 0);
        }
      }
    }
  
    @media (max-width: $screen-xs-max) {
      display: none;
    }
  }
}

.docs .navbar-default .navbar-nav {
  @media (min-width: $screen-md-min) {
    &.navbar-center {
      margin-left: 0;
    }
  }
}

// fix for the header component API docs page. it conflicts w/ a bootstrap
// component

body.page-header {
  padding-bottom: 0;
  margin: 0;
  border-bottom: 0;
}

.navbar-dark {
  background: #11192a;
}

================================================
FILE: assets/scss/components/_hero.scss
================================================
.hero {
  padding-top: 128px;
  padding-bottom: 72px;
  position: relative;

  &.left {
    .content {
      width: 415px;
      @media (max-width: $screen-md-max)  {
        width: 400px;
      }
      @media (max-width: $screen-xs-max)  {
        width: 100%;
      }
    }

    .graphics {
      top: 150px;
      right: 0;
      position: absolute;
    }
  }

  &.right {
    .content {
      width: 451px;
      float: right;
      @media (max-width: $screen-xs-max)  {
        width: 100%;
        float: none;
      }

      &:after {
        clear: right;
      }
    }
  }

  .graphics {
    width: 500px;

    video {
      position: absolute;
      left: -2px;
      top: 10px;

      &::-webkit-media-controls-start-playback-button {
        display: none !important;
        -webkit-appearance: none;
      }
    }

    @media (max-width: $screen-xs-max)  {
      width: 100%;

      video {
        width: 300px;
        height: 300px;
        position: relative;
        margin: 0 auto;
        display: block;
      }
    }
  }

  p {
    font-size: 15px;
    line-height: 28px;
    letter-spacing: -0.02em;
    color: $dark-grey;

    & + .btns {
      margin-top: 37px;
    }
  }

  .feature {
    text-transform: uppercase;
    display: inline-block;
    font-weight: 700;
    font-size: 10px;
    letter-spacing: 2px;
    position: relative;
    padding-bottom: 15px;
    color: black;

    span {
      transition: left .3s cubic-bezier(0.155, 1.105, 0.295, 1.12);
      position: relative;
      left: 0;
    }

    &:after {
      position: absolute;
      top: 14px;
      left: 0;
      right: 0;
      content: '';
      border-bottom: 2px solid $blackish;
      transition: right .3s cubic-bezier(0.155, 1.105, 0.295, 1.12);
    }

    &:before {
      content: '';
      display: inline-block;
      position: absolute;
      right: -35px;
      top: 9px;
      font-size: 20px;
      transition: transform .3s cubic-bezier(0.155, 1.105, 0.295, 1.12);
      width: 11px;
      height: 11px;
      border-radius: 2px;
      border-right: 0.1em solid;
      border-top: 0.1em solid;
      transform: scale3d(0,0,1) rotate(45deg) translate3d(-25px, 25px, 0);
      margin-right: 0.5em;
    }

    &:hover {
      span {
        //transform: translate3d(15px, 0, 0);
        left: 5px;
      }

      &:before {
        transform: scale3d(1,1,1) rotate(45deg) translate3d(0, 0, 0);
      }

      &:after {
        right: -25px;
      }
    }

    + h2 {
      margin-top: 25px;
      margin-bottom: 20px;
      letter-spacing: -0.01em;
      color: #272a2f;
      font-size: 32px;
      font-weight: 400;
    }
  }

  h2 {
    line-height: 42px;
  }

  h3 + p {
    font-size: 17px;
    line-height: 34px;
  }
}


================================================
FILE: assets/scss/components/_hubspot_form.scss
================================================
.hbspt-form {
  max-width: 420px;
  margin: 0 auto;
  font-weight: 400;

  .hs-form-required {
    display: none;
  }

  form {
    fieldset.form-columns-2 .input {
      margin-right: 12px;
    }

    &.stacked .field {
      margin-bottom: 4px;
    }
  }

  .hs-input,
  input.hs-input,
  select.hs-input {
    border: 1px solid #e1e5ed;
    // padding: 15px 5px 15px 18px;
    font-weight: 500;
    border-radius: 4px;
    transition: border-color .2s;
    box-shadow: none;
    outline: none;
    height: 30px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.428571429;

    &:placeholder {
      color: $lightish-grey;
    }

    &:valid {
      // border-color: #B4BBC5;
    }

    &:hover,
    &:focus,
    &:active, {
      outline: none;
      border-color: $blue;
      box-shadow: none;
    }

    &.hs-input.error {
      border-color: $red;
    }
  }

  select.hs-input {
    height: 44px;
    width: calc(100% + 6px) !important;
  }

  textarea.hs-input {
    padding: 12px;
    width: calc(100% + 3px) !important;
    min-height: 192px;
  }

  .hs_submit input.hs-button {
    font-size: 13px;
    padding: 10px 18px 10px;
    margin-right: -14px;
    margin-top: -36px;
    line-height: 23px;
    float: right;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    text-shadow: none;
    background: $blue;
    border: 0;
    outline: 0;
    transition: all .2s linear;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);

    &:hover {
      border: 0;
      box-shadow: 0 4px 8px rgba(0,0,0,.12);
      background: #5995fc;
      color: #fff;
      outline: 0;
    }

    &:active,
    &:active:not(.inactive):not(.link),
    &:focus:not(.inactive) {
      border: 0;
      color: #fff;
      box-shadow: inset 0 1px 4px rgba(0,0,0,.2);
      background: #5995fc;
      outline: 0;
    }
  }

  .submitted-message {
    &:before {
      content: '';
      display: block;
      background-image: url('/img/checkmark-light-green.svg');
      background-repeat: no-repeat;
      background-size: 100%;
      width: 42px;
      height: 42px;
      margin-bottom: 12px;
    }

    font-size: 18px;
    padding: 34px 0 78px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    font-weight: 400;
    color: #35af55;
    max-width: 410px;
    background-color: white;
    margin: 0 auto;
  }
}

.modal .hbspt-form .hs_submit input.hs-button {
  padding: 0;
}

.hubspot-override .hbspt-form {
  font-family: $font-family-system;
  // TODO these styles are only used on contributors landing,
  // need to be applied to all hubspot forms

  &,
  & fieldset,
  & iframe {
    max-width: 100%;
  }

  // fieldset + fieldset,
  // form.stacked .hs-form-field + .hs-form-field,
  // fieldset .hs-form-field + .hs-form-field,
  // form.stacked .hs-form-field + .hs-dependent-field {
  //   margin-top: 26px;
  // }
   .hs-form-field {
     margin-top: 16px;
   }

  label {
    margin-bottom: 3px;
  }

  .hs-form-required {
    display: inline;
    color: #F45454;
    margin-left: 4px
  }

  .hs-richtext {
    margin-top: 8px;
  }

  .hs-input,
  input.hs-input {
    transition: border 0.3s;
    font-weight: 500;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ced6e3;
    line-height: 1.39286;
    border-radius: 4px;
    padding: 11px 15px;
    font-size: 15px;
    margin-bottom: 0;
    color: #505863;
  }

  input.hs-input[type="number"] {
    float: none;
  }

  input.hs-input[type="text"],
  input.hs-input[type="email"],
  input.hs-input[type="tel"]  {
    height: auto;
    width: 100%;
    float: none;

    &:focus {
      border-color: #629eff;
    }
  }

  input.hs-input[type="radio"],
  input.hs-input[type="checkbox"] {
    height: auto;
    margin-right: 8px;
  }

  .hs-form-booleancheckbox-display {
    display: flex;
  }

  select.hs-input {
    height: 44px;


    appearance: none;
    background-image:
      linear-gradient(45deg, transparent 50%, gray 50%),
      linear-gradient(135deg, gray 50%, transparent 50%);
    background-position:
      calc(100% - 20px) 50%,
      calc(100% - 15px) 50%;
    background-size:
      5px 5px,
      5px 5px,
      1px 1.5em;
    background-repeat: no-repeat;
  }

  form fieldset.form-columns-2 .input {
    margin: 0;
  }

  fieldset.form-columns-2 .hs-form-field {
    padding: 0 10px;

    &:first-child {
      padding-left: 0;
    }
    &:last-child {
      padding-right: 0;
    }
  }

  .inputs-list,
  .hs-error-msgs {
    margin: 0;
    padding: 0;
    list-style-type: none;
  }

  .inputs-list.multi-container {
    overflow: hidden;

    li:nth-last-child(n+6):first-child,
    li:nth-last-child(n+6):first-child ~ li {
      width: 50%;
      float: left;
      padding-right: 11px;
    }
    li:nth-last-child(n+6):first-child ~ li:nth-child(even) {
      padding-right: 0;
      padding-left: 11px;
    }
  }

  .hs-form-checkbox-display {
    margin-top: 4px;
    display: flex;
  }

  .hs-form-checkbox-display .hs-input[type="checkbox"]{
    margin-right: 10px;
  }

  .hs-form-checkbox-display span {
    font-size: 15px;
    color: #505863;
  }


  .hs-error-msgs {
    padding: 5px 0 0;
    font-size: 11px;
    color: #F45454;
  }

  .hs_submit {
    margin-top: 30px;
  }

  .hs_submit input.hs-button {
    transition: all .3s ease;
    margin: 0;
    float: none;
    font-size: 16px;
    font-weight: 700;
    padding: 12px 20px;
    vertical-align: middle;
    color: white;
    background: #3880ff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.12);
    border-radius: 4px;
    line-height: 18px;
    letter-spacing: -0.01em;

    &:hover {
      box-shadow: 0 7px 14px rgba(0, 0, 0, 0.12), 0 3px 6px rgba(0, 0, 0, 0.08);
      background: #4d8dfd;
      color: #fff;
      outline: none;
    }
  }

  @media (max-width: $screen-sm) {
    fieldset.form-columns-2 .hs-form-field {
      width: 100%;
      float: none;
      padding: 0;

      & + .hs-form-field {
        margin-top: 24px;
      }
    }
    .inputs-list.multi-container {
      li:nth-last-child(n+6):first-child,
      li:nth-last-child(n+6):first-child ~ li {
        width: 100%;
        float: none;
        padding-right: 0;
      }
      li:nth-last-child(n+6):first-child ~ li:nth-child(even) {
        padding-left: 0;
      }
    }
    .hs_submit input.hs-button {
      width: 100%;
    }
  }
}

.hubspot-override--large .hbspt-form {
  label:not(.hs-form-booleancheckbox-display) {
    text-transform: uppercase;
    font-size: 12px;
    letter-spacing: 0.05em;
    margin-bottom: 6px;
  }

  .hs-form-booleancheckbox-display {
    font-size: 15px;
  }

  .hs-richtext {
    p span,
    p a {
      font-size: 15px;
    }
  }

  .hs-input,
  input.hs-input {
    padding: 16px 20px 18px;
    font-size: 18px;
  }

  select.hs-input {
    text-indent: 10px;
    height: 60px;
  }
  @-moz-document url-prefix() {
    select.hs-input {
       text-indent: 0;
    }
  }

  .hs-error-msgs label {
    font-size: 11px;
    letter-spacing: 0;
    text-transform: none;
  }

  fieldset.form-columns-2 .hs-form-field {
    padding: 0 20px;
  }

  .hs_submit {
    text-align: center;
    padding-top: 18px;
  }

  .hs_submit input.hs-button {
    padding: 22px 27px 24px;
    border-radius: 6px;
  }

  @media (max-width: $screen-sm) {
    fieldset.form-columns-2 .hs-form-field {
      padding: 0;
    }
  }
}

.hubspot-override--measure {
  max-width: 748px;
  margin-left: auto;
  margin-right: auto;
}


================================================
FILE: assets/scss/components/_jquery_UI.scss
================================================
/*! jQuery UI - v1.12.1 - 2016-11-14
* http://jqueryui.com
* Includes: draggable.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-draggable-handle {
	-ms-touch-action: none;
	touch-action: none;
}

/* Component containers
----------------------------------*/
.ui-widget {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget .ui-widget {
	font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget.ui-widget-content {
	border: 1px solid #c5c5c5;
}
.ui-widget-content {
	border: 1px solid #dddddd;
	background: #ffffff;
	color: #333333;
}
.ui-widget-content a {
	color: #333333;
}
.ui-widget-header {
	border: 1px solid #dddddd;
	background: #e9e9e9;
	color: #333333;
	font-weight: bold;
}
.ui-widget-header a {
	color: #333333;
}

/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default,
.ui-button,

/* We use html here because we need a greater specificity to make sure disabled
works properly when clicked or hovered */
html .ui-button.ui-state-disabled:hover,
html .ui-button.ui-state-disabled:active {
	border: 1px solid #c5c5c5;
	background: #f6f6f6;
	font-weight: normal;
	color: #454545;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited,
a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
	color: #454545;
	text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus,
.ui-button:hover,
.ui-button:focus {
	border: 1px solid #cccccc;
	background: #ededed;
	font-weight: normal;
	color: #2b2b2b;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
	color: #2b2b2b;
	text-decoration: none;
}

.ui-visual-focus {
	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: 1px solid #003eff;
	background: #007fff;
	font-weight: normal;
	color: #ffffff;
}
.ui-icon-background,
.ui-state-active .ui-icon-background {
	border: #003eff;
	background-color: #ffffff;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
	color: #ffffff;
	text-decoration: none;
}

/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
	border: 1px solid #dad55e;
	background: #fffa90;
	color: #777620;
}
.ui-state-checked {
	border: 1px solid #dad55e;
	background: #fffa90;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
	color: #777620;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
	border: 1px solid #f1a899;
	background: #fddfdf;
	color: #5f3f3f;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
	color: #5f3f3f;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
	color: #5f3f3f;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
	font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
	opacity: .7;
	filter:Alpha(Opacity=70); /* support: IE8 */
	font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
	opacity: .35;
	filter:Alpha(Opacity=35); /* support: IE8 */
	background-image: none;
}
.ui-state-disabled .ui-icon {
	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
}

/* Icons
----------------------------------*/

/* states and images */
.ui-icon {
	width: 16px;
	height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-widget-header .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
	background-image: url("images/ui-icons_555555_256x240.png");
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
	background-image: url("images/ui-icons_ffffff_256x240.png");
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
	background-image: url("images/ui-icons_777620_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
	background-image: url("images/ui-icons_cc0000_256x240.png");
}
.ui-button .ui-icon {
	background-image: url("images/ui-icons_777777_256x240.png");
}

/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 3px;
}

/* Overlays */
.ui-widget-overlay {
	background: #aaaaaa;
	opacity: .3;
	filter: Alpha(Opacity=30); /* support: IE8 */
}
.ui-widget-shadow {
	-webkit-box-shadow: 0px 0px 5px #666666;
	box-shadow: 0px 0px 5px #666666;
}


================================================
FILE: assets/scss/components/_mobile-nav.scss
================================================
.mobile-nav {
  transition: opacity 0.4s;
  position: fixed;
  z-index: 99999;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: #fff;
  display: none;
  overflow: touch;

  &.open {
    animation-name: revealIn;
    animation-duration: 0.2s;
    animation-fill-mode: forwards;
    animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
  }

  &.closed {
    animation-name: revealOut;
    animation-duration: 0.2s;
    animation-fill-mode: forwards;
  }

  @keyframes revealIn {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
  }

  @keyframes revealOut {
    from {
      opacity: 1;
    }
    to {
      opacity: 0;
    }
  }
}

.mobile-nav__wrapper {
  position: relative;
  width: 100%;
  height: 100vh;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

.mobile-nav__menu {
  margin: 0;
  padding: 0;
  //deal with ie edge bug always rendering bullets
  list-style: none;
  list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=);
  list-style-type: none;
  max-width: 312px;
  margin-left: auto;
  margin-right: auto;
  padding-top: 59px;
  padding-bottom: 160px;

  h6 {
    font-size: 22px;
    line-height: 37px;
    letter-spacing: -0.02em;
    color: #020814;
    margin-bottom: 0;

    + .mobile-nav__menuitem {
      margin-top: 2px;
    }
  }

  .open & {
    animation-name: navMenuIn;
    animation-duration: 0.2s;
    animation-fill-mode: forwards;
    animation-delay: 0.1s;
    opacity: 0;
  }

  .closed & {
    animation-name: navMenuOut;
    animation-duration: 0.2s;
    animation-fill-mode: forwards;
  }

  @keyframes navMenuIn {
    from {
      transform: translateY(-6px);
      opacity: 0;
    }
    to {
      transform: translateY(0);
      opacity: 1;
    }
  }

  @keyframes navMenuOut {
    from {
      transform: translateY(0);
      opacity: 1;
    }
    to {
      transform: translateY(-6px);
      opacity: 0;
    }
  }
}

.mobile-nav--enterprise .mobile-nav__menu {
  height: 100%;
  flex-direction: column;
  display: flex;
  align-items: center
Download .txt
gitextract_zuy7n7xo/

├── .dockerignore
├── .env-docker
├── .gitignore
├── .npmrc
├── .slugignore
├── CONTRIBUTING.md
├── Dockerfile
├── Gulpfile.js
├── LICENSE
├── Procfile
├── README.md
├── app.json
├── assets/
│   ├── 3rd-party-libs.json
│   ├── js/
│   │   ├── analytics.js
│   │   ├── highlight.js
│   │   └── utils.js
│   ├── scss/
│   │   ├── _animations.scss
│   │   ├── _fonts.scss
│   │   ├── _general.scss
│   │   ├── _hljs.scss
│   │   ├── _mixins.scss
│   │   ├── _theme.scss
│   │   ├── _typography.scss
│   │   ├── _vars.scss
│   │   ├── components/
│   │   │   ├── _alert.scss
│   │   │   ├── _banner.scss
│   │   │   ├── _bar-chart.scss
│   │   │   ├── _bar.scss
│   │   │   ├── _buttons.scss
│   │   │   ├── _checkmark-list.scss
│   │   │   ├── _cta.scss
│   │   │   ├── _customer-callout.scss
│   │   │   ├── _docs_content.scss
│   │   │   ├── _draggable.scss
│   │   │   ├── _footer.scss
│   │   │   ├── _form.scss
│   │   │   ├── _header.scss
│   │   │   ├── _hero.scss
│   │   │   ├── _hubspot_form.scss
│   │   │   ├── _jquery_UI.scss
│   │   │   ├── _mobile-nav.scss
│   │   │   ├── _modal.scss
│   │   │   ├── _pre-header.scss
│   │   │   ├── _pre_footer.scss
│   │   │   ├── _pro_docs_content.scss
│   │   │   ├── _resource-card.scss
│   │   │   ├── _resource-promo.scss
│   │   │   ├── _responsive_docs.scss
│   │   │   ├── _side_nav.scss
│   │   │   ├── _site-search.scss
│   │   │   ├── _snap_bar.scss
│   │   │   ├── _social_share_sidebar.scss
│   │   │   ├── _sticky-bar.scss
│   │   │   ├── _sub_header.scss
│   │   │   ├── _tables.scss
│   │   │   ├── _tabs.scss
│   │   │   ├── _tag.scss
│   │   │   ├── _testimonial-slides.scss
│   │   │   ├── _tippy.scss
│   │   │   ├── _toc.scss
│   │   │   ├── _tooltip.scss
│   │   │   ├── _utils.scss
│   │   │   ├── home_slides/
│   │   │   │   ├── _ioniconf.scss
│   │   │   │   ├── _limitless.scss
│   │   │   │   ├── _one-any.scss
│   │   │   │   ├── _react-1.scss
│   │   │   │   ├── _v5.scss
│   │   │   │   ├── _v6.scss
│   │   │   │   ├── _vue.scss
│   │   │   │   └── index.scss
│   │   │   └── promos/
│   │   │       ├── _hybrid-vs-native.scss
│   │   │       ├── _index.scss
│   │   │       ├── _ioniconf.scss
│   │   │       └── _offline-storage.scss
│   │   ├── creator.scss
│   │   ├── ionicons-v3/
│   │   │   ├── _ionicons-common.scss
│   │   │   ├── _ionicons-core.scss
│   │   │   ├── _ionicons-icons.scss
│   │   │   ├── _ionicons-variables.scss
│   │   │   └── _ionicons.scss
│   │   ├── pages/
│   │   │   ├── _404.scss
│   │   │   ├── _coming-soon.scss
│   │   │   ├── _contributors.scss
│   │   │   ├── _demo.scss
│   │   │   ├── _sales.scss
│   │   │   ├── _start.scss
│   │   │   ├── _startups.scss
│   │   │   ├── _what-is-ionic.scss
│   │   │   ├── about.scss
│   │   │   ├── angular.scss
│   │   │   ├── articles/
│   │   │   │   └── _why-hybrid.scss
│   │   │   ├── auth.scss
│   │   │   ├── community.scss
│   │   │   ├── contact.scss
│   │   │   ├── developers.scss
│   │   │   ├── enterprise/
│   │   │   │   ├── _index_bak.scss
│   │   │   │   ├── _shared.scss
│   │   │   │   ├── auth-connect.scss
│   │   │   │   ├── components/
│   │   │   │   │   └── _ee-hero.scss
│   │   │   │   ├── contact.scss
│   │   │   │   ├── customers.scss
│   │   │   │   ├── identity-vault.scss
│   │   │   │   ├── index.scss
│   │   │   │   ├── offline-storage.scss
│   │   │   │   ├── platform.scss
│   │   │   │   ├── solutions/
│   │   │   │   │   ├── _shared.scss
│   │   │   │   │   ├── cross-platform.scss
│   │   │   │   │   ├── design.scss
│   │   │   │   │   └── index.scss
│   │   │   │   ├── support.scss
│   │   │   │   ├── training.scss
│   │   │   │   └── why-ionic.scss
│   │   │   ├── framework.scss
│   │   │   ├── getting-started-with-ionic-vue-1.scss
│   │   │   ├── getting-started.scss
│   │   │   ├── go/
│   │   │   │   ├── _pwa-architects-guide.scss
│   │   │   │   └── _why-hybrid.scss
│   │   │   ├── home.scss
│   │   │   ├── integrations/
│   │   │   │   └── index1.scss
│   │   │   ├── ioniconf-2020.scss
│   │   │   ├── jobs.scss
│   │   │   ├── native.scss
│   │   │   ├── press/
│   │   │   │   ├── _release.scss
│   │   │   │   └── index.scss
│   │   │   ├── pricing/
│   │   │   │   ├── __feature-lists.scss
│   │   │   │   ├── __modal.scss
│   │   │   │   ├── __plan-cards.scss
│   │   │   │   ├── __table.scss
│   │   │   │   ├── __vars.scss
│   │   │   │   ├── compare.scss
│   │   │   │   ├── enterprise.scss
│   │   │   │   └── index.scss
│   │   │   ├── pro/
│   │   │   │   ├── _contact.scss
│   │   │   │   ├── _deploy.scss
│   │   │   │   ├── _general.scss
│   │   │   │   ├── _package.scss
│   │   │   │   ├── _teams.scss
│   │   │   │   └── index.scss
│   │   │   ├── products/
│   │   │   │   ├── advisory.scss
│   │   │   │   └── appflow.scss
│   │   │   ├── pwa/
│   │   │   │   └── _index.scss
│   │   │   ├── pwa-toolkit.scss
│   │   │   ├── react.scss
│   │   │   ├── resources/
│   │   │   │   ├── case-studies.scss
│   │   │   │   ├── index.scss
│   │   │   │   ├── webinars.scss
│   │   │   │   └── whitepapers.scss
│   │   │   ├── solutions/
│   │   │   │   └── _shared.scss
│   │   │   ├── subscribe.scss
│   │   │   ├── support.scss
│   │   │   ├── survey/
│   │   │   │   ├── 2017.scss
│   │   │   │   ├── 2018.scss
│   │   │   │   ├── 2020.scss
│   │   │   │   └── _surveys.scss
│   │   │   ├── team.scss
│   │   │   ├── thank-you.scss
│   │   │   ├── translations.scss
│   │   │   ├── trusted-partners.scss
│   │   │   ├── values.scss
│   │   │   └── vue.scss
│   │   ├── pygments/
│   │   │   ├── autumn.scss
│   │   │   ├── borland.css
│   │   │   ├── bw.css
│   │   │   ├── colorful.css
│   │   │   ├── default.css
│   │   │   ├── emacs.css
│   │   │   ├── friendly.css
│   │   │   ├── fruity.css
│   │   │   ├── github.css
│   │   │   ├── ionic.scss
│   │   │   ├── manni.css
│   │   │   ├── monokai.css
│   │   │   ├── murphy.css
│   │   │   ├── native.css
│   │   │   ├── pastie.css
│   │   │   ├── perldoc.css
│   │   │   ├── tango.css
│   │   │   ├── trac.css
│   │   │   ├── vim.css
│   │   │   ├── vs.css
│   │   │   └── zenburn.css
│   │   ├── styles.scss
│   │   └── utilities/
│   │       ├── u-enterprise.scss
│   │       ├── u-getting-started.scss
│   │       ├── u-ioniconf.scss
│   │       ├── u-mixins.scss
│   │       └── u-native.scss
│   └── stencil/
│       ├── _vars.scss
│       ├── components/
│       │   ├── additional-resources/
│       │   │   ├── additional-resources.scss
│       │   │   ├── additional-resources.tsx
│       │   │   └── default.json
│       │   ├── angular-components/
│       │   │   ├── angular-components.scss
│       │   │   └── angular-components.tsx
│       │   ├── app-wizard/
│       │   │   ├── app-wizard.scss
│       │   │   └── app-wizard.tsx
│       │   ├── auth-connect-promo/
│       │   │   ├── auth-connect-promo.scss
│       │   │   └── auth-connect-promo.tsx
│       │   ├── bar-chart/
│       │   │   ├── bar-chart.scss
│       │   │   └── bar-chart.tsx
│       │   ├── ebook-switcher/
│       │   │   ├── bookData.json
│       │   │   ├── ebook-switcher.scss
│       │   │   └── ebook-switcher.tsx
│       │   ├── emoji-picker/
│       │   │   ├── emoji-picker.scss
│       │   │   ├── emoji-picker.tsx
│       │   │   └── svgs.tsx
│       │   ├── home-components/
│       │   │   ├── home-components.scss
│       │   │   └── home-components.tsx
│       │   ├── home-countdown/
│       │   │   ├── home-countdown.scss
│       │   │   └── home-countdown.tsx
│       │   ├── home-native/
│       │   │   ├── home-native.scss
│       │   │   └── home-native.tsx
│       │   ├── hubspot-dynamic-content/
│       │   │   ├── hubspot-dynamic-content.scss
│       │   │   └── hubspot-dynamic-content.tsx
│       │   ├── hubspot-form/
│       │   │   ├── hubspot-form.scss
│       │   │   └── hubspot-form.tsx
│       │   ├── icon-external/
│       │   │   ├── icon-external.scss
│       │   │   └── icon-external.tsx
│       │   ├── ionic-appflow-activatior/
│       │   │   ├── activator-icons.tsx
│       │   │   ├── ionic-appflow-activatior.tsx
│       │   │   └── ionic-appflow-activator.scss
│       │   ├── ionic-bar-chart/
│       │   │   ├── ionic-bar-chart.scss
│       │   │   └── ionic-bar-chart.tsx
│       │   ├── ionic-button/
│       │   │   ├── ionic-button.scss
│       │   │   └── ionic-button.tsx
│       │   ├── ionic-newsletter-signup/
│       │   │   ├── ionic-newsletter-signup.scss
│       │   │   └── ionic-newsletter-signup.tsx
│       │   ├── ionic-search/
│       │   │   ├── ionic-search.scss
│       │   │   └── ionic-search.tsx
│       │   ├── ionic-slider/
│       │   │   ├── ionic-slider.scss
│       │   │   └── ionic-slider.tsx
│       │   ├── ionic-snap-bar/
│       │   │   ├── ionic-snap-bar.scss
│       │   │   └── ionic-snap-bar.tsx
│       │   ├── ionic-sub-header/
│       │   │   ├── ionic-sub-header.scss
│       │   │   └── ionic-sub-header.tsx
│       │   ├── ionic-switcher/
│       │   │   ├── ionic-switcher.scss
│       │   │   └── ionic-switcher.tsx
│       │   ├── ionic-toggle/
│       │   │   ├── ionic-toggle-button.scss
│       │   │   ├── ionic-toggle-button.tsx
│       │   │   ├── ionic-toggle-tab.tsx
│       │   │   ├── ionic-toggle.scss
│       │   │   └── ionic-toggle.tsx
│       │   ├── react-capacitor/
│       │   │   ├── react-capacitor.scss
│       │   │   └── react-capacitor.tsx
│       │   ├── react-components/
│       │   │   ├── react-components.scss
│       │   │   └── react-components.tsx
│       │   ├── react-demo/
│       │   │   ├── react-demo.scss
│       │   │   └── react-demo.tsx
│       │   ├── twitter-script/
│       │   │   └── twitter-script.tsx
│       │   ├── ui/
│       │   │   ├── floating-input/
│       │   │   │   ├── floating-input.scss
│       │   │   │   └── floating-input.tsx
│       │   │   └── tip/
│       │   │       ├── tip.scss
│       │   │       └── tip.tsx
│       │   └── vue-components/
│       │       ├── vue-components.scss
│       │       └── vue-components.tsx
│       ├── components.d.ts
│       ├── declarations.ts
│       ├── forms.tsx
│       ├── icons.tsx
│       ├── index.d.ts
│       ├── index.html
│       ├── index.ts
│       ├── prism-ionic.scss
│       └── util/
│           ├── analytics.ts
│           ├── app-icon.ts
│           ├── auth.ts
│           ├── common.ts
│           ├── hubspot.ts
│           └── recaptcha.ts
├── content/
│   ├── 404.html
│   ├── CNAME
│   ├── assets/
│   │   └── fonts/
│   │       └── inter/
│   │           └── inter.css
│   ├── browserconfig.xml
│   ├── circle.yml
│   ├── css/
│   │   ├── animate.css
│   │   ├── bootstrap/
│   │   │   ├── .gitkeep
│   │   │   └── bootstrap.css
│   │   ├── bootstrap.css
│   │   ├── creator.css
│   │   ├── ionic-hljs.css
│   │   ├── ionic.css
│   │   ├── ionicons.css
│   │   ├── job.css
│   │   ├── main.css
│   │   ├── nprogress.css
│   │   ├── pages/
│   │   │   ├── about.css
│   │   │   ├── case-studies.css
│   │   │   ├── contact.css
│   │   │   ├── developers.css
│   │   │   ├── enterprise/
│   │   │   │   ├── contact.css
│   │   │   │   ├── customers.css
│   │   │   │   ├── home.css
│   │   │   │   ├── index.css
│   │   │   │   ├── platform.css
│   │   │   │   ├── resources/
│   │   │   │   │   ├── case-studies.css
│   │   │   │   │   ├── index.css
│   │   │   │   │   ├── webinars.css
│   │   │   │   │   └── whitepapers.css
│   │   │   │   ├── solutions/
│   │   │   │   │   ├── cross-platform.css
│   │   │   │   │   ├── design.css
│   │   │   │   │   ├── index.css
│   │   │   │   │   └── toolkit.css
│   │   │   │   ├── support.css
│   │   │   │   └── why-ionic.css
│   │   │   ├── framework.css
│   │   │   ├── home.css
│   │   │   ├── integrations/
│   │   │   │   ├── detail.css
│   │   │   │   └── index.css
│   │   │   ├── integrations.css
│   │   │   ├── jobs.css
│   │   │   ├── press/
│   │   │   │   └── index.css
│   │   │   ├── pricing/
│   │   │   │   └── index.css
│   │   │   ├── pro/
│   │   │   │   └── index.css
│   │   │   ├── products/
│   │   │   │   ├── advisory.css
│   │   │   │   ├── appflow.css
│   │   │   │   ├── enterprise-core.css
│   │   │   │   ├── enterprise-edition.css
│   │   │   │   ├── enterprise-engine.css
│   │   │   │   ├── index.css
│   │   │   │   └── studio.css
│   │   │   ├── resources/
│   │   │   │   ├── case-studies.css
│   │   │   │   └── webinars.css
│   │   │   ├── solutions/
│   │   │   │   ├── cross-platform.css
│   │   │   │   └── design.css
│   │   │   ├── strategy-session.css
│   │   │   ├── subscribe.css
│   │   │   ├── support.css
│   │   │   ├── survey/
│   │   │   │   ├── 2017.css
│   │   │   │   └── 2018.css
│   │   │   ├── team.css
│   │   │   ├── thank-you.css
│   │   │   ├── translations.css
│   │   │   ├── trusted-partners.css
│   │   │   ├── values.css
│   │   │   └── webinars.css
│   │   ├── pygments/
│   │   │   ├── autumn.css
│   │   │   └── ionic.css
│   │   ├── site.css
│   │   ├── slick-theme.css
│   │   ├── slick.css
│   │   ├── style.css
│   │   ├── styles.css
│   │   ├── syntax.css
│   │   └── v2-demos/
│   │       ├── css/
│   │       │   └── ionic.css
│   │       └── ionic.css
│   ├── data/
│   │   └── index.json
│   ├── dist/
│   │   ├── bundles/
│   │   │   ├── ionic.css
│   │   │   ├── ionic.ios.css
│   │   │   ├── ionic.md.css
│   │   │   ├── ionic.system.js
│   │   │   └── ionic.wp.css
│   │   ├── demos/
│   │   │   ├── scrollbar-fix.css
│   │   │   └── scrollbar-fix.js
│   │   └── preview-app/
│   │       └── www/
│   │           ├── assets/
│   │           │   └── fonts/
│   │           │       ├── ionicons.scss
│   │           │       ├── noto-sans.scss
│   │           │       └── roboto.scss
│   │           ├── build/
│   │           │   ├── main.css
│   │           │   ├── main.js
│   │           │   ├── polyfills.js
│   │           │   ├── sw-toolbox.js
│   │           │   └── vendor.js
│   │           ├── index.html
│   │           ├── manifest.json
│   │           └── service-worker.js
│   ├── docs/
│   │   └── data/
│   │       └── index.json
│   ├── fonts/
│   │   ├── inter/
│   │   │   └── inter.css
│   │   └── roboto.scss
│   ├── js/
│   │   ├── css-docs-angular.js
│   │   ├── ionic-angular.js
│   │   ├── ionic-docs.js
│   │   ├── ionic-highlight.js
│   │   ├── ionic-site.js
│   │   ├── ionic.bundle.js
│   │   ├── ionic.js
│   │   ├── lunr.js
│   │   ├── nprogress.js
│   │   ├── site.js
│   │   ├── slick.js
│   │   ├── stencil/
│   │   │   ├── cjs/
│   │   │   │   └── es5/
│   │   │   │       ├── build/
│   │   │   │       │   ├── bubpozqb.entry.js
│   │   │   │       │   ├── bubpozqb.sc.entry.js
│   │   │   │       │   ├── cetridhp.entry.js
│   │   │   │       │   ├── cetridhp.sc.entry.js
│   │   │   │       │   ├── cz7vrrja.entry.js
│   │   │   │       │   ├── cz7vrrja.sc.entry.js
│   │   │   │       │   ├── ehteibio.entry.js
│   │   │   │       │   ├── ehteibio.sc.entry.js
│   │   │   │       │   ├── hclgi8iu.entry.js
│   │   │   │       │   ├── hclgi8iu.sc.entry.js
│   │   │   │       │   ├── index.js
│   │   │   │       │   ├── lo9utgpp.entry.js
│   │   │   │       │   ├── lo9utgpp.sc.entry.js
│   │   │   │       │   ├── m0trkizf.entry.js
│   │   │   │       │   ├── m0trkizf.sc.entry.js
│   │   │   │       │   ├── nrj8jyt7.entry.js
│   │   │   │       │   ├── nrj8jyt7.sc.entry.js
│   │   │   │       │   ├── raorzqti.entry.js
│   │   │   │       │   ├── raorzqti.sc.entry.js
│   │   │   │       │   ├── uy47nvwg.entry.js
│   │   │   │       │   ├── uy47nvwg.sc.entry.js
│   │   │   │       │   ├── uyiaiqzf.entry.js
│   │   │   │       │   ├── uyiaiqzf.sc.entry.js
│   │   │   │       │   ├── z7r5cewq.entry.js
│   │   │   │       │   └── z7r5cewq.sc.entry.js
│   │   │   │       ├── index.js
│   │   │   │       ├── ionic-site-components.components.js
│   │   │   │       ├── ionic-site-components.core.js
│   │   │   │       ├── ionic-site-components.define.js
│   │   │   │       └── polyfills/
│   │   │   │           ├── array.js
│   │   │   │           ├── css-shim.js
│   │   │   │           ├── dom.js
│   │   │   │           ├── fetch.js
│   │   │   │           ├── map.js
│   │   │   │           ├── object.js
│   │   │   │           ├── promise.js
│   │   │   │           ├── string.js
│   │   │   │           ├── tslib.js
│   │   │   │           └── url.js
│   │   │   ├── collection/
│   │   │   │   ├── collection-manifest.json
│   │   │   │   ├── components/
│   │   │   │   │   ├── icon-external/
│   │   │   │   │   │   ├── icon-external.css
│   │   │   │   │   │   ├── icon-external.js
│   │   │   │   │   │   └── icon-external.scss
│   │   │   │   │   ├── ionic-appflow-activatior/
│   │   │   │   │   │   ├── ionic-appflow-activatior.js
│   │   │   │   │   │   ├── ionic-appflow-activator.css
│   │   │   │   │   │   └── ionic-appflow-activator.scss
│   │   │   │   │   ├── ionic-bar-chart/
│   │   │   │   │   │   ├── ionic-bar-chart.css
│   │   │   │   │   │   ├── ionic-bar-chart.js
│   │   │   │   │   │   └── ionic-bar-chart.scss
│   │   │   │   │   ├── ionic-button/
│   │   │   │   │   │   ├── ionic-button.css
│   │   │   │   │   │   ├── ionic-button.js
│   │   │   │   │   │   └── ionic-button.scss
│   │   │   │   │   ├── ionic-newsletter-signup/
│   │   │   │   │   │   ├── ico-email.js
│   │   │   │   │   │   ├── ionic-newsletter-signup.css
│   │   │   │   │   │   ├── ionic-newsletter-signup.js
│   │   │   │   │   │   └── ionic-newsletter-signup.scss
│   │   │   │   │   ├── ionic-quick-signup/
│   │   │   │   │   │   ├── ionic-quick-signup.css
│   │   │   │   │   │   ├── ionic-quick-signup.js
│   │   │   │   │   │   └── ionic-quick-signup.scss
│   │   │   │   │   ├── ionic-search/
│   │   │   │   │   │   ├── arrow.svg.js
│   │   │   │   │   │   ├── ionic-search.css
│   │   │   │   │   │   ├── ionic-search.js
│   │   │   │   │   │   └── ionic-search.scss
│   │   │   │   │   ├── ionic-slider/
│   │   │   │   │   │   ├── ionic-slider.css
│   │   │   │   │   │   ├── ionic-slider.js
│   │   │   │   │   │   └── ionic-slider.scss
│   │   │   │   │   ├── ionic-snap-bar/
│   │   │   │   │   │   ├── ionic-snap-bar.css
│   │   │   │   │   │   ├── ionic-snap-bar.js
│   │   │   │   │   │   └── ionic-snap-bar.scss
│   │   │   │   │   └── ionic-toggle/
│   │   │   │   │       ├── ionic-toggle-button.css
│   │   │   │   │       ├── ionic-toggle-button.js
│   │   │   │   │       ├── ionic-toggle-button.scss
│   │   │   │   │       ├── ionic-toggle-tab.js
│   │   │   │   │       ├── ionic-toggle.css
│   │   │   │   │       ├── ionic-toggle.js
│   │   │   │   │       └── ionic-toggle.scss
│   │   │   │   ├── index.js
│   │   │   │   └── interface.js
│   │   │   ├── esm/
│   │   │   │   ├── es2017/
│   │   │   │   │   ├── build/
│   │   │   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   │   │   ├── cetridhp.entry.js
│   │   │   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   │   │   ├── ehteibio.entry.js
│   │   │   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   │   │   ├── raorzqti.entry.js
│   │   │   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   │   │   └── z7r5cewq.sc.entry.js
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── ionic-site-components.components.js
│   │   │   │   │   ├── ionic-site-components.core.js
│   │   │   │   │   └── ionic-site-components.define.js
│   │   │   │   ├── es5/
│   │   │   │   │   ├── build/
│   │   │   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   │   │   ├── cetridhp.entry.js
│   │   │   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   │   │   ├── ehteibio.entry.js
│   │   │   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   │   │   ├── raorzqti.entry.js
│   │   │   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   │   │   └── z7r5cewq.sc.entry.js
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── ionic-site-components.components.js
│   │   │   │   │   ├── ionic-site-components.core.js
│   │   │   │   │   ├── ionic-site-components.define.js
│   │   │   │   │   └── polyfills/
│   │   │   │   │       ├── array.js
│   │   │   │   │       ├── css-shim.js
│   │   │   │   │       ├── dom.js
│   │   │   │   │       ├── fetch.js
│   │   │   │   │       ├── map.js
│   │   │   │   │       ├── object.js
│   │   │   │   │       ├── promise.js
│   │   │   │   │       ├── string.js
│   │   │   │   │       ├── tslib.js
│   │   │   │   │       └── url.js
│   │   │   │   └── index.js
│   │   │   ├── index.js
│   │   │   ├── ionic-site-components/
│   │   │   │   ├── bubpozqb.entry.js
│   │   │   │   ├── bubpozqb.es5.entry.js
│   │   │   │   ├── bubpozqb.sc.entry.js
│   │   │   │   ├── bubpozqb.sc.es5.entry.js
│   │   │   │   ├── cetridhp.entry.js
│   │   │   │   ├── cetridhp.es5.entry.js
│   │   │   │   ├── cetridhp.sc.entry.js
│   │   │   │   ├── cetridhp.sc.es5.entry.js
│   │   │   │   ├── cz7vrrja.entry.js
│   │   │   │   ├── cz7vrrja.es5.entry.js
│   │   │   │   ├── cz7vrrja.sc.entry.js
│   │   │   │   ├── cz7vrrja.sc.es5.entry.js
│   │   │   │   ├── ehteibio.entry.js
│   │   │   │   ├── ehteibio.es5.entry.js
│   │   │   │   ├── ehteibio.sc.entry.js
│   │   │   │   ├── ehteibio.sc.es5.entry.js
│   │   │   │   ├── hclgi8iu.entry.js
│   │   │   │   ├── hclgi8iu.es5.entry.js
│   │   │   │   ├── hclgi8iu.sc.entry.js
│   │   │   │   ├── hclgi8iu.sc.es5.entry.js
│   │   │   │   ├── index.es5.js
│   │   │   │   ├── index.js
│   │   │   │   ├── ionic-site-components.ftjdmnjq.js
│   │   │   │   ├── ionic-site-components.guhwuz8o.js
│   │   │   │   ├── lo9utgpp.entry.js
│   │   │   │   ├── lo9utgpp.es5.entry.js
│   │   │   │   ├── lo9utgpp.sc.entry.js
│   │   │   │   ├── lo9utgpp.sc.es5.entry.js
│   │   │   │   ├── m0trkizf.entry.js
│   │   │   │   ├── m0trkizf.es5.entry.js
│   │   │   │   ├── m0trkizf.sc.entry.js
│   │   │   │   ├── m0trkizf.sc.es5.entry.js
│   │   │   │   ├── nrj8jyt7.entry.js
│   │   │   │   ├── nrj8jyt7.es5.entry.js
│   │   │   │   ├── nrj8jyt7.sc.entry.js
│   │   │   │   ├── nrj8jyt7.sc.es5.entry.js
│   │   │   │   ├── raorzqti.entry.js
│   │   │   │   ├── raorzqti.es5.entry.js
│   │   │   │   ├── raorzqti.sc.entry.js
│   │   │   │   ├── raorzqti.sc.es5.entry.js
│   │   │   │   ├── svg/
│   │   │   │   │   ├── index.esm.d.ts
│   │   │   │   │   ├── index.esm.js
│   │   │   │   │   └── index.js
│   │   │   │   ├── uy47nvwg.entry.js
│   │   │   │   ├── uy47nvwg.es5.entry.js
│   │   │   │   ├── uy47nvwg.sc.entry.js
│   │   │   │   ├── uy47nvwg.sc.es5.entry.js
│   │   │   │   ├── uyiaiqzf.entry.js
│   │   │   │   ├── uyiaiqzf.es5.entry.js
│   │   │   │   ├── uyiaiqzf.sc.entry.js
│   │   │   │   ├── uyiaiqzf.sc.es5.entry.js
│   │   │   │   ├── z7r5cewq.entry.js
│   │   │   │   ├── z7r5cewq.es5.entry.js
│   │   │   │   ├── z7r5cewq.sc.entry.js
│   │   │   │   └── z7r5cewq.sc.es5.entry.js
│   │   │   ├── ionic-site-components.js
│   │   │   ├── loader/
│   │   │   │   ├── index.cjs.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.es2017.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── svg/
│   │   │   │   ├── index.esm.d.ts
│   │   │   │   ├── index.esm.js
│   │   │   │   └── index.js
│   │   │   ├── types/
│   │   │   │   ├── components/
│   │   │   │   │   ├── icon-external/
│   │   │   │   │   │   └── icon-external.d.ts
│   │   │   │   │   ├── ionic-appflow-activatior/
│   │   │   │   │   │   └── ionic-appflow-activatior.d.ts
│   │   │   │   │   ├── ionic-bar-chart/
│   │   │   │   │   │   └── ionic-bar-chart.d.ts
│   │   │   │   │   ├── ionic-button/
│   │   │   │   │   │   └── ionic-button.d.ts
│   │   │   │   │   ├── ionic-newsletter-signup/
│   │   │   │   │   │   ├── ico-email.d.ts
│   │   │   │   │   │   └── ionic-newsletter-signup.d.ts
│   │   │   │   │   ├── ionic-quick-signup/
│   │   │   │   │   │   └── ionic-quick-signup.d.ts
│   │   │   │   │   ├── ionic-search/
│   │   │   │   │   │   ├── arrow.svg.d.ts
│   │   │   │   │   │   └── ionic-search.d.ts
│   │   │   │   │   ├── ionic-slider/
│   │   │   │   │   │   └── ionic-slider.d.ts
│   │   │   │   │   ├── ionic-snap-bar/
│   │   │   │   │   │   └── ionic-snap-bar.d.ts
│   │   │   │   │   └── ionic-toggle/
│   │   │   │   │       ├── ionic-toggle-button.d.ts
│   │   │   │   │       ├── ionic-toggle-tab.d.ts
│   │   │   │   │       └── ionic-toggle.d.ts
│   │   │   │   ├── components.d.ts
│   │   │   │   ├── index.d.ts
│   │   │   │   └── stencil.core.d.ts
│   │   │   └── web-components.json
│   │   └── v2site.js
│   ├── manifest.json
│   ├── present-ionic/
│   │   ├── animate.css
│   │   ├── index.html
│   │   ├── slides/
│   │   │   ├── css/
│   │   │   │   ├── ionic.css
│   │   │   │   └── print/
│   │   │   │       ├── paper.css
│   │   │   │       └── pdf.css
│   │   │   ├── demos/
│   │   │   │   ├── actionsheet/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── collection-repeat/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── list/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── index.js
│   │   │   │   ├── modal/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── navigation/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── page1.html
│   │   │   │   │       ├── page2.html
│   │   │   │   │       └── page3.html
│   │   │   │   ├── popover/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── pull-to-refresh/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── style.css
│   │   │   │   ├── sidemenu/
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── attendees.html
│   │   │   │   │       ├── check-in.html
│   │   │   │   │       ├── event-menu.html
│   │   │   │   │       └── home.html
│   │   │   │   ├── slidebox/
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── style.css
│   │   │   │   └── tabs/
│   │   │   │       ├── index.html
│   │   │   │       ├── index.js
│   │   │   │       └── templates/
│   │   │   │           ├── about.html
│   │   │   │           ├── contact.html
│   │   │   │           ├── facts.html
│   │   │   │           ├── facts2.html
│   │   │   │           ├── home.html
│   │   │   │           └── nav-stack.html
│   │   │   ├── index.html
│   │   │   ├── ionic/
│   │   │   │   ├── css/
│   │   │   │   │   └── ionic.css
│   │   │   │   ├── js/
│   │   │   │   │   ├── angular/
│   │   │   │   │   │   ├── angular-animate.js
│   │   │   │   │   │   ├── angular-resource.js
│   │   │   │   │   │   ├── angular-sanitize.js
│   │   │   │   │   │   └── angular.js
│   │   │   │   │   ├── angular-ui/
│   │   │   │   │   │   └── angular-ui-router.js
│   │   │   │   │   ├── ionic-angular.js
│   │   │   │   │   ├── ionic.bundle.js
│   │   │   │   │   └── ionic.js
│   │   │   │   └── version.json
│   │   │   ├── lib/
│   │   │   │   ├── css/
│   │   │   │   │   └── zenburn.css
│   │   │   │   └── js/
│   │   │   │       ├── classList.js
│   │   │   │       └── html5shiv.js
│   │   │   └── plugin/
│   │   │       ├── highlight/
│   │   │       │   └── highlight.js
│   │   │       └── print-pdf/
│   │   │           └── print-pdf.js
│   │   └── style.css
│   ├── public_html/
│   │   └── css/
│   │       └── site.css
│   ├── robots.txt
│   ├── scss/
│   │   ├── _demos.scss
│   │   ├── _docs-api.scss
│   │   ├── _docs.scss
│   │   ├── _fonts.scss
│   │   ├── _footer.scss
│   │   ├── _forms.scss
│   │   ├── _getting-started.scss
│   │   ├── _guide.scss
│   │   ├── _header.scss
│   │   ├── _input-types.scss
│   │   ├── _news.scss
│   │   ├── _products.scss
│   │   ├── _showcase.scss
│   │   ├── _syntax.scss
│   │   ├── _testimonials.scss
│   │   ├── _tutorials.scss
│   │   ├── _type.scss
│   │   ├── _v2.scss
│   │   ├── _what-is.scss
│   │   ├── bootstrap/
│   │   │   ├── _alerts.scss
│   │   │   ├── _badges.scss
│   │   │   ├── _breadcrumbs.scss
│   │   │   ├── _button-groups.scss
│   │   │   ├── _buttons.scss
│   │   │   ├── _carousel.scss
│   │   │   ├── _close.scss
│   │   │   ├── _code.scss
│   │   │   ├── _component-animations.scss
│   │   │   ├── _dropdowns.scss
│   │   │   ├── _forms.scss
│   │   │   ├── _glyphicons.scss
│   │   │   ├── _grid.scss
│   │   │   ├── _input-groups.scss
│   │   │   ├── _jumbotron.scss
│   │   │   ├── _labels.scss
│   │   │   ├── _list-group.scss
│   │   │   ├── _media.scss
│   │   │   ├── _mixins.scss
│   │   │   ├── _modals.scss
│   │   │   ├── _navbar.scss
│   │   │   ├── _navs.scss
│   │   │   ├── _normalize.scss
│   │   │   ├── _pager.scss
│   │   │   ├── _pagination.scss
│   │   │   ├── _panels.scss
│   │   │   ├── _popovers.scss
│   │   │   ├── _print.scss
│   │   │   ├── _progress-bars.scss
│   │   │   ├── _responsive-utilities.scss
│   │   │   ├── _scaffolding.scss
│   │   │   ├── _tables.scss
│   │   │   ├── _theme.scss
│   │   │   ├── _thumbnails.scss
│   │   │   ├── _tooltip.scss
│   │   │   ├── _type.scss
│   │   │   ├── _utilities.scss
│   │   │   ├── _variables.scss
│   │   │   ├── _wells.scss
│   │   │   └── bootstrap.scss
│   │   ├── ionic/
│   │   │   └── _ionic.scss
│   │   ├── site.css
│   │   └── site.scss
│   └── sitemap.xml
├── debug.log
├── package.json
├── scripts/
│   ├── deploy_staging.sh
│   ├── gulp-tasks.js
│   ├── linkchecker.sh
│   ├── prepare.sh
│   ├── preview-app/
│   │   └── webpack.config.js
│   ├── sitemappings.json
│   └── test.sh
├── server/
│   ├── config.js
│   ├── controllers/
│   │   ├── contactCtrl.js
│   │   ├── getformCtrl.js
│   │   ├── hsblockedCtrl.js
│   │   ├── hsconvertedCtrl.js
│   │   ├── newsletterCtrl.js
│   │   └── viewCtrl.js
│   ├── markdown/
│   │   ├── code-of-conduct.md
│   │   ├── corona.md
│   │   ├── enterprise-license-agreement.md
│   │   ├── pr-1704222-latest-version-of-ionic-provides-universal-design-system-for-enterprises.md
│   │   ├── pr-170725-dev-survey-says-the-web-is-wi.md
│   │   ├── pr-171206-ionic-brings-powerful-app-dev.md
│   │   ├── pr-capacitor-adds-support-for-swift-5-and-android-10-securty-performance.md
│   │   ├── pr-ionic-5-brings-major-design-updates.md
│   │   ├── pr-ionic-achieves-record-revenue-growth-in-2019.md
│   │   ├── pr-ionic-alan-announce-integration.md
│   │   ├── pr-ionic-framework-4-release.md
│   │   ├── privacy-policy.md
│   │   └── tos.md
│   ├── markdown.js
│   ├── pageNotFound.js
│   ├── pages/
│   │   ├── 404.html
│   │   ├── _includes/
│   │   │   ├── footer.html
│   │   │   ├── head.html
│   │   │   ├── header.html
│   │   │   ├── header_nav.html
│   │   │   ├── logo_svg.html
│   │   │   ├── macros.html
│   │   │   ├── mixpanel.html
│   │   │   ├── mobile_nav.html
│   │   │   ├── pre_footer.html
│   │   │   ├── promos/
│   │   │   │   ├── card-auth-connect.html
│   │   │   │   ├── card-identity-vault.html
│   │   │   │   ├── card-offline-storage.html
│   │   │   │   ├── data-sheet-offline-storage.html
│   │   │   │   ├── evaluating-ionic-for-enterprise.html
│   │   │   │   ├── how-to-get-started.html
│   │   │   │   ├── hybrid-vs-native.html
│   │   │   │   ├── ioniconf.html
│   │   │   │   ├── newsletter-signup.html
│   │   │   │   ├── pwa-architects-guide.html
│   │   │   │   ├── pwa-frameworks.html
│   │   │   │   ├── quad-cta.html
│   │   │   │   ├── rethinking-low-code.html
│   │   │   │   ├── start-enterprise.html
│   │   │   │   ├── start-shipping.html
│   │   │   │   ├── state-of-app-dev-2020.html
│   │   │   │   ├── tri-cta.html
│   │   │   │   └── why-hybrid.html
│   │   │   ├── scripts.html
│   │   │   └── svg/
│   │   │       ├── advisory-icon.html
│   │   │       ├── appflow-icon.html
│   │   │       ├── enterprise-edition-icon.html
│   │   │       ├── ionic-blue.html
│   │   │       ├── ionic-grey.html
│   │   │       ├── ionic-navy.html
│   │   │       ├── ionic-purple.html
│   │   │       ├── ionic-salmon.html
│   │   │       ├── studio-icon.html
│   │   │       ├── survey-2018-bars.html
│   │   │       └── survey-2018-cubes.html
│   │   ├── _layouts/
│   │   │   ├── base.html
│   │   │   ├── blank.html
│   │   │   ├── creator.html
│   │   │   └── enterprise.html
│   │   ├── angular.html
│   │   ├── contributors.html
│   │   ├── creator/
│   │   │   ├── index.html
│   │   │   └── support.html
│   │   ├── developers.html
│   │   ├── ds.html
│   │   ├── early-access.html
│   │   ├── enterprise/
│   │   │   └── solutions/
│   │   │       ├── cross-platform.html
│   │   │       └── index.html
│   │   ├── getting-started-with-ionic-vue.html
│   │   ├── go/
│   │   │   ├── pwa-architects-guide/
│   │   │   │   ├── index.html
│   │   │   │   └── thank-you.html
│   │   │   └── why-hybrid/
│   │   │       ├── index.html
│   │   │       └── thank-you.html
│   │   ├── ioniconf-2020.html
│   │   ├── native.html
│   │   ├── pro/
│   │   │   └── contact.html
│   │   ├── react.html
│   │   ├── start.html
│   │   ├── stencil-jamstack2021.html
│   │   ├── subscribe.html
│   │   ├── survey/
│   │   │   ├── 2017.html
│   │   │   ├── 2018.html
│   │   │   └── 2020.html
│   │   ├── translate.html
│   │   ├── values.html
│   │   ├── verification/
│   │   │   ├── failed.html
│   │   │   └── success.html
│   │   └── vue.html
│   ├── prismic.js
│   ├── processRequest.js
│   ├── router.js
│   ├── tools.js
│   └── well-known/
│       └── openid-configuration.js
├── server.js
├── stencil.config.js
└── tsconfig.json
Download .txt
Showing preview only (509K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5954 symbols across 252 files)

FILE: Gulpfile.js
  function cacheBust (line 33) | function cacheBust(path, fileName) {
  function bustCacheAndReload (line 52) | function bustCacheAndReload(done) {
  function restartAndReload (line 61) | function restartAndReload(done) {
  function justReload (line 69) | function justReload(done) {

FILE: assets/js/analytics.js
  function linker (line 12) | function linker() {
  function getQuerystringParameter (line 68) | function getQuerystringParameter(name, querystring) {
  function updateQuerystringParameter (line 75) | function updateQuerystringParameter(uri, key, value) {

FILE: assets/js/highlight.js
  function escape (line 24) | function escape(value) {
  function tag (line 28) | function tag(node) {
  function testRe (line 32) | function testRe(re, lexeme) {
  function isNotHighlighted (line 37) | function isNotHighlighted(language) {
  function blockLanguage (line 41) | function blockLanguage(block) {
  function inherit (line 61) | function inherit(parent, obj) {
  function nodeStream (line 73) | function nodeStream(node) {
  function mergeStreams (line 103) | function mergeStreams(original, highlighted, value) {
  function compileLanguage (line 178) | function compileLanguage(language) {
  function highlight (line 280) | function highlight(name, value, ignore_illegals, continuation) {
  function highlightAuto (line 497) | function highlightAuto(text, languageSubset) {
  function fixMarkup (line 531) | function fixMarkup(value) {
  function buildClassName (line 543) | function buildClassName(prevClassName, currentLang, resultLang) {
  function highlightBlock (line 562) | function highlightBlock(block) {
  function configure (line 609) | function configure(user_options) {
  function initHighlighting (line 616) | function initHighlighting() {
  function initHighlightingOnLoad (line 628) | function initHighlightingOnLoad() {
  function registerLanguage (line 636) | function registerLanguage(name, language) {
  function listLanguages (line 643) | function listLanguages() {
  function getLanguage (line 647) | function getLanguage(name) {

FILE: assets/js/utils.js
  function s4 (line 110) | function s4() {
  function init (line 124) | function init() {
  function addEventHandlers (line 140) | function addEventHandlers() {
  function checkPosition (line 144) | function checkPosition() {
  function tick (line 313) | function tick() {
  function render (line 384) | function render() {
  function firstPlay (line 411) | function firstPlay () {
  function play (line 416) | function play () {
  function pause (line 427) | function pause () {
  function checkScroll (line 433) | function checkScroll() {
  function checkViewport (line 447) | function checkViewport() {

FILE: assets/stencil/components.d.ts
  type AdditionalResources (line 13) | interface AdditionalResources {
  type AngularComponents (line 16) | interface AngularComponents {
  type AuthConnectPromo (line 19) | interface AuthConnectPromo {
  type BarChart (line 21) | interface BarChart {
  type EbookSwitcher (line 25) | interface EbookSwitcher {
  type HomeComponents (line 28) | interface HomeComponents {
  type HomeCountdown (line 30) | interface HomeCountdown {
  type HomeNative (line 33) | interface HomeNative {
  type HubspotDynamicContent (line 35) | interface HubspotDynamicContent {
  type HubspotForm (line 38) | interface HubspotForm {
  type IconExternal (line 46) | interface IconExternal {
  type IonicAppWizard (line 48) | interface IonicAppWizard {
  type IonicAppflowActivator (line 50) | interface IonicAppflowActivator {
  type IonicBarChart (line 52) | interface IonicBarChart {
  type IonicButton (line 56) | interface IonicButton {
  type IonicEmojiPicker (line 61) | interface IonicEmojiPicker {
  type IonicNewsletterSignup (line 65) | interface IonicNewsletterSignup {
  type IonicReactDemo (line 75) | interface IonicReactDemo {
  type IonicSearch (line 77) | interface IonicSearch {
  type IonicSlider (line 80) | interface IonicSlider {
  type IonicSnapBar (line 82) | interface IonicSnapBar {
  type IonicSubHeader (line 84) | interface IonicSubHeader {
  type IonicSwitcher (line 87) | interface IonicSwitcher {
  type IonicToggle (line 91) | interface IonicToggle {
  type IonicToggleButton (line 93) | interface IonicToggleButton {
  type IonicToggleTab (line 99) | interface IonicToggleTab {
  type ReactCapacitor (line 104) | interface ReactCapacitor {
  type ReactComponents (line 107) | interface ReactComponents {
  type TwitterScript (line 110) | interface TwitterScript {
  type UiFloatingInput (line 112) | interface UiFloatingInput {
  type UiTip (line 126) | interface UiTip {
  type VueComponents (line 131) | interface VueComponents {
  type HTMLAdditionalResourcesElement (line 136) | interface HTMLAdditionalResourcesElement extends Components.AdditionalRe...
  type HTMLAngularComponentsElement (line 142) | interface HTMLAngularComponentsElement extends Components.AngularCompone...
  type HTMLAuthConnectPromoElement (line 148) | interface HTMLAuthConnectPromoElement extends Components.AuthConnectProm...
  type HTMLBarChartElement (line 154) | interface HTMLBarChartElement extends Components.BarChart, HTMLStencilEl...
  type HTMLEbookSwitcherElement (line 160) | interface HTMLEbookSwitcherElement extends Components.EbookSwitcher, HTM...
  type HTMLHomeComponentsElement (line 166) | interface HTMLHomeComponentsElement extends Components.HomeComponents, H...
  type HTMLHomeCountdownElement (line 172) | interface HTMLHomeCountdownElement extends Components.HomeCountdown, HTM...
  type HTMLHomeNativeElement (line 178) | interface HTMLHomeNativeElement extends Components.HomeNative, HTMLStenc...
  type HTMLHubspotDynamicContentElement (line 184) | interface HTMLHubspotDynamicContentElement extends Components.HubspotDyn...
  type HTMLHubspotFormElement (line 190) | interface HTMLHubspotFormElement extends Components.HubspotForm, HTMLSte...
  type HTMLIconExternalElement (line 196) | interface HTMLIconExternalElement extends Components.IconExternal, HTMLS...
  type HTMLIonicAppWizardElement (line 202) | interface HTMLIonicAppWizardElement extends Components.IonicAppWizard, H...
  type HTMLIonicAppflowActivatorElement (line 208) | interface HTMLIonicAppflowActivatorElement extends Components.IonicAppfl...
  type HTMLIonicBarChartElement (line 214) | interface HTMLIonicBarChartElement extends Components.IonicBarChart, HTM...
  type HTMLIonicButtonElement (line 220) | interface HTMLIonicButtonElement extends Components.IonicButton, HTMLSte...
  type HTMLIonicEmojiPickerElement (line 226) | interface HTMLIonicEmojiPickerElement extends Components.IonicEmojiPicke...
  type HTMLIonicNewsletterSignupElement (line 232) | interface HTMLIonicNewsletterSignupElement extends Components.IonicNewsl...
  type HTMLIonicReactDemoElement (line 238) | interface HTMLIonicReactDemoElement extends Components.IonicReactDemo, H...
  type HTMLIonicSearchElement (line 244) | interface HTMLIonicSearchElement extends Components.IonicSearch, HTMLSte...
  type HTMLIonicSliderElement (line 250) | interface HTMLIonicSliderElement extends Components.IonicSlider, HTMLSte...
  type HTMLIonicSnapBarElement (line 256) | interface HTMLIonicSnapBarElement extends Components.IonicSnapBar, HTMLS...
  type HTMLIonicSubHeaderElement (line 262) | interface HTMLIonicSubHeaderElement extends Components.IonicSubHeader, H...
  type HTMLIonicSwitcherElement (line 268) | interface HTMLIonicSwitcherElement extends Components.IonicSwitcher, HTM...
  type HTMLIonicToggleElement (line 274) | interface HTMLIonicToggleElement extends Components.IonicToggle, HTMLSte...
  type HTMLIonicToggleButtonElement (line 280) | interface HTMLIonicToggleButtonElement extends Components.IonicToggleBut...
  type HTMLIonicToggleTabElement (line 286) | interface HTMLIonicToggleTabElement extends Components.IonicToggleTab, H...
  type HTMLReactCapacitorElement (line 292) | interface HTMLReactCapacitorElement extends Components.ReactCapacitor, H...
  type HTMLReactComponentsElement (line 298) | interface HTMLReactComponentsElement extends Components.ReactComponents,...
  type HTMLTwitterScriptElement (line 304) | interface HTMLTwitterScriptElement extends Components.TwitterScript, HTM...
  type HTMLUiFloatingInputElement (line 310) | interface HTMLUiFloatingInputElement extends Components.UiFloatingInput,...
  type HTMLUiTipElement (line 316) | interface HTMLUiTipElement extends Components.UiTip, HTMLStencilElement {
  type HTMLVueComponentsElement (line 322) | interface HTMLVueComponentsElement extends Components.VueComponents, HTM...
  type HTMLElementTagNameMap (line 328) | interface HTMLElementTagNameMap {
  type AdditionalResources (line 364) | interface AdditionalResources {
  type AngularComponents (line 367) | interface AngularComponents {
  type AuthConnectPromo (line 370) | interface AuthConnectPromo {
  type BarChart (line 372) | interface BarChart {
  type EbookSwitcher (line 376) | interface EbookSwitcher {
  type HomeComponents (line 379) | interface HomeComponents {
  type HomeCountdown (line 381) | interface HomeCountdown {
  type HomeNative (line 384) | interface HomeNative {
  type HubspotDynamicContent (line 386) | interface HubspotDynamicContent {
  type HubspotForm (line 389) | interface HubspotForm {
  type IconExternal (line 398) | interface IconExternal {
  type IonicAppWizard (line 400) | interface IonicAppWizard {
  type IonicAppflowActivator (line 402) | interface IonicAppflowActivator {
  type IonicBarChart (line 404) | interface IonicBarChart {
  type IonicButton (line 408) | interface IonicButton {
  type IonicEmojiPicker (line 413) | interface IonicEmojiPicker {
  type IonicNewsletterSignup (line 419) | interface IonicNewsletterSignup {
  type IonicReactDemo (line 429) | interface IonicReactDemo {
  type IonicSearch (line 431) | interface IonicSearch {
  type IonicSlider (line 434) | interface IonicSlider {
  type IonicSnapBar (line 436) | interface IonicSnapBar {
  type IonicSubHeader (line 438) | interface IonicSubHeader {
  type IonicSwitcher (line 441) | interface IonicSwitcher {
  type IonicToggle (line 445) | interface IonicToggle {
  type IonicToggleButton (line 447) | interface IonicToggleButton {
  type IonicToggleTab (line 452) | interface IonicToggleTab {
  type ReactCapacitor (line 455) | interface ReactCapacitor {
  type ReactComponents (line 458) | interface ReactComponents {
  type TwitterScript (line 461) | interface TwitterScript {
  type UiFloatingInput (line 463) | interface UiFloatingInput {
  type UiTip (line 476) | interface UiTip {
  type VueComponents (line 481) | interface VueComponents {
  type IntrinsicElements (line 484) | interface IntrinsicElements {
  type IntrinsicElements (line 522) | interface IntrinsicElements {

FILE: assets/stencil/components/additional-resources/additional-resources.tsx
  class AdditionalResources (line 10) | class AdditionalResources {
    method componentWillLoad (line 21) | async componentWillLoad() {
    method renderResource (line 50) | renderResource(resource) {
    method render (line 75) | render() {

FILE: assets/stencil/components/angular-components/angular-components.tsx
  type TabType (line 6) | type TabType = 'card' | 'lists' | 'actionSheet';
  class AngularComponents (line 13) | class AngularComponents {
    method handleTabChange (line 19) | handleTabChange() {
    method resizeIframe (line 23) | resizeIframe(el) {
    method render (line 40) | render() {
    method ionicInjector (line 83) | ionicInjector(code) {

FILE: assets/stencil/components/app-wizard/app-wizard.tsx
  constant TEMPLATES (line 11) | const TEMPLATES = [
  constant FRAMEWORKS (line 17) | const FRAMEWORKS = [
  constant THEMES (line 23) | const THEMES = [
  class AppWizard (line 43) | class AppWizard {
    method getRandomEmoji (line 84) | getRandomEmoji(): Emoji {
    method componentDidLoad (line 118) | async componentDidLoad() {
    method handlePopState (line 150) | handlePopState(e) {
    method renderBasics (line 393) | renderBasics() {
    method renderFinish (line 500) | renderFinish() {
    method renderStep (line 549) | renderStep() {
    method render (line 557) | render() {

FILE: assets/stencil/components/auth-connect-promo/auth-connect-promo.tsx
  class AuthConnectPromo (line 9) | class AuthConnectPromo {
    method componentWillLoad (line 39) | componentWillLoad() {
    method sequence (line 43) | sequence() {
    method checkScreenSize (line 59) | checkScreenSize() {
    method updateItemOffsets (line 175) | updateItemOffsets() {
    method render (line 181) | render() {

FILE: assets/stencil/components/bar-chart/bar-chart.tsx
  class BarChart (line 9) | class BarChart {
    method componentWillLoad (line 40) | componentWillLoad() {
    method render (line 111) | render() {

FILE: assets/stencil/components/ebook-switcher/ebook-switcher.tsx
  class EbookSwitcher (line 9) | class EbookSwitcher {
    method render (line 13) | render() {

FILE: assets/stencil/components/emoji-picker/emoji-picker.tsx
  type EmojiSet (line 5) | interface EmojiSet {
  type EmojiMap (line 13) | interface EmojiMap {
  type Emoji (line 17) | interface Emoji {
  type SkinVariation (line 42) | interface SkinVariation {
  type EmojiCategory (line 55) | interface EmojiCategory {
  class EmojiPicker (line 66) | class EmojiPicker {
    method componentWillLoad (line 84) | async componentWillLoad() {
    method openEventChange (line 151) | openEventChange() {
    method handleBodyClick (line 162) | handleBodyClick(e) {
    method getFilteredEmojis (line 194) | getFilteredEmojis() {
    method render (line 215) | render() {
  type CategoriesProps (line 248) | interface CategoriesProps {
  type SearchProps (line 270) | interface SearchProps {
  type EmojisProps (line 297) | interface EmojisProps {

FILE: assets/stencil/components/home-components/home-components.tsx
  class HomeComponents (line 19) | class HomeComponents {
    method constructor (line 23) | constructor() {
    method componentWillLoad (line 26) | componentWillLoad() {
    method componentDidLoad (line 29) | componentDidLoad() {
    method resizeIframe (line 32) | resizeIframe(el) {
    method render (line 40) | render() {
    method ionicInjector (line 96) | ionicInjector(code) {

FILE: assets/stencil/components/home-countdown/home-countdown.tsx
  class HomeCountdown (line 9) | class HomeCountdown {
    method componentWillLoad (line 18) | componentWillLoad() {
    method update (line 23) | update() {
    method render (line 35) | render() {

FILE: assets/stencil/components/home-native/home-native.tsx
  class HomeNative (line 19) | class HomeNative {
    method constructor (line 22) | constructor() {
    method componentWillLoad (line 25) | componentWillLoad() {
    method componentDidLoad (line 28) | componentDidLoad() {
    method render (line 32) | render() {

FILE: assets/stencil/components/hubspot-dynamic-content/hubspot-dynamic-content.tsx
  class HubspotDynamicContent (line 8) | class HubspotDynamicContent {
    method componentWillLoad (line 16) | async componentWillLoad() {
    method render (line 32) | render() {

FILE: assets/stencil/components/hubspot-form/hubspot-form.tsx
  class HubspotForm (line 20) | class HubspotForm {
    method componentDidLoad (line 35) | componentDidLoad() {
    method handleWindowMessage (line 43) | handleWindowMessage(e: MessageEvent) {
    method render (line 129) | render() {

FILE: assets/stencil/components/icon-external/icon-external.tsx
  class IconExternal (line 8) | class IconExternal {
    method render (line 9) | render() {

FILE: assets/stencil/components/ionic-appflow-activatior/ionic-appflow-activatior.tsx
  class IonicAppflowActivator (line 38) | class IonicAppflowActivator {
    method componentDidLoad (line 48) | componentDidLoad() {
    method start (line 53) | start() {
    method override (line 69) | override(index) {
    method increment (line 75) | increment(index?) {
    method onScroll (line 91) | onScroll() {
    method render (line 106) | render() {

FILE: assets/stencil/components/ionic-bar-chart/ionic-bar-chart.tsx
  class IonicBarChart (line 14) | class IonicBarChart {
    method constructor (line 18) | constructor() {
    method componentWillLoad (line 21) | componentWillLoad() {
    method componentDidLoad (line 24) | componentDidLoad() {
    method hexToRgb (line 27) | hexToRgb(hex) {
    method prepareData (line 40) | prepareData() {
    method render (line 74) | render() {

FILE: assets/stencil/components/ionic-button/ionic-button.tsx
  class IonicButton (line 8) | class IonicButton {
    method render (line 14) | render() {

FILE: assets/stencil/components/ionic-newsletter-signup/ionic-newsletter-signup.tsx
  class IonicNewsletterSignup (line 9) | class IonicNewsletterSignup {
    method handleEmailChange (line 31) | handleEmailChange(event) {
    method handleSubmit (line 35) | handleSubmit(e) {
    method hubspotIdentify (line 53) | hubspotIdentify(email: string) {
    method getFormClass (line 94) | getFormClass() {
    method render (line 108) | render() {

FILE: assets/stencil/components/ionic-search/ionic-search.tsx
  class IonicSearch (line 17) | class IonicSearch {
    method constructor (line 45) | constructor() {
    method activate (line 60) | activate() {
    method close (line 68) | close() {
    method onKeyUp (line 78) | async onKeyUp(e) {
    method touchStart (line 97) | touchStart(e) {
    method touchMove (line 104) | touchMove(e) {
    method isFirefox (line 120) | isFirefox() {
    method touchEnd (line 124) | touchEnd() {
    method render (line 133) | render() {

FILE: assets/stencil/components/ionic-slider/ionic-slider.tsx
  class IonicSlider (line 8) | class IonicSlider {
    method constructor (line 21) | constructor() {
    method componentDidLoad (line 37) | componentDidLoad() {
    method getClasses (line 72) | getClasses(item) {
    method render (line 80) | render() {

FILE: assets/stencil/components/ionic-snap-bar/ionic-snap-bar.tsx
  class IonicSnapBar (line 8) | class IonicSnapBar {
    method componentDidLoad (line 12) | componentDidLoad() {
    method close (line 18) | close() {
    method render (line 22) | render() {

FILE: assets/stencil/components/ionic-sub-header/ionic-sub-header.tsx
  class IonicSubHeader (line 9) | class IonicSubHeader {
    method constructor (line 20) | constructor() {
    method getTriggerEl (line 24) | getTriggerEl() {
    method componentDidLoad (line 31) | componentDidLoad() {
    method init (line 39) | init() {
    method handleMobileToggleClick (line 72) | handleMobileToggleClick() {
    method render (line 76) | render() {

FILE: assets/stencil/components/ionic-switcher/ionic-switcher.tsx
  class IonicSwitcher (line 8) | class IonicSwitcher {
    method render (line 12) | render() {

FILE: assets/stencil/components/ionic-toggle/ionic-toggle-button.tsx
  class IonicToggleButton (line 8) | class IonicToggleButton {
    method deselect (line 17) | deselect() {
    method select (line 22) | select() {
    method handleSelected (line 26) | handleSelected() {
    method hostData (line 30) | hostData() {
    method render (line 38) | render() {

FILE: assets/stencil/components/ionic-toggle/ionic-toggle-tab.tsx
  class IonicToggleTab (line 9) | class IonicToggleTab {
    method hide (line 15) | hide() {
    method show (line 20) | show() {
    method hostData (line 24) | hostData() {
    method render (line 32) | render() {

FILE: assets/stencil/components/ionic-toggle/ionic-toggle.tsx
  class IonicToggle (line 10) | class IonicToggle {
    method componentDidLoad (line 14) | componentDidLoad() {
    method selectionChanged (line 18) | selectionChanged(e: any) {
    method render (line 40) | render() {

FILE: assets/stencil/components/react-capacitor/react-capacitor.tsx
  type TabType (line 6) | type TabType = 'notifications' | 'camera' | 'geolocation';
  class ReactCapacitor (line 13) | class ReactCapacitor {
    method constructor (line 17) | constructor() {}
    method handleTabChange (line 20) | handleTabChange() {
    method componentWillLoad (line 24) | componentWillLoad() {}
    method componentDidLoad (line 26) | componentDidLoad() {}
    method render (line 28) | render() {

FILE: assets/stencil/components/react-components/react-components.tsx
  type TabType (line 15) | type TabType = 'card' | 'lists' | 'actionSheet';
  class ReactComponents (line 22) | class ReactComponents {
    method constructor (line 27) | constructor() {
    method handleTabChange (line 31) | handleTabChange() {
    method componentWillLoad (line 35) | componentWillLoad() {
    method componentDidLoad (line 38) | componentDidLoad() {
    method resizeIframe (line 41) | resizeIframe(el) {
    method render (line 59) | render() {
    method ionicInjector (line 92) | ionicInjector(code) {

FILE: assets/stencil/components/react-demo/react-demo.tsx
  class IonicReactDemo (line 7) | class IonicReactDemo {
    method componentDidLoad (line 10) | componentDidLoad() {
    method render (line 13) | render() {

FILE: assets/stencil/components/twitter-script/twitter-script.tsx
  class TwitterScript (line 7) | class TwitterScript {
    method componentDidLoad (line 10) | componentDidLoad() {
    method componentDidUnload (line 37) | componentDidUnload() {
    method render (line 41) | render() {

FILE: assets/stencil/components/ui/floating-input/floating-input.tsx
  class FloatingInput (line 8) | class FloatingInput {
    method setFocus (line 24) | async setFocus(focused) {
    method render (line 57) | render() {

FILE: assets/stencil/components/ui/tip/tip.tsx
  class UiTip (line 16) | class UiTip {
    method handleMouseEnter (line 25) | handleMouseEnter() {
    method handleMouseLeave (line 34) | handleMouseLeave() {
    method getBounds (line 38) | getBounds(element: Element): ClientRect {
    method hostData (line 42) | hostData() {
    method render (line 62) | render() {

FILE: assets/stencil/components/vue-components/vue-components.tsx
  type TabType (line 6) | type TabType = "card" | "lists" | "actionSheet";
  class VueComponents (line 13) | class VueComponents {
    method handleTabChange (line 19) | handleTabChange() {
    method resizeIframe (line 23) | resizeIframe(el) {
    method render (line 40) | render() {
    method ionicInjector (line 83) | ionicInjector(code) {

FILE: assets/stencil/declarations.ts
  type Window (line 2) | interface Window {
  type UserInfo (line 15) | interface UserInfo {

FILE: assets/stencil/util/auth.ts
  type SignupForm (line 5) | interface SignupForm {
  type LoginForm (line 12) | interface LoginForm {

FILE: assets/stencil/util/common.ts
  function slugify (line 54) | function slugify(text: string) {

FILE: assets/stencil/util/hubspot.ts
  type HubspotTrackEventArgs (line 3) | interface HubspotTrackEventArgs {

FILE: content/dist/bundles/ionic.system.js
  function defineProperties (line 258) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Ion (line 268) | function Ion(elementRef, config) {
  function defineProperties (line 367) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 369) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function insertEffects (line 371) | function insertEffects(effects, fromEffect, toEffect, easingConfig) {
  function parseEffect (line 401) | function parseEffect(inputEffect) {
  function convertProperties (line 420) | function convertProperties(inputEffect) {
  function inlineStyle (line 439) | function inlineStyle(ele, effect) {
  function roundValue (line 458) | function roundValue(val) {
  function parallel (line 462) | function parallel(tasks, done) {
  function Animation (line 488) | function Animation(ele) {
  function beginPlay (line 665) | function beginPlay(beginPlayDone) {
  function copy (line 915) | function copy(dest, src) {
  function Animate (line 1021) | function Animate(ele, fromEffect, toEffect, duration, easingConfig, play...
  function _classCallCheck (line 1246) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 1248) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function SlideIn (line 1258) | function SlideIn(element) {
  function SlideOut (line 1273) | function SlideOut(element) {
  function FadeIn (line 1288) | function FadeIn(element) {
  function FadeOut (line 1303) | function FadeOut(element) {
  function _classCallCheck (line 1324) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 1326) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function IOSTransition (line 1346) | function IOSTransition(enteringView, leavingView, opts) {
  function _classCallCheck (line 1475) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 1477) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function MDTransition (line 1492) | function MDTransition(enteringView, leavingView, opts) {
  function defineProperties (line 1545) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 1547) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function easeOutCubic (line 1550) | function easeOutCubic(t) {
  function ScrollTo (line 1559) | function ScrollTo(ele, x, y, duration) {
  function step (line 1609) | function step() {
  function ionicProviders (line 1667) | function ionicProviders() {
  function setupDom (line 1691) | function setupDom(window, document, config, platform, clickBlock, featur...
  function bindEvents (line 1736) | function bindEvents(window, document, platform, events) {
  function defineProperties (line 1900) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 1902) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Config (line 1915) | function Config(config) {
  function App (line 2355) | function App() {
  function ConfigComponent (line 2410) | function ConfigComponent(config) {
  function appendConfig (line 2419) | function appendConfig(cls, config) {
  function Page (line 2514) | function Page() {
  function defineProperties (line 2563) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 2565) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function insertSuperset (line 2567) | function insertSuperset(platformNode) {
  function Platform (line 2592) | function Platform() {
  function resolve (line 2735) | function resolve() {
  function PlatformNode (line 3190) | function PlatformNode(platformName) {
  function isIOSDevice (line 3310) | function isIOSDevice(p) {
  function isReady (line 3444) | function isReady() {
  function defineProperties (line 3510) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 3512) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Translate (line 3532) | function Translate() {
  function defineProperties (line 3600) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 3602) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function TranslatePipe (line 3625) | function TranslatePipe(translate) {
  function defineProperties (line 3661) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 3665) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 3667) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function DragGesture (line 3679) | function DragGesture(element) {
  function defineProperties (line 3740) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 3742) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Gesture (line 3752) | function Gesture(element) {
  function setTimeoutContext (line 3839) | function setTimeoutContext(fn, timeout, context) {
  function invokeArrayArg (line 3851) | function invokeArrayArg(arg, fn, context) {
  function each (line 3864) | function each(obj, iterator, context) {
  function extend (line 3891) | function extend(dest, src, merge) {
  function merge (line 3909) | function merge(dest, src) {
  function inherit (line 3918) | function inherit(child, base, properties) {
  function bindFn (line 3934) | function bindFn(fn, context) {
  function boolOrFn (line 3946) | function boolOrFn(val, args) {
  function ifUndefined (line 3958) | function ifUndefined(val1, val2) {
  function addEventListeners (line 3967) | function addEventListeners(target, types, handler) {
  function removeEventListeners (line 3979) | function removeEventListeners(target, types, handler) {
  function hasParent (line 3992) | function hasParent(node, parent) {
  function inStr (line 4007) | function inStr(str, find) {
  function splitStr (line 4015) | function splitStr(str) {
  function inArray (line 4025) | function inArray(src, find, findByKey) {
  function toArray (line 4044) | function toArray(obj) {
  function uniqueArray (line 4054) | function uniqueArray(src, key, sort) {
  function prefixed (line 4083) | function prefixed(obj, property) {
  function uniqueId (line 4102) | function uniqueId() {
  function getWindowForElement (line 4110) | function getWindowForElement(element) {
  function Input (line 4122) | function Input(manager, callback) {
  function createInputInstance (line 4144) | function createInputInstance(manager) {
  function inputHandler (line 4166) | function inputHandler(manager, eventType, input) {
  function computeInputData (line 4191) | function computeInputData(manager, input) {
  function computeDeltaXY (line 4225) | function computeDeltaXY(session, input) {
  function computeIntervalInputData (line 4248) | function computeIntervalInputData(session, input) {
  function simpleCloneInputData (line 4281) | function simpleCloneInputData(input) {
  function getCenter (line 4306) | function getCenter(pointers) {
  function getVelocity (line 4335) | function getVelocity(deltaTime, x, y) {
  function getDirection (line 4347) | function getDirection(x, y) {
  function getDistance (line 4363) | function getDistance(p1, p2, props) {
  function getAngle (line 4378) | function getAngle(p1, p2, props) {
  function getRotation (line 4392) | function getRotation(start, end) {
  function getScale (line 4402) | function getScale(start, end) {
  function MouseInput (line 4411) | function MouseInput() {
  function PointerEventInput (line 4424) | function PointerEventInput() {
  function SingleTouchInput (line 4436) | function SingleTouchInput() {
  function normalizeSingleTouches (line 4449) | function normalizeSingleTouches(ev, type) {
  function TouchInput (line 4463) | function TouchInput() {
  function getTouches (line 4475) | function getTouches(ev, type) {
  function TouchMouseInput (line 4528) | function TouchMouseInput() {
  function TouchAction (line 4542) | function TouchAction(manager, value) {
  function cleanTouchActions (line 4552) | function cleanTouchActions(actions) {
  function Recognizer (line 4607) | function Recognizer(options) {
  function stateStr (line 4623) | function stateStr(state) {
  function directionStr (line 4640) | function directionStr(direction) {
  function getRecognizerByNameIfManager (line 4658) | function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
  function AttrRecognizer (line 4670) | function AttrRecognizer() {
  function PanRecognizer (line 4680) | function PanRecognizer() {
  function PinchRecognizer (line 4692) | function PinchRecognizer() {
  function PressRecognizer (line 4702) | function PressRecognizer() {
  function RotateRecognizer (line 4714) | function RotateRecognizer() {
  function SwipeRecognizer (line 4724) | function SwipeRecognizer() {
  function TapRecognizer (line 4738) | function TapRecognizer() {
  function Hammer (line 4755) | function Hammer(element, options) {
  function Manager (line 4770) | function Manager(element, options) {
  function toggleCssProps (line 4793) | function toggleCssProps(manager, add) {
  function triggerDomEvent (line 4804) | function triggerDomEvent(event, data) {
  function emit (line 5234) | function emit(withState) {
  function defineProperties (line 5966) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 5970) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 5972) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function SlideEdgeGesture (line 5986) | function SlideEdgeGesture(element) {
  function defineProperties (line 6049) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6053) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 6055) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function SlideGesture (line 6067) | function SlideGesture(element) {
  function defineProperties (line 6171) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6173) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _show (line 6175) | function _show(expire) {
  function hide (line 6183) | function hide() {
  function ClickBlock (line 6204) | function ClickBlock() {
  function rafFrames (line 6299) | function rafFrames(framesToWait, callback) {
  function transitionEnd (line 6310) | function transitionEnd(el) {
  function animationStart (line 6314) | function animationStart(el, animationName) {
  function animationEnd (line 6318) | function animationEnd(el, animationName) {
  function cssPromise (line 6322) | function cssPromise(el, eventNames, animationName) {
  function ready (line 6348) | function ready(callback) {
  function windowLoad (line 6373) | function windowLoad(callback) {
  function pointerCoord (line 6396) | function pointerCoord(ev) {
  function hasPointerMoved (line 6411) | function hasPointerMoved(threshold, startCoord, endCoord) {
  function isActive (line 6415) | function isActive(ele) {
  function hasFocus (line 6419) | function hasFocus(ele) {
  function isTextInput (line 6423) | function isTextInput(ele) {
  function hasFocusedTextInput (line 6427) | function hasFocusedTextInput() {
  function closest (line 6435) | function closest(ele, selector, checkSelf) {
  function removeElement (line 6449) | function removeElement(ele) {
  function getDimensions (line 6453) | function getDimensions(ion, ele) {
  function windowDimensions (line 6480) | function windowDimensions() {
  function flushDimensionCache (line 6496) | function flushDimensionCache() {
  function isStaticPositioned (line 6500) | function isStaticPositioned(element) {
  function parentOffsetEl (line 6508) | function parentOffsetEl(element) {
  function position (line 6523) | function position(element) {
  function offset (line 6541) | function offset(element) {
  function defineProperties (line 6634) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6636) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Events (line 6656) | function Events() {
  function defineProperties (line 6763) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6765) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function FeatureDetect (line 6771) | function FeatureDetect() {
  function defineProperties (line 6846) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6848) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Form (line 6868) | function Form() {
  function defineProperties (line 6975) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 6977) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Keyboard (line 7006) | function Keyboard(config, form, zone) {
  function checkKeyboard (line 7077) | function checkKeyboard() {
  function cssClass (line 7133) | function cssClass() {
  function keyDown (line 7145) | function keyDown(ev) {
  function pointerDown (line 7151) | function pointerDown() {
  function enableKeyInput (line 7155) | function enableKeyInput() {
  function noop (line 7229) | function noop() {}
  function clamp (line 7239) | function clamp(min, n, max) {
  function extend (line 7243) | function extend(dst) {
  function merge (line 7247) | function merge(dst) {
  function _baseExtend (line 7251) | function _baseExtend(dst, objs, deep) {
  function debounce (line 7270) | function debounce(func, wait, immediate) {
  function defaults (line 7294) | function defaults(dest) {
  function pascalCaseToDashCase (line 7310) | function pascalCaseToDashCase() {
  function nextUid (line 7318) | function nextUid() {
  function getQuerystring (line 7327) | function getQuerystring(url, key) {
  function throttle (line 7345) | function throttle(func, wait, options) {
  function defineProperties (line 7532) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 7536) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 7538) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function ActionSheet (line 7574) | function ActionSheet() {
  function ActionSheetCmp (line 7644) | function ActionSheetCmp(_viewCtrl, _config, params, renderer) {
  function ActionSheetSlideIn (line 7734) | function ActionSheetSlideIn(enteringView, leavingView, opts) {
  function ActionSheetSlideOut (line 7754) | function ActionSheetSlideOut(enteringView, leavingView, opts) {
  function ActionSheetMdSlideIn (line 7774) | function ActionSheetMdSlideIn(enteringView, leavingView, opts) {
  function ActionSheetMdSlideOut (line 7794) | function ActionSheetMdSlideOut(enteringView, leavingView, opts) {
  function defineProperties (line 7918) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 7922) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 7924) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Alert (line 7962) | function Alert() {
  function AlertCmp (line 8051) | function AlertCmp(_viewCtrl, _elementRef, _config, params, renderer) {
  function AlertPopIn (line 8165) | function AlertPopIn(enteringView, leavingView, opts) {
  function AlertPopOut (line 8185) | function AlertPopOut(enteringView, leavingView, opts) {
  function AlertMdPopIn (line 8205) | function AlertMdPopIn(enteringView, leavingView, opts) {
  function AlertMdPopOut (line 8225) | function AlertMdPopOut(enteringView, leavingView, opts) {
  function defineProperties (line 8254) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 8256) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function IonicApp (line 8285) | function IonicApp(_config, _clickBlock, _zone) {
  function setAppTitle (line 8311) | function setAppTitle() {
  function defineProperties (line 8496) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 8498) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function IdRef (line 8523) | function IdRef(_app, _elementRef, _appViewManager) {
  function Attr (line 8575) | function Attr(_renderer, _elementRef) {
  function _classCallCheck (line 8625) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function defineProperties (line 8691) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 8693) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Button (line 8724) | function Button(config, _elementRef, _renderer, ionItem) {
  function defineProperties (line 8939) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 8941) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Checkbox (line 8976) | function Checkbox(_form, _elementRef, _renderer, ngControl) {
  function defineProperties (line 9148) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 9152) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 9154) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Content (line 9202) | function Content(elementRef, _config, viewCtrl, _app, _zone) {
  function next (line 9287) | function next() {
  function defineProperties (line 9531) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 9533) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Icon (line 9557) | function Icon(config, _elementRef, _renderer) {
  function defineProperties (line 9690) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 9694) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 9696) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function isItemActive (line 9698) | function isItemActive(ele, isActive) {
  function preventDefault (line 9702) | function preventDefault(ev) {
  function getItemConatiner (line 9706) | function getItemConatiner(ele) {
  function isFromOptionButtons (line 9709) | function isFromOptionButtons(ele) {
  function getOptionsWidth (line 9712) | function getOptionsWidth(itemContainerEle) {
  function isActive (line 9718) | function isActive(itemContainerEle) {
  function ItemSlidingGesture (line 9735) | function ItemSlidingGesture(list, listEle) {
  function defineProperties (line 9972) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 9974) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ItemSliding (line 10004) | function ItemSliding(_list, elementRef) {
  function defineProperties (line 10082) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10084) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Item (line 10109) | function Item() {
  function defineProperties (line 10170) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10172) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Label (line 10196) | function Label(_form, _elementRef, _renderer) {
  function defineProperties (line 10260) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10264) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 10266) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function List (line 10308) | function List(elementRef, config, zone) {
  function ListHeader (line 10438) | function ListHeader(_renderer, _elementRef, id) {
  function defineProperties (line 10473) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10475) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ListVirtualScroll (line 10481) | function ListVirtualScroll(list) {
  function defineProperties (line 10610) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10612) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function MenuClose (line 10636) | function MenuClose(_app) {
  function defineProperties (line 10674) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10678) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 10680) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function MenuContentGesture (line 10692) | function MenuContentGesture(menu, targetEl) {
  function TargetGesture (line 10756) | function TargetGesture(menu) {
  function LeftMenuGesture (line 10772) | function LeftMenuGesture(menu) {
  function RightMenuGesture (line 10786) | function RightMenuGesture(menu) {
  function defineProperties (line 10842) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 10844) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function MenuToggle (line 10880) | function MenuToggle(app, elementRef, viewCtrl, navbar) {
  function defineProperties (line 10947) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _inherits (line 10949) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function _classCallCheck (line 10951) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function MenuType (line 10961) | function MenuType() {
  function MenuRevealType (line 11046) | function MenuRevealType(menu) {
  function MenuPushType (line 11077) | function MenuPushType(menu) {
  function MenuOverlayType (line 11125) | function MenuOverlayType(menu) {
  function defineProperties (line 11254) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 11258) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 11260) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Menu (line 11306) | function Menu(elementRef, config, app, platform, keyboard, zone) {
  function MenuBackdrop (line 11677) | function MenuBackdrop(menu, elementRef) {
  function defineProperties (line 11782) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 11786) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 11788) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function Modal (line 11800) | function Modal(componentType) {
  function ModalSlideIn (line 11845) | function ModalSlideIn(enteringView, leavingView, opts) {
  function ModalSlideOut (line 11866) | function ModalSlideOut(enteringView, leavingView, opts) {
  function ModalMDSlideIn (line 11881) | function ModalMDSlideIn(enteringView, leavingView, opts) {
  function ModalMDSlideOut (line 11902) | function ModalMDSlideOut(enteringView, leavingView, opts) {
  function defineProperties (line 12009) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 12013) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 12015) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function NavController (line 12046) | function NavController(parentnavCtrl, app, config, keyboard, elementRef,...
  function NavParams (line 13469) | function NavParams(data) {
  function defineProperties (line 13551) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 13553) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function NavPush (line 13589) | function NavPush(nav, registry) {
  function NavPop (line 13663) | function NavPop(nav) {
  function defineProperties (line 13707) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 13709) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function NavRegistry (line 13715) | function NavRegistry() {
  function defineProperties (line 13752) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 13756) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 13758) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function NavRouter (line 13804) | function NavRouter(_elementRef, _loader, _parentRouter, nameAttr, nav) {
  function ResolvedInstruction (line 13902) | function ResolvedInstruction(component, child, auxInstruction) {
  function defineProperties (line 14021) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 14025) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 14027) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Nav (line 14073) | function Nav(hostNavCtrl, viewCtrl, app, config, keyboard, elementRef, c...
  function defineProperties (line 14125) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 14129) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 14131) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function OverlayController (line 14141) | function OverlayController(navCtrl, componentType) {
  function defineProperties (line 14235) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 14239) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 14241) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function SwipeBackGesture (line 14251) | function SwipeBackGesture(element, opts, navCtrl) {
  function defineProperties (line 14309) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 14311) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ctrlFn (line 14313) | function ctrlFn(viewCtrl, fnName) {
  function ViewController (line 14343) | function ViewController(componentType) {
  function _classCallCheck (line 14833) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function defineProperties (line 14874) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 14878) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 14880) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function BackButton (line 14930) | function BackButton(navCtrl, elementRef, navbar) {
  function Navbar (line 15016) | function Navbar(app, viewCtrl, elementRef, config, renderer) {
  function defineProperties (line 15179) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 15181) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function RadioButton (line 15225) | function RadioButton(_form, _renderer, _elementRef) {
  function RadioGroup (line 15354) | function RadioGroup(ngControl, _renderer, _elementRef) {
  function defineProperties (line 15590) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 15592) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Refresher (line 15637) | function Refresher(content, element) {
  function easeOutCubic (line 15869) | function easeOutCubic(t) {
  function scroll (line 15873) | function scroll() {
  function defineProperties (line 16046) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 16050) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 16052) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Scroll (line 16079) | function Scroll(elementRef, Config) {
  function defineProperties (line 16145) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _inherits (line 16147) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function _classCallCheck (line 16149) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SearchbarInput (line 16199) | function SearchbarInput(_elementRef) {
  function Searchbar (line 16252) | function Searchbar(_elementRef, _config, ngControl) {
  function defineProperties (line 16544) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 16546) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SegmentButton (line 16584) | function SegmentButton(_renderer, _elementRef) {
  function Segment (line 16680) | function Segment(ngControl) {
  function defineProperties (line 16815) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _inherits (line 16817) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function _classCallCheck (line 16819) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function DisplayWhen (line 16849) | function DisplayWhen(conditions, platform, ngZone) {
  function ShowWhen (line 16914) | function ShowWhen(showWhen, platform, ngZone) {
  function HideWhen (line 16958) | function HideWhen(hideWhen, platform, ngZone) {
  function defineProperties (line 17049) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 17053) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 17055) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Slides (line 17110) | function Slides(elementRef, config) {
  function Swiper (line 17622) | function Swiper(container,params){if(!(this instanceof Swiper))return ne...
  function addLibraryPlugin (line 17858) | function addLibraryPlugin(lib){lib.fn.swiper = function(params){var firs...
  function handleLiveEvent (line 17884) | function handleLiveEvent(e){var target=e.target;if($(target).is(targetSe...
  function proxy (line 17888) | function proxy(e){listener(e);dom.off(eventName,targetSelector,proxy,cap...
  function fireCallBack (line 17888) | function fireCallBack(e){ /*jshint validthis:true */if(e.target !== this...
  function fireCallBack (line 17893) | function fireCallBack(e){ /*jshint validthis:true */if(e.target !== this...
  function defineProperties (line 17971) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 17975) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 17977) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Tab (line 18024) | function Tab(parentTabs, app, config, keyboard, elementRef, compiler, vi...
  function defineProperties (line 18206) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 18210) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 18212) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Tabs (line 18278) | function Tabs(config, elementRef, viewCtrl, navCtrl, _platform) {
  function TabButton (line 18498) | function TabButton(tabs, config, elementRef) {
  function TabHighlight (line 18545) | function TabHighlight(tabs, config, elementRef) {
  function defineProperties (line 18598) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 18600) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Activator (line 18608) | function Activator(app, config, zone) {
  function activateCss (line 18633) | function activateCss() {
  function activateUp (line 18654) | function activateUp() {
  function deactivate (line 18685) | function deactivate() {
  function defineProperties (line 18719) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 18723) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 18725) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function RippleActivator (line 18740) | function RippleActivator(app, config, zone) {
  function defineProperties (line 18868) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 18872) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function getActivatableTarget (line 18874) | function getActivatableTarget(ele) {
  function isActivatable (line 18887) | function isActivatable(ele) {
  function addListener (line 18900) | function addListener(type, listener, useCapture) {
  function removeListener (line 18903) | function removeListener(type, listener) {
  function TapClick (line 18936) | function TapClick(app, config, zone) {
  function defineProperties (line 19105) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 19107) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function cloneInput (line 19109) | function cloneInput(srcInput, addCssClass) {
  function getScrollAssistDuration (line 19119) | function getScrollAssistDuration(distanceToScroll) {
  function TextInputElement (line 19187) | function TextInputElement(type, _elementRef, _renderer) {
  function TextInput (line 19350) | function TextInput(config, _form, _renderer, _elementRef, _app, _platfor...
  function InputScrollAssist (line 19808) | function InputScrollAssist(_form, _input) {
  function defineProperties (line 19875) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 19877) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Toggle (line 19915) | function Toggle(_form, _elementRef, _renderer, config, ngControl) {
  function defineProperties (line 20142) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 20146) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 20148) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function ToolbarBase (line 20190) | function ToolbarBase(elementRef, config) {
  function Toolbar (line 20274) | function Toolbar(elementRef, config) {
  function ToolbarTitle (line 20316) | function ToolbarTitle(elementRef, toolbar, navbar) {
  function ToolbarItem (line 20351) | function ToolbarItem(elementRef, toolbar, navbar) {
  function run (line 20401) | function run() {
  function run (line 20809) | function run() {
  function defineProperties (line 20960) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 20964) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 20966) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function LocalStorage (line 20976) | function LocalStorage() {
  function defineProperties (line 21048) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 21052) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _inherits (line 21054) | function _inherits(subClass, superClass) { if (typeof superClass !== 'fu...
  function SqlStorage (line 21099) | function SqlStorage() {
  function defineProperties (line 21314) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _classCallCheck (line 21316) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Storage (line 21322) | function Storage(strategyCls, options) {
  function StorageEngine (line 21370) | function StorageEngine() {

FILE: content/dist/demos/scrollbar-fix.js
  function hasScrollbar (line 3) | function hasScrollbar() {

FILE: content/dist/preview-app/www/build/main.js
  function u (line 1) | function u(l){return Promise.resolve().then(function(){throw new Error("...
  function u (line 1) | function u(l){return Promise.resolve().then(function(){throw new Error("...
  function a (line 1) | function a(){return{overview:_,"action-sheets":_,alert:s,"alert-confirm"...
  function e (line 1) | function e(l){return a()[l]}
  function o (line 1) | function o(l,n,u){var a;return function(){var e=this,o=arguments,t=u&&!a...
  function l (line 1) | function l(l,n){this.platform=l,this.actionsheetCtrl=n}
  function l (line 1) | function l(l){this.alerCtrl=l}
  function l (line 1) | function l(l){this.alertCtrl=l}
  function l (line 1) | function l(l){this.alerCtrl=l}
  function l (line 1) | function l(l){this.alertCtrl=l}
  function l (line 1) | function l(l){this.alerCtrl=l}
  function l (line 1) | function l(){this.press=0,this.pan=0,this.swipe=0,this.tap=0}
  function l (line 1) | function l(l){this.alertCtrl=l,this.form=new A.g({firstName:new A.e("",A...
  function l (line 1) | function l(){this.items=["Pokémon Yellow","Super Metroid","Mega Man X","...
  function l (line 1) | function l(){this.items=["Pokémon Yellow","Super Metroid","Mega Man X","...
  function l (line 1) | function l(){this.items=["Pokémon Yellow","Super Metroid","Mega Man X","...
  function l (line 1) | function l(l){this.loadingCtrl=l}
  function l (line 1) | function l(l){this.modalCtrl=l}
  function l (line 1) | function l(l,n,u){this.platform=l,this.params=n,this.viewCtrl=u;this.cha...
  function l (line 1) | function l(l){this.nav=l,this.items=[],this.items=[{title:"Angular",icon...
  function l (line 1) | function l(l){this.navParams=l,this.colors={white:{bg:"rgb(255, 255, 255...
  function l (line 1) | function l(l){this.popoverCtrl=l}
  function l (line 1) | function l(){this.langForm=new A.g({langs:new A.e({value:"rust",disabled...
  function l (line 1) | function l(){this.initializeItems()}
  function l (line 1) | function l(){this.gaming="n64",this.gender="f",this.musicAlertOpts={titl...
  function l (line 1) | function l(l){this.toastCtrl=l}
  function l (line 1) | function l(l){this.nav=l}
  function l (line 1) | function l(l){this.nav=l}
  function l (line 1) | function l(l){this.nav=l}
  function l (line 1) | function l(l){this.nav=l}
  function l (line 1) | function l(){this.initializeItems()}
  function l (line 1) | function l(l,n,u){this.platform=l,this.config=n,this.zone=u,this.isProdu...
  function l (line 1) | function l(){}

FILE: content/dist/preview-app/www/build/polyfills.js
  function e (line 1) | function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}
  function n (line 1) | function n(t){return isFinite(t=+t)&&0!=t?t<0?-n(-t):Math.log(t+Math.sqr...
  function r (line 1) | function r(t,e){var n,o,i=arguments.length<3?t:arguments[2];return v(t)=...
  function o (line 1) | function o(t,e,n){var r,i,a=arguments.length<4?t:arguments[3],u=dn.f(v(t...
  function t (line 1) | function t(){}
  function t (line 2) | function t(){}
  function n (line 2) | function n(t,e,n){var r,o,i,a=Array(n),u=8*n-e-1,c=(1<<u)-1,s=c>>1,f=23=...
  function r (line 2) | function r(t,e,n){var r,o=8*n-e-1,i=(1<<o)-1,a=i>>1,u=o-7,c=n-1,s=t[c--]...
  function o (line 2) | function o(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}
  function i (line 2) | function i(t){return[255&t]}
  function a (line 2) | function a(t){return[255&t,t>>8&255]}
  function c (line 2) | function c(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}
  function s (line 2) | function s(t){return n(t,52,8)}
  function f (line 2) | function f(t){return n(t,23,4)}
  function h (line 2) | function h(t,e,n){m(t[b],e,{get:function(){return this[n]}})}
  function p (line 2) | function p(t,e,n,r){var o=+n,i=Oi(o);if(i+e>t[L])throw E(_);var a=t[A]._...
  function v (line 2) | function v(t,e,n,r,o,i){var a=+n,u=Oi(a);if(u+e>t[L])throw E(_);for(var ...
  function t (line 2) | function t(t,e){for(var n=t.length-1;n>=0;n--)typeof t[n]===I&&(t[n]=Zon...
  function e (line 2) | function e(e,r){for(var o=e.constructor.name,i=0;i<r.length;i++)!functio...
  function n (line 2) | function n(t){return!t||!1!==t.writable&&(typeof t.get!==I||typeof t.set...
  function r (line 2) | function r(t,e,n){var r=Object.getOwnPropertyDescriptor(t,e);if(!r&&n){O...
  function o (line 2) | function o(t,e,n){if(e)for(var o=0;o<e.length;o++)r(t,"on"+e[o],n);else{...
  function i (line 2) | function i(e){var n=x[e];if(n){x[D(e)]=n,x[e]=function(){var r=t(argumen...
  function a (line 2) | function a(t,e,r){for(var o=t;o&&!o.hasOwnProperty(e);)o=Object.getProto...
  function u (line 2) | function u(t,e,n){function r(t){var e=t.data;return e.args[e.callbackInd...
  function c (line 2) | function c(t,e){t[D("OriginalDelegate")]=e}
  function s (line 2) | function s(){if(B)return q;B=!0;try{var t=window.navigator.userAgent;t.i...
  function l (line 2) | function l(t,e,n){for(var r=n&&n.addEventListenerFnName||"addEventListen...
  function h (line 2) | function h(t,e){var n=[];for(var r in t){var o=nt.exec(r),i=o&&o[1];if(i...
  function p (line 2) | function p(t,e){var n=t.Event;n&&n.prototype&&e.patchMethod(n.prototype,...
  function v (line 3) | function v(t,e,n,r){function o(e){function n(){try{e.invoke.apply(this,a...
  function d (line 3) | function d(){Object.defineProperty=function(t,e,n){if(y(t,e))throw new T...
  function g (line 3) | function g(t,e,n){var r=n.configurable;return n=m(t,e,n),b(t,e,n,r)}
  function y (line 3) | function y(t,e){return t&&t[ct]&&t[ct][e]}
  function m (line 3) | function m(t,e,n){return n.configurable=!0,n.configurable||(t[ct]||it(t,...
  function b (line 3) | function b(t,e,n,r){try{return it(t,e,n)}catch(i){if(!n.configurable)thr...
  function _ (line 3) | function _(t,e){var n=e.WebSocket;e.EventTarget||l(e,[n.prototype]),e.We...
  function k (line 3) | function k(t,e,n){if(!n)return e;var r=n.filter(function(e){return e.tar...
  function w (line 3) | function w(t,e,n,r){o(t,k(t,e,n),r)}
  function S (line 3) | function S(t,e){if(!N||z){var n="undefined"!=typeof WebSocket;if(T()){va...
  function T (line 3) | function T(){if((C||z)&&!Object.getOwnPropertyDescriptor(HTMLElement.pro...
  function E (line 3) | function E(){for(var t=0;t<Mt.length;t++)!function(t){var e=Mt[t],n="on"...
  function O (line 3) | function O(t,e){var n="Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Ca...
  function P (line 3) | function P(t,e){p(t,e)}
  function M (line 3) | function M(t){if((C||z)&&"registerElement"in t.document){var e=document....
  function e (line 3) | function e(t){u&&u.mark&&u.mark(t)}
  function n (line 3) | function n(t,e){u&&u.measure&&u.measure(t,e)}
  function r (line 3) | function r(e){0===x&&0===g.length&&(s||t[v]&&(s=t[v].resolve(0)),s?s[d](...
  function o (line 3) | function o(){if(!y){for(y=!0;g.length;){var t=g;g=[];for(var e=0;e<t.len...
  function i (line 3) | function i(){}
  function a (line 3) | function a(t){return"__zone_symbol__"+t}
  function r (line 3) | function r(t,e){this._properties=null,this._parent=t,this._name=e?e.name...
  function t (line 3) | function t(t,e,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0}...
  function e (line 3) | function e(n,r,o,i,a,u){this._zone=null,this.runCount=0,this._zoneDelega...
  function r (line 3) | function r(t){n.onUnhandledError(t);try{var r=e[g];r&&"function"==typeof...
  function o (line 3) | function o(t){return t&&t.then}
  function i (line 3) | function i(t){return t}
  function a (line 3) | function a(t){return x.reject(t)}
  function u (line 3) | function u(t,e){return function(n){try{c(t,e,n)}catch(e){c(t,!1,e)}}}
  function c (line 3) | function c(t,r,o){var i=T();if(t===o)throw new TypeError(E);if(t[y]===_)...
  function s (line 3) | function s(t){if(t[y]===S){try{var n=e[D];n&&typeof n===P&&n.apply(this,...
  function f (line 3) | function f(t,e,n,r,o){s(t);var u=t[y]?typeof r===P?r:i:typeof o===P?o:a;...
  function l (line 3) | function l(t){var e=t.prototype,n=e.then;e[d]=n;var r=Object.getOwnPrope...
  function t (line 3) | function t(e){var n=this;if(!(n instanceof t))throw new Error("Must be a...
  function e (line 3) | function e(t){a&&(a=r(t))}
  function n (line 3) | function n(t){a&&(a=i(t))}
  function n (line 3) | function n(t){return t[r]}
  function s (line 3) | function s(t){XMLHttpRequest[u]=!1;var e=t.data,n=e.target,o=n[i];v||(v=...
  function f (line 3) | function f(){}
  function l (line 3) | function l(t){var e=t.data;return e.aborted=!0,k.apply(e.target,e.args)}
  function r (line 3) | function r(e){return function(n){h(t,e).forEach(function(r){var o=t.Prom...

FILE: content/dist/preview-app/www/build/sw-toolbox.js
  function o (line 15) | function o(c,s){if(!n[c]){if(!t[c]){var a="function"==typeof require&&re...
  function r (line 15) | function r(e,t){t=t||{};var n=t.debug||m.debug;n&&console.log("[sw-toolb...
  function o (line 15) | function o(e){var t;return e&&e.cache&&(t=e.cache.name),t=t||m.cache.nam...
  function i (line 15) | function i(e,t){t=t||{};var n=t.successResponses||m.successResponses;ret...
  function c (line 15) | function c(e,t,n){var r=s.bind(null,e,t,n);d=d?d.then(r):r()}
  function s (line 15) | function s(e,t,n){var o=e.url,i=n.maxAgeSeconds,c=n.maxEntries,s=n.name,...
  function a (line 15) | function a(e,t,n){return r("Renaming cache: ["+e+"] to ["+t+"]",n),cache...
  function u (line 15) | function u(e,t){return o(t).then(function(t){return t.add(e)})}
  function f (line 15) | function f(e,t){return o(t).then(function(t){return t.delete(e)})}
  function h (line 15) | function h(e){e instanceof Promise||p(e),m.preCacheItems=m.preCacheItems...
  function p (line 15) | function p(e){var t=Array.isArray(e);if(t&&e.forEach(function(e){"string...
  function l (line 15) | function l(e,t,n){if(!e)return!1;if(t){var r=e.headers.get("date");if(r)...
  function r (line 15) | function r(e){return new Promise(function(t,n){var r=indexedDB.open(u+e,...
  function o (line 15) | function o(e){return e in d||(d[e]=r(e)),d[e]}
  function i (line 15) | function i(e,t,n){return new Promise(function(r,o){var i=e.transaction(h...
  function c (line 15) | function c(e,t,n){return t?new Promise(function(r,o){var i=1e3*t,c=[],s=...
  function s (line 15) | function s(e,t){return t?new Promise(function(n,r){var o=[],i=e.transact...
  function a (line 15) | function a(e,t,n,r){return c(e,n,r).then(function(n){return s(e,t).then(...
  function r (line 15) | function r(e){var t=a.match(e.request);t?e.respondWith(t(e.request)):a.d...
  function o (line 15) | function o(e){s.debug("activate event fired");var t=u.cache.name+"$$$ina...
  function i (line 15) | function i(e){return e.reduce(function(e,t){return e.concat(t)},[])}
  function c (line 15) | function c(e){var t=u.cache.name+"$$$inactive$$$";s.debug("install event...
  function r (line 15) | function r(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}
  function r (line 15) | function r(e,t,n){return n=n||{},i.debug("Strategy: cache first ["+e.url...
  function r (line 15) | function r(e,t,n){return n=n||{},i.debug("Strategy: cache only ["+e.url+...
  function r (line 15) | function r(e,t,n){return o.debug("Strategy: fastest ["+e.url+"]",n),new ...
  function r (line 15) | function r(e,t,n){n=n||{};var r=n.successResponses||o.successResponses,c...
  function r (line 15) | function r(e,t,n){return o.debug("Strategy: network only ["+e.url+"]",n)...
  function r (line 15) | function r(e,t){for(var n,r=[],o=0,i=0,c="",s=t&&t.delimiter||"/";null!=...
  function o (line 15) | function o(e,t){return s(r(e,t))}
  function i (line 15) | function i(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%...
  function c (line 15) | function c(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+...
  function s (line 15) | function s(e){for(var t=new Array(e.length),n=0;n<e.length;n++)"object"=...
  function a (line 15) | function a(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}
  function u (line 15) | function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}
  function f (line 15) | function f(e,t){return e.keys=t,e}
  function h (line 15) | function h(e){return e.sensitive?"":"i"}
  function p (line 15) | function p(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.l...
  function l (line 15) | function l(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(g(e[o],t,n).sou...
  function d (line 15) | function d(e,t,n){return m(r(e,n),t,n)}
  function m (line 15) | function m(e,t,n){v(t)||(n=t||n,t=[]),n=n||{};for(var r=n.strict,o=n.end...
  function g (line 15) | function g(e,t,n){return v(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp...
  function t (line 15) | function t(e){this.name="NetworkError",this.code=19,this.message=e}

FILE: content/dist/preview-app/www/build/vendor.js
  function e (line 1) | function e(n){if(i[n])return i[n].exports;var r=i[n]={i:n,l:!1,exports:{...
  function n (line 1) | function n(){a.onerror=a.onload=null,clearTimeout(l);var e=r[t];0!==e&&(...
  function i (line 1) | function i(t){return function(){for(var e=[],n=0;n<arguments.length;n++)...
  function r (line 1) | function r(t,e,n){function r(){function t(t,e,n){for(var r=t.hasOwnPrope...
  function o (line 1) | function o(){if(!Je){var t=Qe.Symbol;if(t&&t.iterator)Je=t.iterator;else...
  function s (line 1) | function s(t){Zone.current.scheduleMicroTask("scheduleMicrotask",t)}
  function a (line 1) | function a(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&is...
  function l (line 1) | function l(t){if("string"==typeof t)return t;if(t instanceof Array)retur...
  function u (line 1) | function u(t){return t.__forward_ref__=u,t.toString=function(){return l(...
  function c (line 1) | function c(t){return"function"==typeof t&&t.hasOwnProperty("__forward_re...
  function p (line 1) | function p(t){return _("Cannot mix multi providers and regular providers...
  function h (line 1) | function h(t,e){if(e)if((e=c(e))instanceof Array)for(var n=0;n<e.length;...
  function f (line 1) | function f(t,e,n,i,r){try{return function(t,e,n,i,r){var o;if(e){if((o=e...
  function d (line 1) | function d(t,e){t=t&&"\n"===t.charAt(0)&&t.charAt(1)==_n?t.substr(2):t;v...
  function _ (line 1) | function _(t,e){return new Error(d(t,e))}
  function v (line 1) | function v(t){return t[yn]}
  function y (line 1) | function y(t){return t[mn]}
  function m (line 1) | function m(t){if(t.length>1){return" ("+function(t){for(var e=[],n=0;n<t...
  function g (line 1) | function g(t,e,n,i){var r=[e],o=n(r),s=i?function(t,e){var n=t+" caused ...
  function b (line 1) | function b(t,e){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];n.push(o...
  function w (line 1) | function w(t){return"function"==typeof t}
  function C (line 1) | function C(t){return t?t.map(function(t){var e=t.type.annotationCls;retu...
  function O (line 1) | function O(t){var e=Object.getPrototypeOf(t.prototype);return(e?e.constr...
  function S (line 1) | function S(t,e){return t.forEach(function(t){if(t instanceof On)e.push({...
  function E (line 1) | function E(t){var e=xn.parameters(t);if(!e)return[];if(e.some(function(t...
  function x (line 1) | function x(t,e,n){var i=null,r=!1;if(!Array.isArray(e))return e instance...
  function T (line 1) | function T(t,e,n){return new Tn(wn.get(t),e,n)}
  function k (line 1) | function k(t){return!!t&&"function"==typeof t.then}
  function P (line 1) | function P(){return""+A()+A()+A()}
  function A (line 1) | function A(){return String.fromCharCode(97+Math.floor(25*Math.random()))}
  function I (line 1) | function I(){throw new Error("Runtime compiler is not loaded")}
  function j (line 1) | function j(t){var e=Error("No component factory found for "+l(t)+". Did ...
  function D (line 1) | function D(){}
  function M (line 1) | function M(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try...
  function R (line 1) | function R(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(...
  function N (line 1) | function N(t){t._nesting--,M(t)}
  function V (line 1) | function V(){return ui=!0,li}
  function L (line 1) | function L(t,e,n){void 0===n&&(n=[]);var i=new Le("Platform: "+e);return...
  function F (line 1) | function F(){return Pe&&!Pe.destroyed?Pe:null}
  function B (line 1) | function B(t,e){return t=Array.isArray(e)?e.reduce(B,t):Object(De.__assi...
  function z (line 1) | function z(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}
  function H (line 1) | function H(t){return t.reduce(function(t,e){var n=Array.isArray(e)?H(e):...
  function Y (line 1) | function Y(t,e,n){t.childNodes.forEach(function(t){t instanceof Ei&&(e(t...
  function U (line 1) | function U(t,e,n){t instanceof Ei&&t.childNodes.forEach(function(t){e(t)...
  function q (line 1) | function q(t){return xi.get(t)||null}
  function Z (line 1) | function Z(t){xi.set(t.nativeNode,t)}
  function G (line 1) | function G(t,e){var n=W(t),i=W(e);if(n&&i)return function(t,e,n){var i=t...
  function W (line 1) | function W(t){return!!X(t)&&(Array.isArray(t)||!(t instanceof Map)&&o()i...
  function X (line 1) | function X(t){return null!==t&&("function"==typeof t||"object"==typeof t)}
  function $ (line 1) | function $(t,e,n){var i=t.previousIndex;if(null===i)return i;var r=0;ret...
  function K (line 1) | function K(t,e){return t.nodes[e]}
  function Q (line 1) | function Q(t,e){return t.nodes[e]}
  function J (line 1) | function J(t,e){return t.nodes[e]}
  function tt (line 1) | function tt(t,e){return t.nodes[e]}
  function et (line 1) | function et(t,e){return t.nodes[e]}
  function nt (line 1) | function nt(t,e,n,i){var r="ExpressionChangedAfterItHasBeenCheckedError:...
  function it (line 1) | function it(t,e){t[yn]=e,t[gn]=e.logError.bind(e)}
  function rt (line 1) | function rt(t){return new Error("ViewDestroyedError: Attempt to use a de...
  function ot (line 1) | function ot(t){var e=$i.get(t);return e||(e=l(t)+"_"+$i.size,$i.set(t,e)...
  function st (line 1) | function st(t,e,n,i){return!(!(2&t.state)&&a(t.oldValues[e.bindingIndex+...
  function at (line 1) | function at(t,e,n,i){return!!st(t,e,n,i)&&(t.oldValues[e.bindingIndex+n]...
  function lt (line 1) | function lt(t,e,n,i){var r=t.oldValues[e.bindingIndex+n];if(1&t.state||!...
  function ut (line 1) | function ut(t){for(var e=t;e;)2&e.def.flags&&(e.state|=8),e=e.viewContai...
  function ct (line 1) | function ct(t,e,n,i){try{return ut(33554432&t.def.nodes[e].flags?Q(t,e)....
  function pt (line 1) | function pt(t){if(t.parent){return Q(t.parent,t.parentNodeDef.nodeIndex)...
  function ht (line 1) | function ht(t){return t.parent?t.parentNodeDef.parent:null}
  function ft (line 1) | function ft(t,e){switch(201347067&e.flags){case 1:return Q(t,e.nodeIndex...
  function dt (line 1) | function dt(t){return!!t.parent&&!!(32768&t.parentNodeDef.flags)}
  function _t (line 1) | function _t(t){return 1<<t%32}
  function vt (line 1) | function vt(t){var e={},n=0,i={};return t&&t.forEach(function(t){var r=t...
  function yt (line 1) | function yt(t){return t.map(function(t){var e,n;return Array.isArray(t)?...
  function mt (line 1) | function mt(t,e,n){var i=n.renderParent;return i?0==(1&i.flags)||0==(335...
  function gt (line 1) | function gt(t){var e=tr.get(t);return e||((e=t(function(){return Xi})).f...
  function bt (line 1) | function bt(t,e,n,i,r){3===e&&(n=t.renderer.parentNode(ft(t,t.def.lastRe...
  function wt (line 1) | function wt(t,e,n,i,r,o,s){for(var a=n;a<=i;a++){var l=t.def.nodes[a];11...
  function Ct (line 1) | function Ct(t,e,n,i,r,o){for(var s=t;s&&!dt(s);)s=s.parent;for(var a=s.p...
  function Ot (line 1) | function Ot(t,e,n,i,r,o){if(8&e.flags)Ct(t,e.ngContent.index,n,i,r,o);el...
  function St (line 1) | function St(t,e,n,i,r,o){var s=t.renderer;switch(n){case 1:s.appendChild...
  function Et (line 1) | function Et(t){if(":"===t[0]){var e=t.match(er);return[e[1],e[2]]}return...
  function xt (line 1) | function xt(t){for(var e=0,n=0;n<t.length;n++)e|=t[n].flags;return e}
  function Tt (line 1) | function Tt(t){return null!=t?t.toString():""}
  function kt (line 1) | function kt(t,e,n,i){if(!at(t,e,n,i))return!1;var r=e.bindings[n],o=Q(t,...
  function Pt (line 1) | function Pt(t,e,n){if(void 0===n&&(n=rn.THROW_IF_NOT_FOUND),8&e.flags)re...
  function At (line 1) | function At(t,e){var n;switch(201347067&e.flags){case 512:n=function(t,e...
  function It (line 1) | function It(t,e){var n=t.viewContainer._embeddedViews;if((null==e||e>=n....
  function jt (line 1) | function jt(t,e,n){var i=e?ft(e,e.def.lastRenderRootNode):t.renderElemen...
  function Dt (line 1) | function Dt(t){bt(t,3,null,null,void 0)}
  function Mt (line 1) | function Mt(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}
  function Rt (line 1) | function Rt(t,e){e>=t.length-1?t.pop():t.splice(e,1)}
  function Nt (line 1) | function Nt(t,e){return new pr(t,e)}
  function Vt (line 1) | function Vt(t,e,n,i){return new fr(t,e,n,i)}
  function Lt (line 1) | function Lt(t,e,n,i,r,o,s,a,l){var u=vt(n),p=u.matchedQueries,h=u.refere...
  function Ft (line 1) | function Ft(t,e){var n=(8192&e.flags)>0,i=e.provider;switch(201347067&e....
  function Bt (line 1) | function Bt(t,e,n,i,r){var o=r.length;switch(o){case 0:return new i;case...
  function zt (line 1) | function zt(t,e,n,i,r){if(void 0===r&&(r=rn.THROW_IF_NOT_FOUND),8&i.flag...
  function Ht (line 1) | function Ht(t,e,n){var i;if(n)i=Q(t,e.nodeIndex).componentView;else for(...
  function Yt (line 1) | function Yt(t,e,n,i,r,o){if(32768&n.flags){var s=Q(t,n.parent.nodeIndex)...
  function Ut (line 1) | function Ut(t,e){if(t.def.nodeFlags&e)for(var n=t.def.nodes,i=0;i<n.leng...
  function qt (line 1) | function qt(t,e,n){var i=J(t,e);if(i){var r=i.instance;r&&(Wi.setCurrent...
  function Zt (line 1) | function Zt(t,e,n,i,r){for(var o=e;o<=n;o++){var s=t.def.nodes[o],a=s.ma...
  function Gt (line 1) | function Gt(t,e,n){if(null!=n)switch(n){case 1:return Q(t,e.nodeIndex).r...
  function Wt (line 1) | function Wt(t,e,n){for(var i=new Array(n.length),r=0;r<n.length;r++){var...
  function Xt (line 1) | function Xt(t,e){return(null!=t?t.toString():"")+e.suffix}
  function $t (line 1) | function $t(t){return 0!=(1&t.flags)&&null===t.element.name}
  function Kt (line 1) | function Kt(t,e,n,i){var r=te(t.root,t.renderer,t,e,n);return ee(r,t.com...
  function Qt (line 1) | function Qt(t,e,n){var i=te(t,t.renderer,null,null,e);return ee(i,n,n),n...
  function Jt (line 1) | function Jt(t,e,n,i){var r,o=e.element.componentRendererType;return r=o?...
  function te (line 1) | function te(t,e,n,i,r){var o=new Array(r.nodes.length),s=r.outputCount?n...
  function ee (line 1) | function ee(t,e,n){t.component=e,t.context=n}
  function ne (line 1) | function ne(t){var e;if(dt(t)){e=Q(t.parent,t.parentNodeDef.parent.nodeI...
  function ie (line 1) | function ie(t){se(t),Wi.updateDirectives(t,1),ce(t,Cr.CheckNoChanges),Wi...
  function re (line 1) | function re(t){1&t.state?(t.state&=-2,t.state|=2):t.state&=-3,se(t),Wi.u...
  function oe (line 1) | function oe(t,e,n,i,r,o,s,a,l,u,c,p,h){return 0===n?function(t,e,n,i,r,o...
  function se (line 1) | function se(t){var e=t.def;if(4&e.nodeFlags)for(var n=0;n<e.nodes.length...
  function ae (line 1) | function ae(t,e,n,i,r,o,s,a,l,u,c,p,h){return 0===n?function(t,e,n,i,r,o...
  function le (line 1) | function le(t){if(!(128&t.state)){if(ce(t,Cr.Destroy),ue(t,Cr.Destroy),U...
  function ue (line 1) | function ue(t,e){var n=t.def;if(33554432&n.nodeFlags)for(var i=0;i<n.nod...
  function ce (line 1) | function ce(t,e){var n=t.def;if(16777216&n.nodeFlags)for(var i=0;i<n.nod...
  function pe (line 1) | function pe(t,e){var n=t.state;switch(e){case Cr.CheckNoChanges:0==(128&...
  function he (line 1) | function he(t,e){ce(t,e),ue(t,e)}
  function fe (line 1) | function fe(t,e,n,i){if(t.def.nodeFlags&e&&t.def.nodeFlags&n)for(var r=t...
  function de (line 1) | function de(){if(!Or){Or=!0;var t=V()?{setCurrentNode:ge,createRootView:...
  function _e (line 1) | function _e(t,e,n,i,r){var o=e.injector.get(Gi),s=e.injector.get(bn);ret...
  function ve (line 1) | function ve(t){if(0===Sr.size)return t;var e=function(t){for(var e=[],n=...
  function ye (line 1) | function ye(t,e,n,i,r,o,s,a,l,u,c,p,h){var f=t.def.nodes[e];return oe(t,...
  function me (line 1) | function me(t,e,n,i,r,o,s,a,l,u,c,p,h){var f=t.def.nodes[e];return ae(t,...
  function ge (line 1) | function ge(t,e){Ie=t,je=e}
  function be (line 1) | function be(t,e,n,i){if(oe.apply(void 0,[t,e,n].concat(i))){var r=1===n?...
  function we (line 1) | function we(t,e,n,i){ae.apply(void 0,[t,e,n].concat(i))}
  function Ce (line 1) | function Ce(t,e){for(var n=e;n<t.def.nodes.length;n++){var i=t.def.nodes...
  function Oe (line 1) | function Oe(t,e){for(var n=e;n<t.def.nodes.length;n++){var i=t.def.nodes...
  function Se (line 1) | function Se(t,e,n){for(var i in e.references)n[i]=Gt(t,e,e.references[i])}
  function Ee (line 1) | function Ee(t,e,n,i){var r=Ae,o=Ie,s=je;try{Ae=t;var a=e.apply(n,i);retu...
  function xe (line 1) | function xe(){return Ie?new Tr(Ie,je):null}
  function t (line 1) | function t(t){this._desc=t,this.ngMetadataName="InjectionToken"}
  function t (line 1) | function t(){}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t,e){void 0===e&&(e=fn),this.parent=e;var n=this._records=new...
  function t (line 1) | function t(){this._console=console}
  function t (line 1) | function t(t,e){if(this.token=t,this.id=e,!t)throw new Error("Token must...
  function t (line 1) | function t(){this._allKeys=new Map}
  function t (line 1) | function t(t){this._reflect=t||Qe.Reflect}
  function t (line 1) | function t(t){this.reflectionCapabilities=t}
  function t (line 1) | function t(t,e,n){this.key=t,this.optional=e,this.visibility=n}
  function t (line 1) | function t(t,e,n){this.key=t,this.resolvedFactories=e,this.multiProvider=n}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t,e){this._constructionCounter=0,this._providers=t,this.paren...
  function t (line 1) | function t(t){var e=this;this.appInits=t,this.initialized=!1,this.done=!...
  function t (line 1) | function t(){}
  function t (line 1) | function t(){}
  function t (line 1) | function t(){}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t,e,n){this._parent=e,this._ngModule=n,this._factories=new Ma...
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i.factory=e,i.ngModule=n,i}
  function e (line 1) | function e(e){void 0===e&&(e=!1);var n=t.call(this)||this;return n.__isA...
  function t (line 1) | function t(t){var e=t.enableLongStackTrace,n=void 0!==e&&e;if(this.hasPe...
  function t (line 1) | function t(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,t...
  function t (line 1) | function t(t){this._ngZone=t,this._pendingCount=0,this._isZoneStable=!0,...
  function t (line 1) | function t(){this._applications=new Map,ai.addToWindow(this)}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t){this._injector=t,this._modules=[],this._destroyListeners=[...
  function t (line 1) | function t(t,e,n,i,r,o){var a=this;this._zone=t,this._console=e,this._in...
  function t (line 1) | function t(){this.dirty=!0,this._results=[],this.changes=new ei}
  function t (line 1) | function t(t,e,n){this._debugContext=n,this.nativeNode=t,e&&e instanceof...
  function e (line 1) | function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.properties={},...
  function t (line 1) | function t(t){this.wrapped=t}
  function t (line 1) | function t(t,e,n){this.previousValue=t,this.currentValue=e,this.firstCha...
  function t (line 1) | function t(){}
  function t (line 1) | function t(t){this.length=0,this._linkedRecords=null,this._unlinkedRecor...
  function t (line 1) | function t(){this._head=null,this._tail=null}
  function t (line 1) | function t(){this.map=new Map}
  function t (line 1) | function t(){}
  function t (line 1) | function t(){this._records=new Map,this._mapHead=null,this._appendAfter=...
  function t (line 1) | function t(t){this.factories=t}
  function t (line 1) | function t(t){this.factories=t}
  function e (line 1) | function e(e,n,i,r,o,s){var a=t.call(this)||this;return a.selector=e,a.c...
  function e (line 1) | function e(e,n,i){var r=t.call(this)||this;return r._view=e,r._viewRef=n...
  function t (line 1) | function t(t,e,n){this._view=t,this._elDef=e,this._data=n,this._embedded...
  function t (line 1) | function t(t){this._view=t,this._viewContainerRef=null,this._appRef=null}
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i._parentView=e,i._def=n,i}
  function t (line 1) | function t(t,e){this.view=t,this.elDef=e}
  function t (line 1) | function t(t){this.delegate=t}
  function t (line 1) | function t(t,e,n,i){this._moduleType=t,this._parent=e,this._bootstrapCom...
  function t (line 1) | function t(t,e){this.view=t,this.nodeIndex=e,null==e&&(this.nodeIndex=e=...
  function t (line 1) | function t(t){this.delegate=t}
  function t (line 1) | function t(t){this.delegate=t}
  function e (line 1) | function e(e,n,i){var r=t.call(this)||this;return r.moduleType=e,r._boot...
  function t (line 1) | function t(){this._c={},this._s={},this._modes={},this._trns={}}
  function t (line 1) | function t(){this.data={}}
  function t (line 1) | function t(){var t=this;this._versions={},this._qp=new o,this._bbActions...
  function t (line 1) | function t(){e._doc.removeEventListener("DOMContentLoaded",t,!1),e._win....
  function i (line 1) | function i(){o.forEach(function(t){t()})}
  function r (line 1) | function r(n){t===n.target&&(i(),e(n))}
  function t (line 1) | function t(t,e){this.registry=t,this.c=t[e],this.name=e,this.isEngine=th...
  function i (line 1) | function i(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;re...
  function r (line 1) | function r(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!...
  function o (line 1) | function o(t){return this instanceof o?(this.v=t,this):new o(t)}
  function n (line 1) | function n(){this.constructor=t}
  function s (line 1) | function s(t){t.done?r(t.value):new n(function(e){e(t.value)}).then(func...
  function n (line 1) | function n(n){return function(s){return function(n){if(i)throw new TypeE...
  function i (line 1) | function i(t){l[t]&&(a[t]=function(e){return new Promise(function(n,i){u...
  function r (line 1) | function r(t,e){try{!function(t){t.value instanceof o?Promise.resolve(t....
  function s (line 1) | function s(t,e){t(e),u.shift(),u.length&&r(u[0][0],u[0][1])}
  function e (line 1) | function e(e,r){t[e]&&(n[e]=function(n){return(i=!i)?{value:o(t[e](n)),d...
  function t (line 1) | function t(t,e,n){void 0===n&&(n=l),this.component=t,this._isHidden=!1,t...
  function i (line 1) | function i(t,e){if(t.id===e||t.name===e)return t;for(var n=0,r=t.getAllC...
  function r (line 1) | function r(t){if(!t)return null;if(Object(u.m)(t))return r(t.parent);var...
  function o (line 1) | function o(t){var e=[],n=t.getActiveChildNavs();return n&&n.length?n.for...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function t (line 1) | function t(t,e,n){this._config=t,this._plt=e,this._menuCtrl=n,this._disT...
  function t (line 1) | function t(t){this.dom=t,this.writeTask=null,this.readTask=null}
  function t (line 1) | function t(t){this.plt=t,this.r=[],this.w=[]}
  function i (line 1) | function i(t,e){return t.top<e.top?-1:t.top>e.top?1:0}
  function r (line 1) | function r(t){return t.indexOf("px")>0?parseInt(t,10):0}
  function o (line 1) | function o(t){return t>0?t+"px":""}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(e,n,i,r,o,s,a,u,p,f){var d=t.call(this,e,r,o,"content")||this...
  function t (line 1) | function t(t,e,n,r){this._plt=e,this._zone=n,this._dom=r,this.willShow=n...
  function i (line 1) | function i(){!r.isOpen()||o>n?r._plt.timeout(function(){r._zone.run(func...
  function e (line 1) | function e(){a._dom.write(function(){l.doc().body.classList[c?"add":"rem...
  function n (line 1) | function n(){c=!1,i()}
  function i (line 1) | function i(){e(),r&&r(),s&&s(),c&&(r=l.registerListener(u,"mousedown",n,...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){var a=t.call(this,r,o,s)||this;return a._app=e,a...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){var r=t.call(this,e,n,i)||this;return r._sbPadding=e.g...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e,n,i,"header")||this;return r&&r....
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o){var s=t.call(this,e,n,i,"title")||this;return r&&r...
  function i (line 1) | function i(t){return r._22(2,[r._18(402653184,1,{_fixedContent:0}),r._18...
  function t (line 1) | function t(t){this._app=t,this.id=1,this.requestedStart={},this.disabled...
  function t (line 1) | function t(t,e,n,i,r){this.name=t,this.id=e,this.controller=n,this.prior...
  function t (line 1) | function t(t,e,n,i){this.id=t,this.controller=e,this.disable=n,this.disa...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,2,"div",[["class"...
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.Z(0,0,null,null,1,"div",[["class"...
  function i (line 1) | function i(t){return"string"==typeof t}
  function r (line 1) | function r(t){return"number"==typeof t}
  function t (line 1) | function t(){this._focused=null,this._ids=-1,this._inputs=[]}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o){var s=t.call(this,n,i,r,"item")||this;return s._id...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,n,i,r)||this;return o._role="butto...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,1,"span",[["class...
  function t (line 1) | function t(t,e){this.plt=t,this.reorderList=e,this.selectedItemEle=null,...
  function t (line 1) | function t(t,e){this.from=t,this.to=e}
  function t (line 1) | function t(t,e,n,r,o,s){this._plt=t,this._dom=e,this._rendered=r,this._z...
  function i (line 1) | function i(t){return null==t||0===t.length}
  function r (line 1) | function r(t){return null!=t}
  function o (line 1) | function o(t){var e=Object(x._5)(t)?Object(k.fromPromise)(t):t;if(!Objec...
  function s (line 1) | function s(t){var e=t.reduce(function(t,e){return null!=e?Object(E.__ass...
  function a (line 1) | function a(){throw new Error("unimplemented")}
  function l (line 1) | function l(t,e){return null==t?""+e:(e&&"object"==typeof e&&(e="Object")...
  function u (line 1) | function u(t,e){return e.path.concat([t])}
  function c (line 1) | function c(t,e){t||d(e,"Cannot find control with"),e.valueAccessor||d(e,...
  function p (line 1) | function p(t,e){e.viewToModelUpdate(t._pendingValue),t._pendingDirty&&t....
  function h (line 1) | function h(t,e){null==t&&d(e,"Cannot find control with"),t.validator=M.c...
  function f (line 1) | function f(t){return d(t,"There is no FormControl instance attached to f...
  function d (line 1) | function d(t,e){var n;throw n=t.path.length>1?"path: '"+t.path.join(" ->...
  function _ (line 1) | function _(t){return null!=t?M.compose(t.map(function(t){return t.valida...
  function v (line 1) | function v(t){return null!=t?M.composeAsync(t.map(function(t){return t.v...
  function y (line 1) | function y(t,e){if(!t.hasOwnProperty("model"))return!1;var n=t.model;ret...
  function m (line 1) | function m(t,e){t._syncPendingControls(),e.forEach(function(t){var e=t.c...
  function g (line 1) | function g(t,e){if(!e)return null;var n=void 0,i=void 0,r=void 0;return ...
  function b (line 1) | function b(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}
  function w (line 1) | function w(t){var e=O(t)?t.validators:t;return Array.isArray(e)?_(e):e||...
  function C (line 1) | function C(t,e){var n=O(e)?e.asyncValidators:t;return Array.isArray(n)?v...
  function O (line 1) | function O(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}
  function S (line 1) | function S(t){return!(t instanceof ct||t instanceof ut||t instanceof pt)}
  function t (line 1) | function t(){}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=functi...
  function t (line 1) | function t(t,e,n){this._renderer=t,this._elementRef=e,this._compositionM...
  function t (line 1) | function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=functi...
  function e (line 1) | function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._par...
  function t (line 1) | function t(){this._accessors=[]}
  function t (line 1) | function t(t,e,n,i){this._renderer=t,this._elementRef=e,this._registry=n...
  function t (line 1) | function t(t,e){this._renderer=t,this._elementRef=e,this.onChange=functi...
  function t (line 1) | function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new ...
  function t (line 1) | function t(t,e){this._renderer=t,this._elementRef=e,this._optionMap=new ...
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function t (line 1) | function t(t){this._cd=t}
  function e (line 1) | function e(e){return t.call(this,e)||this}
  function e (line 1) | function e(e){return t.call(this,e)||this}
  function t (line 1) | function t(t,e){this.validator=t,this.asyncValidator=e,this._onCollectio...
  function e (line 1) | function e(e,n,i){void 0===e&&(e=null);var r=t.call(this,w(n),C(i,n))||t...
  function e (line 1) | function e(e,n,i){var r=t.call(this,w(n),C(i,n))||this;return r.controls...
  function e (line 1) | function e(e,n,i){var r=t.call(this,w(n),C(i,n))||this;return r.controls...
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i.submitted=!1,i._direct...
  function t (line 1) | function t(){}
  function e (line 1) | function e(e,n,i){var r=t.call(this)||this;return r._parent=e,r._validat...
  function e (line 1) | function e(e,n,i,r){var o=t.call(this)||this;return o.control=new Q,o._r...
  function t (line 1) | function t(){}
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i._validators=e,i._async...
  function e (line 1) | function e(e,n,i){var r=t.call(this)||this;return r._parent=e,r._validat...
  function e (line 1) | function e(e,n,i){var r=t.call(this)||this;return r._parent=e,r._validat...
  function e (line 1) | function e(e,n,i,r){var o=t.call(this)||this;return o._added=!1,o.update...
  function t (line 1) | function t(){}
  function i (line 1) | function i(t){return o._22(0,[(t()(),o.Z(0,0,null,null,1,"ion-icon",[["n...
  function r (line 1) | function r(t){return o._22(2,[o._18(671088640,1,{viewLabel:0}),o._12(nul...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o){var s=t.call(this,e,n.getNativeElement(),{maxAngle:2...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){var a=t.call(this,e,n,i,"list")||this;return a._...
  function i (line 1) | function i(t){return t.replace(/\/index.html$/,"")}
  function r (line 1) | function r(t){var e=t.toLowerCase().replace(/_/g,"-"),n=d[e];if(n)return...
  function t (line 1) | function t(e){var n=this;this._subject=new o.l,this._platformStrategy=e;...
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i._platformLocation=e,i....
  function e (line 1) | function e(e,n){var i=t.call(this)||this;if(i._platformLocation=e,null==...
  function e (line 1) | function e(e,n){var i=t.call(this)||this;return i.locale=e,i.deprecatedP...
  function t (line 1) | function t(t,e,n,i){this._iterableDiffers=t,this._keyValueDiffers=e,this...
  function t (line 1) | function t(t,e,n,i){this.$implicit=t,this.ngForOf=e,this.index=n,this.co...
  function t (line 1) | function t(t,e,n){this._viewContainer=t,this._template=e,this._differs=n...
  function t (line 1) | function t(t,e){this._viewContainer=t,this._context=new S,this._thenTemp...
  function t (line 1) | function t(t,e){this._viewContainerRef=t,this._templateRef=e,this._creat...
  function t (line 1) | function t(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckI...
  function t (line 1) | function t(t,e,n){this.ngSwitch=n,n._addCase(),this._view=new E(t,e)}
  function t (line 1) | function t(t,e,n){this._differs=t,this._ngEl=e,this._renderer=n}
  function t (line 1) | function t(t,e,n,i){this._config=t,this._elementRef=e,this._renderer=n,t...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){var r=t.call(this,e,n,i,"icon")||this;return r._isActi...
  function i (line 1) | function i(t){return"/"!==(t=t.trim()).charAt(0)&&(t="/"+t),t.length>1&&...
  function t (line 1) | function t(t,e,n,i,r){this._app=t,this._serializer=e,this._location=n,th...
  function i (line 1) | function i(t,e,n){return setTimeout(a(t,n),e)}
  function r (line 1) | function r(t,e,n){return!!Array.isArray(t)&&(o(t,n[e],n),!0)}
  function o (line 1) | function o(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(void 0!...
  function s (line 1) | function s(t,e,n){var i,r=e.prototype;(i=t.prototype=Object.create(r)).c...
  function a (line 1) | function a(t,e){return function(){return t.apply(e,arguments)}}
  function l (line 1) | function l(t,e){return typeof t==$e?t.apply(e?e[0]||void 0:void 0,e):t}
  function u (line 1) | function u(t,e){return void 0===t?e:t}
  function c (line 1) | function c(t,e,n){o(d(e),function(e){t.addEventListener(e,n,!1)})}
  function p (line 1) | function p(t,e,n){o(d(e),function(e){t.removeEventListener(e,n,!1)})}
  function h (line 1) | function h(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}
  function f (line 1) | function f(t,e){return t.indexOf(e)>-1}
  function d (line 1) | function d(t){return t.trim().split(/\s+/g)}
  function _ (line 1) | function _(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;i<t.l...
  function v (line 1) | function v(t){return Array.prototype.slice.call(t,0)}
  function y (line 1) | function y(t,e,n){for(var i=[],r=[],o=0;o<t.length;){var s=e?t[o][e]:t[o...
  function m (line 1) | function m(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),o=0;o<We.len...
  function g (line 1) | function g(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWin...
  function b (line 1) | function b(t,e){var n=this;this.manager=t,this.callback=e,this.element=t...
  function w (line 1) | function w(t){for(var e=[],n=0;n<t.pointers.length;)e[n]={clientX:Ke(t.p...
  function C (line 1) | function C(t){var e=t.length;if(1===e)return{x:Ke(t[0].clientX),y:Ke(t[0...
  function O (line 1) | function O(t,e,n){return{x:e/t||0,y:n/t||0}}
  function S (line 1) | function S(t,e){return t===e?cn:Qe(t)>=Qe(e)?t<0?pn:hn:e<0?fn:dn}
  function E (line 1) | function E(t,e,n){n||(n=mn);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];retu...
  function x (line 1) | function x(t,e,n){n||(n=mn);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];retu...
  function T (line 1) | function T(t,e){this.evEl=wn,this.evWin=Cn,this.allow=!0,this.pressed=!1...
  function k (line 1) | function k(){this.evEl=En,this.evWin=xn,b.apply(this,arguments),this.sto...
  function P (line 1) | function P(){this.evTarget=kn,this.evWin=Pn,this.started=!1,b.apply(this...
  function A (line 1) | function A(t,e){this.evTarget=In,this.targetIds={},b.apply(this,arguments)}
  function I (line 1) | function I(){b.apply(this,arguments);var t=a(this.handler,this);this.tou...
  function j (line 1) | function j(t,e){this.manager=t,this.set(e)}
  function D (line 1) | function D(t){this.options=Object.assign({},this.defaults,t||{}),this.id...
  function M (line 1) | function M(t){return t&Un?"cancel":t&Hn?"end":t&zn?"move":t&Bn?"start":""}
  function R (line 1) | function R(t){return t==dn?"down":t==fn?"up":t==pn?"left":t==hn?"right":""}
  function N (line 1) | function N(t,e){var n=e.manager;return n?n.get(t):t}
  function V (line 1) | function V(){D.apply(this,arguments)}
  function L (line 1) | function L(){V.apply(this,arguments),this.pX=null,this.pY=null}
  function F (line 1) | function F(){V.apply(this,arguments)}
  function B (line 1) | function B(){D.apply(this,arguments),this._timer=null,this._input=null}
  function z (line 1) | function z(){V.apply(this,arguments)}
  function H (line 1) | function H(){V.apply(this,arguments)}
  function Y (line 1) | function Y(){D.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this....
  function U (line 1) | function U(t,e){return e=e||{},e.recognizers=u(e.recognizers,qn.preset),...
  function q (line 1) | function q(t,e){this.options=Object.assign({},qn,e||{}),this.options.inp...
  function Z (line 1) | function Z(t,e){var n=t.element;n.style&&o(t.options.cssProps,function(t...
  function i (line 1) | function i(){this.constructor=e}
  function t (line 1) | function t(t){this.ani=new Ft.a(t),this.ani.easing("cubic-bezier(0.0, 0....
  function e (line 1) | function e(e,n){var i=t.call(this,n)||this,r=e.width()*(e.isRightSide?-1...
  function e (line 1) | function e(e,n){var i,r,o,s=t.call(this,n)||this,a=e.width();e.isRightSi...
  function e (line 1) | function e(e,n){var i,r,o=t.call(this,n)||this,s=e.width();e.isRightSide...
  function e (line 1) | function e(e){n.manager.emit(e,t)}
  function t (line 1) | function t(t,e){void 0===e&&(e={}),this._callbacks={},this.isListening=!...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return t.call(this)||this}
  function t (line 1) | function t(t){void 0===t&&(t={}),this.data=t}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s,a){var l=t.call(this,e,n,i,"label")||this;return ...
  function t (line 1) | function t(t,e,n){this._dur=null,this._es=null,this._rvEs=null,this.hasC...
  function t (line 1) | function t(t,e){this.plt=t,this._config=e,this._ids=0,this._trns={}}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"card")||this}
  function t (line 1) | function t(t){var e=this;t&&t.ready().then(function(){e._p=t.win().Tapti...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e,i,n,"list-header")||this;return ...
  function t (line 1) | function t(t){this._isScalar=!1,t&&(this._subscribe=t)}
  function t (line 1) | function t(){this._menus=[]}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,o,s,a,l,u,c,p,h){var f=t.call(this,e,a,l,"input","",o,c,p...
  function t (line 1) | function t(t){i.isFocus()&&i._dom.write(function(){return i._relocateInp...
  function t (line 1) | function t(t,e){this._elementRef=t,this._renderer=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,o,s,a,l,u,c,p){var f=t.call(this,s,a,u,"tabs")||this;f.vi...
  function t (line 1) | function t(t,e){this._app=t,this.config=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o){var s=t.call(this,e,n,i,"bar-buttons")||this;retur...
  function i (line 1) | function i(t,e,n){return"function"==typeof e?Promise.resolve(new s.a(e,n...
  function r (line 1) | function r(t,e,n){return e?Object(s.b)(e)?Promise.resolve(e):i(t,e,n):Pr...
  function t (line 1) | function t(t){this.plt=t,this.evts=[]}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"card-content")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,o,a,l,u,c,p){var h=t.call(this,e,n,o,a)||this;return h._d...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"fab")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o,s,a,l,u,c,p,h,f,d,_){var v=t.call(this,e,n,r,o,s,a,l,...
  function i (line 1) | function i(t){return r._22(2,[r._18(671088640,1,{_native:0}),(t()(),r.U(...
  function i (line 1) | function i(){return w}
  function r (line 1) | function r(){return!!window.history.pushState}
  function o (line 1) | function o(t,e){if("undefined"==typeof COMPILED||!COMPILED){(g._1.ng=g._...
  function s (line 1) | function s(t){return Object(g.O)(t)}
  function a (line 1) | function a(t){return o(V,s),o(L,Object(b.__assign)({},N,function(t){retu...
  function l (line 1) | function l(t,e,n){for(var i=0;i<e.length;i++){var r=e[i];Array.isArray(r...
  function u (line 1) | function u(t){return function(e){!1===t(e)&&(e.preventDefault(),e.return...
  function c (line 1) | function c(t,e){if(t.charCodeAt(0)===$)throw new Error("Found the synthe...
  function p (line 1) | function p(t){return(t=String(t)).match(dt)||t.match(_t)?t:(Object(g.P)(...
  function h (line 1) | function h(t){for(var e={},n=0,i=t.split(",");n<i.length;n++){e[i[n]]=!0...
  function f (line 1) | function f(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];f...
  function d (line 1) | function d(t,e){if(e&&yt.contains(t,e))throw new Error("Failed to saniti...
  function _ (line 1) | function _(t){return t.replace(/&/g,"&amp;").replace(Tt,function(t){retu...
  function v (line 1) | function v(t){yt.attributeMap(t).forEach(function(e,n){"xmlns:ns1"!==n&&...
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){var e=t.call(this)||this;e._animationPrefix=null,e._transit...
  function t (line 1) | function t(){this.resourceLoaderType=null}
  function e (line 1) | function e(e){var n=t.call(this)||this;return n._doc=e,n._init(),n}
  function t (line 1) | function t(t){this._doc=t,this._dom=i()}
  function t (line 1) | function t(){}
  function t (line 1) | function t(t){this._doc=t}
  function t (line 1) | function t(t,e){var n=this;this._zone=e,this._eventNameToPlugin=new Map,...
  function t (line 1) | function t(t){this._doc=t}
  function t (line 1) | function t(){this._stylesSet=new Set}
  function e (line 1) | function e(e){var n=t.call(this)||this;return n._doc=e,n._hostNodes=new ...
  function t (line 1) | function t(t,e){this.eventManager=t,this.sharedStylesHost=e,this.rendere...
  function t (line 1) | function t(t){this.eventManager=t,this.data=Object.create(null)}
  function e (line 1) | function e(e,n,i){var r=t.call(this,e)||this;r.component=i;var o=l(i.id,...
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e)||this;o.sharedStylesHost=n,o.ho...
  function e (line 1) | function e(e,n){var i=t.call(this,e)||this;return i.ngZone=n,i}
  function t (line 1) | function t(){this.events=[],this.overrides={}}
  function e (line 1) | function e(e,n){var i=t.call(this,e)||this;return i._config=n,i}
  function e (line 1) | function e(e){return t.call(this,e)||this}
  function t (line 1) | function t(){this.sanitizedSomething=!1,this.buf=[]}
  function e (line 1) | function e(e){var n=t.call(this)||this;return n._doc=e,n}
  function t (line 1) | function t(t){this.changingThisBreaksApplicationSecurity=t}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function t (line 1) | function t(t){if(t)throw new Error("BrowserModule has already been loade...
  function e (line 1) | function e(n,i,r){switch(t.call(this),this.syncErrorValue=null,this.sync...
  function e (line 1) | function e(e,n,i,o){t.call(this),this._parentSubscriber=e;var a,l=this;r...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e,null,r)||this;return o.enteringV...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"note")||this}
  function t (line 1) | function t(t,e,n){this._renderer=t,this._elementRef=e,this._cd=n,this._d...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,1,"div",[["class"...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function t (line 1) | function t(t,e){this._app=t,this.config=e}
  function t (line 1) | function t(t){this._listsActive=!1,this._events=new i.a(t)}
  function t (line 1) | function t(t,e){this._ngModuleLoader=t,this._injector=e,this._cfrMap=new...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o,s,a){var l=t.call(this,n,r,o,"radio")||this;return l....
  function t (line 1) | function t(){this.isActive=!1,this._disabled=!1,this.ionSelect=new i.l}
  function i (line 1) | function i(t){return Math.floor(t)}
  function r (line 1) | function r(t,e){if(t)if(t.length)for(var n=0;n<t.length;n++)r(t[n],e);el...
  function o (line 1) | function o(t,e){if(t)if(t.length)for(var n=0;n<t.length;n++)o(t[n],e);el...
  function s (line 1) | function s(t,e){if(t)if(t.length)for(var n=0;n<t.length;n++)s(t[n],e);el...
  function a (line 1) | function a(t){var e=0;if(t)for(;null!==(t=t.previousSibling);)1===t.node...
  function l (line 1) | function l(t,e){return t?t.querySelectorAll(e):[]}
  function u (line 1) | function u(t,e,n){if(t)for(var i=t.querySelectorAll(e),r=0;r<i.length;r+...
  function c (line 1) | function c(t,e){if(t){var n=t.style;n.webkitTransform=n.MsTransform=n.ms...
  function p (line 1) | function p(t,e){if(t){"string"!=typeof e&&(e+="ms");var n=t.style;n.webk...
  function h (line 1) | function h(t,e){try{var n=new(t.win().CustomEvent)("transitionend",{bubb...
  function f (line 1) | function f(t,e){if(t){var n=e.getElementBoundingClientRect(t),i=e.doc()....
  function d (line 1) | function d(t){for(var e=0;e<t._slides.length;e++)t._slides[e].swiperSlid...
  function _ (line 1) | function _(t){return"horizontal"===t.direction}
  function v (line 1) | function v(t){return!!t&&dt.indexOf(t.tagName)>-1}
  function y (line 1) | function y(t){return-t._snapGrid[0]}
  function m (line 1) | function m(t){return-t._snapGrid[t._snapGrid.length-1]}
  function g (line 1) | function g(t,e,n){var i,r,o,s=t._rtl?-1:1;i=e.getAttribute("data-swiper-...
  function b (line 1) | function b(t){u(t.container,"[data-swiper-parallax], [data-swiper-parall...
  function w (line 1) | function w(t,e){void 0===e&&(e=t._translate||0);var n=m(t)-y(t),i=t._isB...
  function C (line 1) | function C(t,e){e?t.setAttribute("aria-disabled","true"):t.hasAttribute(...
  function O (line 1) | function O(t,e){e?t.setAttribute("aria-hidden","true"):t.hasAttribute("a...
  function S (line 1) | function S(t){if(t.paginationType&&t._paginationContainer){var e="";if("...
  function E (line 1) | function E(t){s(t._slides,[_t.slideActive,_t.slideNext,_t.slidePrev,_t.s...
  function x (line 1) | function x(t){var e,n,i,r=t._rtl?t._translate:-t._translate;for(n=0;n<t....
  function T (line 1) | function T(t){var e=t._slides[t._activeIndex];e&&(t.realIndex=parseInt(e...
  function k (line 1) | function k(t,e,n,r,o){var s=0,a=0;_(t)?s=t._rtl?-n:n:a=n,t.roundLengths&...
  function P (line 1) | function P(t,e,n,i){var r,o,s,a,l=e.win();return void 0===i&&(i="x"),t.v...
  function A (line 1) | function A(t,e,n,i){p(t._wrapper,n),"slide"!==t.effect&&mt[t.effect]&&mt...
  function I (line 1) | function I(t){if(t.targetTouches.length<2)return 1;var e=t.targetTouches...
  function j (line 1) | function j(t,e,n){var i=t._zoom;if(t.originalEvent=n,!t._supportGestures...
  function D (line 1) | function D(t,e,n){var i=t._zoom;if(t.originalEvent=n,!t._supportGestures...
  function M (line 1) | function M(t,e,n){var i=t._zoom;t.originalEvent=n,!t._supportGestures&&(...
  function R (line 1) | function R(t,e){N(t);var n,i=t._zoom.unRegs,r={passive:"touchstart"===t....
  function N (line 1) | function N(t){t._zoom.unRegs.forEach(function(t){t()}),t._zoom.unRegs.le...
  function V (line 1) | function V(t,e){var n=t.autoplay,i=t._slides[t._activeIndex];i.hasAttrib...
  function L (line 1) | function L(t,e){return void 0===t._autoplayTimeoutId&&(!(!t.autoplay||t....
  function F (line 1) | function F(t){t._autoplayTimeoutId&&(t._autoplayTimeoutId&&clearTimeout(...
  function B (line 1) | function B(t,e,n){t._autoplayPaused||(t._autoplayTimeoutId&&clearTimeout...
  function z (line 1) | function z(t){var e,n=[],i=0;if("auto"!==t.slidesPerView&&t.slidesPerVie...
  function H (line 1) | function H(t,e){var n,i,r=t.container;if(n=void 0!==t.width?t.width:r.cl...
  function Y (line 1) | function Y(t,e){t._slides=t._wrapper.querySelectorAll("."+_t.slide),t._s...
  function U (line 1) | function U(t,e){var n;t._activeIndex<t.loopedSlides?(n=t._slides.length-...
  function q (line 1) | function q(t,e,n,i,r,o){void 0===r&&(r=!0),void 0===n&&(n=0),n<0&&(n=0),...
  function Z (line 1) | function Z(t,e){void 0===e&&(e=!0),t.autoHeight&&z(t),e&&t._zone.run(fun...
  function G (line 1) | function G(t,e,n){void 0===n&&(n=!0),t._animating=!1,A(t,e,0),n&&t._zone...
  function W (line 1) | function W(t,e,n,i,r){if(t.loop)return!t._animating&&(U(t,e),q(t,e,t._ac...
  function X (line 1) | function X(t,e,n,i,r){if(t.loop)return!t._animating&&(U(t,e),q(t,e,t._ac...
  function $ (line 1) | function $(t,e){var n=t.target;if(!n.matches(e))if("string"==typeof e)n=...
  function K (line 1) | function K(t,e,n){if(n.originalEvent&&(n=n.originalEvent),t.originalEven...
  function Q (line 1) | function Q(t,e,n){if(n.originalEvent&&(n=n.originalEvent),t.originalEven...
  function J (line 1) | function J(t,e,n){if(n.originalEvent&&(n=n.originalEvent),t.originalEven...
  function o (line 1) | function o(i){n=i._rtl&&_(i)?-t._translate:t._translate,"slide"===t.cont...
  function o (line 1) | function o(i){r(i,e,n,t),0!==n&&(Z(i),e.transitionEnd(i._wrapper,functio...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){var a=t.call(this,e,o,s,"slides")||this;if(a._pl...
  function i (line 1) | function i(){r=Math.min(Math.max(t._translate,m(t)),y(t)),k(t,e,r),x(t),...
  function e (line 1) | function e(e){t.call(this,e),this.destination=e}
  function e (line 1) | function e(){t.call(this),this.observers=[],this.closed=!1,this.isStoppe...
  function e (line 1) | function e(e,n){t.call(this),this.destination=e,this.source=n}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s,a){var l=t.call(this,o,i,r,"app-root")||this;retu...
  function i (line 1) | function i(t,e){var n=Object.assign({},t);return n.type=e.getType(),n.na...
  function t (line 1) | function t(t,e){this._app=t,this.links=e&&Object(o.e)(e.links)?c(e.links...
  function t (line 1) | function t(t,e,n,r,o,a,l){this._plt=e,this.elementRef=n,this._zone=r,thi...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s,a,l,u,c,p,h,f,d){var _=t.call(this,n,i,r,o,s,a,l,...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o,a){var l=t.call(this,e,r,o,"searchbar","",null,null,a...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o){var s=t.call(this,e,n.getNativeElement(),{threshold:...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s,a,l,u,c){var p=t.call(this,n,r,o,"toggle",!1,e,a,...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e,n,i,"footer")||this;return r&&r....
  function i (line 1) | function i(t){return o._22(0,[(t()(),o.U(16777216,null,null,1,null,funct...
  function r (line 1) | function r(t){return o._22(0,[o._18(402653184,1,{_highlight:0}),o._18(40...
  function i (line 1) | function i(t){return r._22(0,[r._18(402653184,1,{_vp:0}),(t()(),r.Z(1,16...
  function i (line 1) | function i(t){return t.reduce(function(t,e){return t.concat(e instanceof...
  function t (line 1) | function t(t){this.closed=!1,this._parent=null,this._parents=null,this._...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){var o=t.call(this,e,e.doc().body,{direction:"x",edge...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o,s,a,l,u,c,p,h,f,d){var _=t.call(this,r,s,l)||this;ret...
  function t (line 1) | function t(t,e,n){this.direction=t,this.dirty=!1,this._angle=0,this._isP...
  function t (line 1) | function t(t,e,n){void 0===n&&(n={}),this.plt=t,this.element=e,Object(i....
  function t (line 1) | function t(t,e,n,r,o,a){this._viewCtrl=t,this._elementRef=n,this.gesture...
  function t (line 1) | function t(t,e){this._app=t,this.config=e}
  function t (line 1) | function t(t,e,n,i,o,s,a){this._viewCtrl=t,this._elementRef=e,this._rend...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"badge")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"card-header")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"card-title")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o){return t.call(this,e,r,o,"checkbox",!1,n,i,null)||...
  function i (line 1) | function i(t,e,n,i){if(t===S||t===E){try{return e=new Date(n.year,n.mont...
  function r (line 1) | function r(t,e,n,i,r){return void 0===i&&(i=0),void 0===r&&(r=0),parseIn...
  function o (line 1) | function o(t){return t?r(t.year,t.month,t.day,t.hour,t.minute):-1}
  function s (line 1) | function s(t){var e;if(Object(_.l)(t)&&""!==t&&(e=y.exec(t),Object(_.l)(...
  function a (line 1) | function a(t,e){if(Object(_.l)(e)&&""!==e){if(Object(_.n)(e)){if(e=s(e))...
  function l (line 1) | function l(t){for(var e in L)if(L[e].f===t)return L[e].k;return null}
  function u (line 1) | function u(t){return("0"+(Object(_.l)(t)?Math.abs(t):"0")).slice(-2)}
  function c (line 1) | function c(t){return("00"+(Object(_.l)(t)?Math.abs(t):"0")).slice(-3)}
  function p (line 1) | function p(t){return("000"+(Object(_.l)(t)?Math.abs(t):"0")).slice(-4)}
  function h (line 1) | function h(t,e){Object(_.n)(t)&&(t=t.replace(/\[|\]|\s/g,"").split(","))...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){var a=t.call(this,n,i,r,"datetime",{},e,o,null)|...
  function t (line 1) | function t(t,e,n,i,o,s){this._viewCtrl=t,this._elementRef=e,this._gestur...
  function t (line 1) | function t(t,e,n,i){this._elementRef=t,this._renderer=e,this._plt=i,this...
  function t (line 1) | function t(t,e){this._elementRef=t,this._plt=e,this.ionSwipe=new i.l}
  function t (line 1) | function t(t,e,n,r,o){this._plt=e,this._renderer=n,this._elementRef=r,th...
  function t (line 1) | function t(t){this.elementRef=t,t.nativeElement.$ionComponent=this}
  function t (line 1) | function t(t,e,n,r,o,s){this._viewCtrl=t,this._config=e,this.gestureBloc...
  function t (line 1) | function t(t,e){this._app=t,this.config=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,o){var s=t.call(this,e,e.doc().body,{direction:"x",edge...
  function t (line 1) | function t(t,e,n,o,s,a,l,u,p){this._menuCtrl=t,this._elementRef=e,this._...
  function t (line 1) | function t(t,e,n,i,o,s,a){this._cfr=t,this._renderer=e,this._elementRef=...
  function t (line 1) | function t(t,e,n){this._app=t,this.config=e,this.deepLinker=n}
  function t (line 1) | function t(t){this._elementRef=t,this._selected=!1,this._disabled=!1,thi...
  function t (line 1) | function t(t,e,n,i,o,a,l,u){this._cfr=t,this._elementRef=e,this._rendere...
  function t (line 1) | function t(t,e,n){this._app=t,this.config=e,this._deepLinker=n}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,a,l,u,c){var p=t.call(this,r,a,l,"range",0,e,i,null...
  function t (line 1) | function t(){this.ionIncrease=new i.l,this.ionDecrease=new i.l}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r){return t.call(this,e,n,i,"segment",null,null,null,r)...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r,o,s,a,u){var c=t.call(this,r,o,s,"select",[],n,a,null)|...
  function t (line 1) | function t(t,e){this.navParams=t,this.viewController=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i)||this}
  function t (line 1) | function t(t,e,n){this._slides=n,e.setElementClass(t.nativeElement,"swip...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){var r=t.call(this,e,n,i,"spinner")||this;return r._dur...
  function t (line 1) | function t(t,e){this._elementRef=t,this._dom=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r){var o=t.call(this,e,n,r)||this;return o.ionSelect=new ...
  function t (line 1) | function t(t,e,n,i,o){this._viewCtrl=t,this._config=e,this._elementRef=n...
  function t (line 1) | function t(t,e){this._app=t,this.config=e}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"text")||this}
  function e (line 1) | function e(){t.apply(this,arguments)}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s,a,l,u,c,p,h,f){var d=t.call(this,null,e,n,i,r,o,s...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){void 0===i&&(i={});var o=this;return Object(r.d)(i,{ed...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r){var o=this;return n.buttons=n.buttons||[],n.enableBack...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r){void 0===n&&(n={});var o=this;return n.inputs=n.inputs...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"item-divider")||this}
  function t (line 1) | function t(t){this._menu=t}
  function t (line 1) | function t(t,e,n,i){this._menu=t,this._viewCtrl=e,this._button=n,this._i...
  function t (line 1) | function t(t){this._compiler=t}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,s,a){void 0===i&&(i={}),void 0===s&&(s={});var l=this;r...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){void 0===r&&(r={});var a=t.call(this,e,n,o,s)||t...
  function t (line 1) | function t(t,e,n){if(this._plt=e,this.zone=n,this.isMatch=!1,t){this.con...
  function i (line 1) | function i(t,e){if(!e||!e.parentNode)return!0;if(!t)return!1;if(t.defaul...
  function r (line 1) | function r(t){for(var e=t,n=0;n<10&&e;n++){if(function(t){if(d.indexOf(t...
  function t (line 1) | function t(t,e,n){this.app=t,this.dom=n,this._queue=[],this._active=[],t...
  function t (line 1) | function t(t,e,n){this.dom=n,this.highlight=new o(t,e,n)}
  function t (line 1) | function t(t,e,n,i,r){this.plt=e,this.app=i,this.gestureCtrl=r,this.disa...
  function e (line 1) | function e(){o.overflow="",o.WebkitBackfaceVisibility="",o.WebkitTransfo...
  function t (line 1) | function t(){this._channels=[]}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.Z(0,0,null,null,3,"div",[["class"...
  function i (line 1) | function i(t){return r._22(0,[r._12(null,0)],null,null)}
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,1,"ion-icon",[["c...
  function i (line 1) | function i(t){var e,n=t.Symbol;return"function"==typeof n?n.observable?e...
  function i (line 1) | function i(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e]...
  function e (line 1) | function e(e){t.call(this),this.scheduler=e}
  function t (line 1) | function t(t){this.connectable=t}
  function e (line 1) | function e(e,n){t.call(this,e),this.connectable=n}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){void 0===i&&(i={});var r=t.call(this,e,n,i)||this;retu...
  function t (line 1) | function t(t,e,n,i,r,o){this.plt=t,this.ele=e,this.pointerDown=n,this.po...
  function t (line 1) | function t(t){this.wait=t,this.timer=null}
  function t (line 1) | function t(t,e,n){this._app=t,this._plt=e,this._dom=n,this.isScrolling=!...
  function n (line 1) | function n(){f||(f=p.scrollHeight-p.parentElement.offsetHeight+t+e)}
  function r (line 1) | function r(t){d.timeStamp=t,d.velocityY&&(d.velocityY*=l,n(),o._t=Math.m...
  function r (line 1) | function r(o){if(f++,!s._el||d||f>p)return s.setScrolling(!1,null),a.sty...
  function i (line 1) | function i(t){return t.$ionIndex}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,s){void 0===n&&(n={});var a=this;return n||(n={}),n.colum...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r){void 0===n&&(n={});var s=this;return n.showBackdrop=!O...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i){return t.call(this,e,n,i,"toolbar")||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,o,a){void 0===o&&(o={});var l=this;return i=i||{},i.com...
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,i,r,o,s){void 0===r&&(r={});var a=t.call(this,e,n,o,s)||t...
  function t (line 1) | function t(t,e,n,i){this._app=t,this._component=e,this._config=n,this._d...
  function i (line 1) | function i(t){return t.testNavigatorPlatform("iphone|ipad|ipod")}
  function r (line 1) | function r(t){return t.testUserAgent("Safari")}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function e (line 1) | function e(){return null!==t&&t.apply(this,arguments)||this}
  function i (line 1) | function i(){this.constructor=e}
  function e (line 1) | function e(e,n,r){void 0===n&&(n={});var s=this;return n.dismissOnPageCh...
  function i (line 1) | function i(t,e,n){return"path"===n.get("locationStrategy")?new o.p(t,e):...
  function t (line 1) | function t(){}
  function t (line 1) | function t(t,e,n,i,r){this.plt=n,this.elementRef=i,this.renderer=r,this....
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.Z(0,0,null,null,1,"div",[["class"...
  function i (line 1) | function i(t){return r._22(0,[r._18(402653184,1,{_searchbarInput:0}),r._...
  function i (line 1) | function i(t){return r._22(0,[r._12(null,0),(t()(),r.Z(1,0,null,null,0,"...
  function e (line 1) | function e(e){t.call(this),this.errors=e;var n=Error.call(this,e?e.lengt...
  function i (line 1) | function i(t){return t?1===t.length?t[0]:function(e){return t.reduce(fun...
  function e (line 1) | function e(e,n){t.call(this),this.array=e,this.scheduler=n,n||1!==e.leng...
  function e (line 1) | function e(e,n){t.call(this),this.value=e,this.scheduler=n,this._isScala...
  function t (line 1) | function t(t,e,n){void 0===n&&(n=Number.POSITIVE_INFINITY),this.project=...
  function e (line 1) | function e(e,n,i,r){void 0===r&&(r=Number.POSITIVE_INFINITY),t.call(this...
  function i (line 1) | function i(t){var e=t.Symbol;if("function"==typeof e)return e.iterator||...
  function e (line 1) | function e(e,n,i){t.call(this),this.parent=e,this.outerValue=n,this.oute...
  function t (line 1) | function t(t,e){this.subjectFactory=t,this.selector=e}
  function e (line 1) | function e(e,n){t.call(this),this.source=e,this.subjectFactory=n,this._r...
  function e (line 1) | function e(e,n){t.call(this,e),this.connectable=n}
  function e (line 1) | function e(){var e=t.call(this,"object unsubscribed");this.name=e.name="...
  function e (line 1) | function e(e,n){t.call(this),this.subject=e,this.subscriber=n,this.close...
  function e (line 1) | function e(e,n){t.call(this),this.sources=e,this.resultSelector=n}
  function e (line 1) | function e(e,n,i){t.call(this,e),this.sources=n,this.resultSelector=i,th...
  function i (line 1) | function i(t){var e=t.subscriber;e.closed||(e.next(t.value),e.complete())}
  function e (line 1) | function e(e,n){t.call(this),this.promise=e,this.scheduler=n}
  function t (line 1) | function t(t,e){this.project=t,this.thisArg=e}
  function e (line 1) | function e(e,n,i){t.call(this,e),this.project=n,this.count=0,this.thisAr...
  function t (line 1) | function t(t){this.notifier=t}
  function e (line 1) | function e(e,n){t.call(this,e),this.notifier=n,this.add(o.subscribeToRes...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.U(16777216,null,null,1,null,funct...
  function i (line 1) | function i(t){return r._22(0,[r._18(402653184,1,{colEle:0}),(t()(),r.U(1...
  function i (line 1) | function i(t){return r._22(2,[r._18(402653184,1,{backdrop:0}),(t()(),r.Z...
  function i (line 1) | function i(t){return r._22(0,[r._18(402653184,1,{_vp:0}),(t()(),r.Z(1,16...
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.Z(0,0,null,null,1,"div",[["class"...
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.U(16777216,null,null,1,null,funct...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r._20(-1,null,["\n    "])),r._12(nu...
  function i (line 1) | function i(t){return o._22(0,[(t()(),o.U(16777216,null,null,1,null,funct...
  function r (line 1) | function r(t){return o._22(0,[o._18(402653184,1,{_slider:0}),o._12(null,...
  function i (line 1) | function i(t){return r._22(0,[(t()(),r.U(16777216,null,null,1,null,funct...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,1,"div",[["class"...
  function i (line 1) | function i(t){return r._22(2,[(t()(),r.Z(0,0,null,null,3,"div",[["class"...

FILE: content/js/ionic-angular.js
  function minErr (line 36) | function minErr(module) {
  function isArrayLike (line 248) | function isArrayLike(obj) {
  function forEach (line 290) | function forEach(obj, iterator, context) {
  function sortedKeys (line 315) | function sortedKeys(obj) {
  function forEachSorted (line 325) | function forEachSorted(obj, iterator, context) {
  function reverseParams (line 339) | function reverseParams(iteratorFn) {
  function nextUid (line 351) | function nextUid() {
  function setHashKey (line 379) | function setHashKey(obj, h) {
  function extend (line 401) | function extend(dst) {
  function int (line 415) | function int(str) {
  function inherit (line 420) | function inherit(parent, extra) {
  function noop (line 439) | function noop() {}
  function identity (line 458) | function identity($) {return $;}
  function valueFn (line 462) | function valueFn(value) {return function() {return value;};}
  function isUndefined (line 475) | function isUndefined(value){return typeof value == 'undefined';}
  function isDefined (line 489) | function isDefined(value){return typeof value != 'undefined';}
  function isObject (line 504) | function isObject(value){return value != null && typeof value == 'object';}
  function isString (line 518) | function isString(value){return typeof value == 'string';}
  function isNumber (line 532) | function isNumber(value){return typeof value == 'number';}
  function isDate (line 546) | function isDate(value){
  function isArray (line 562) | function isArray(value) {
  function isFunction (line 578) | function isFunction(value){return typeof value == 'function';}
  function isRegExp (line 588) | function isRegExp(value) {
  function isWindow (line 600) | function isWindow(obj) {
  function isScope (line 605) | function isScope(obj) {
  function isFile (line 610) | function isFile(obj) {
  function isBoolean (line 615) | function isBoolean(value) {
  function isElement (line 646) | function isElement(node) {
  function makeMap (line 656) | function makeMap(str){
  function map (line 677) | function map(obj, iterator, context) {
  function size (line 698) | function size(obj, ownPropsOnly) {
  function includes (line 713) | function includes(array, obj) {
  function indexOf (line 717) | function indexOf(array, obj) {
  function arrayRemove (line 726) | function arrayRemove(array, value) {
  function isLeafNode (line 733) | function isLeafNode (node) {
  function copy (line 801) | function copy(source, destination){
  function shallowCopy (line 845) | function shallowCopy(src, dst) {
  function equals (line 888) | function equals(o1, o2) {
  function csp (line 929) | function csp() {
  function concat (line 936) | function concat(array1, array2, index) {
  function sliceArgs (line 940) | function sliceArgs(args, startIndex) {
  function bind (line 963) | function bind(self, fn) {
  function toJsonReplacer (line 984) | function toJsonReplacer(key, value) {
  function toJson (line 1014) | function toJson(obj, pretty) {
  function fromJson (line 1031) | function fromJson(json) {
  function toBoolean (line 1038) | function toBoolean(value) {
  function startingTag (line 1051) | function startingTag(element) {
  function tryDecodeURIComponent (line 1083) | function tryDecodeURIComponent(value) {
  function parseKeyValue (line 1096) | function parseKeyValue(/**string*/keyValue) {
  function toKeyValue (line 1117) | function toKeyValue(obj) {
  function encodeUriSegment (line 1145) | function encodeUriSegment(val) {
  function encodeUriQuery (line 1164) | function encodeUriQuery(val, pctEncodeSpaces) {
  function angularInit (line 1206) | function angularInit(element, bootstrap) {
  function bootstrap (line 1268) | function bootstrap(element, modules) {
  function snake_case (line 1310) | function snake_case(name, separator){
  function bindJQuery (line 1317) | function bindJQuery() {
  function assertArg (line 1344) | function assertArg(arg, name, reason) {
  function assertArgFn (line 1351) | function assertArgFn(arg, name, acceptArrayAnnotation) {
  function assertNotHasOwnProperty (line 1366) | function assertNotHasOwnProperty(name, context) {
  function getter (line 1380) | function getter(obj, path, bindFnToScope) {
  function getBlockElements (line 1404) | function getBlockElements(block) {
  function setupModuleLoader (line 1429) | function setupModuleLoader(window) {
  function publishExternalAPI (line 1812) | function publishExternalAPI(angular){
  function jqNextId (line 2028) | function jqNextId() { return ++jqId; }
  function camelCase (line 2040) | function camelCase(name) {
  function jqLitePatchJQueryRemove (line 2056) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
  function JQLite (line 2092) | function JQLite(element) {
  function jqLiteClone (line 2117) | function jqLiteClone(element) {
  function jqLiteDealoc (line 2121) | function jqLiteDealoc(element){
  function jqLiteOff (line 2128) | function jqLiteOff(element, type, fn, unsupported) {
  function jqLiteRemoveData (line 2153) | function jqLiteRemoveData(element, name) {
  function jqLiteExpandoStore (line 2172) | function jqLiteExpandoStore(element, key, value) {
  function jqLiteData (line 2187) | function jqLiteData(element, key, value) {
  function jqLiteHasClass (line 2213) | function jqLiteHasClass(element, selector) {
  function jqLiteRemoveClass (line 2219) | function jqLiteRemoveClass(element, cssClasses) {
  function jqLiteAddClass (line 2231) | function jqLiteAddClass(element, cssClasses) {
  function jqLiteAddNodes (line 2247) | function jqLiteAddNodes(root, elements) {
  function jqLiteController (line 2258) | function jqLiteController(element, name) {
  function jqLiteInheritedData (line 2262) | function jqLiteInheritedData(element, name, value) {
  function trigger (line 2288) | function trigger() {
  function getBooleanAttrName (line 2335) | function getBooleanAttrName(element, name) {
  function getText (line 2442) | function getText(element, value) {
  function createEventHandler (line 2523) | function createEventHandler(element, events) {
  function hashKey (line 2801) | function hashKey(obj) {
  function HashMap (line 2822) | function HashMap(array){
  function annotate (line 2897) | function annotate(fn) {
  function createInjector (line 3427) | function createInjector(modulesToLoad) {
  function $AnchorScrollProvider (line 3694) | function $AnchorScrollProvider() {
  function Browser (line 3972) | function Browser(window, document, $log, $sniffer) {
  function $BrowserProvider (line 4332) | function $BrowserProvider(){
  function $CacheFactoryProvider (line 4377) | function $CacheFactoryProvider() {
  function $TemplateCacheProvider (line 4578) | function $TemplateCacheProvider() {
  function $CompileProvider (line 5066) | function $CompileProvider($provide) {
  function directiveNormalize (line 6446) | function directiveNormalize(name) {
  function nodesetLinkingFn (line 6493) | function nodesetLinkingFn(
  function directiveLinkingFn (line 6500) | function directiveLinkingFn(
  function $ControllerProvider (line 6518) | function $ControllerProvider() {
  function $DocumentProvider (line 6607) | function $DocumentProvider(){
  function $ExceptionHandlerProvider (line 6645) | function $ExceptionHandlerProvider() {
  function parseHeaders (line 6659) | function parseHeaders(headers) {
  function headersGetter (line 6694) | function headersGetter(headers) {
  function transformData (line 6719) | function transformData(data, headers, fns) {
  function isSuccess (line 6731) | function isSuccess(status) {
  function $HttpProvider (line 6736) | function $HttpProvider() {
  function $HttpBackendProvider (line 7710) | function $HttpBackendProvider() {
  function createHttpBackend (line 7717) | function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawD...
  function $InterpolateProvider (line 7870) | function $InterpolateProvider() {
  function $IntervalProvider (line 8072) | function $IntervalProvider() {
  function $LocaleProvider (line 8170) | function $LocaleProvider(){
  function encodePath (line 8243) | function encodePath(path) {
  function parseAbsoluteUrl (line 8254) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
  function parseAppUrl (line 8263) | function parseAppUrl(relativeUrl, locationObj) {
  function beginsWith (line 8288) | function beginsWith(begin, whole) {
  function stripHash (line 8295) | function stripHash(url) {
  function stripFile (line 8301) | function stripFile(url) {
  function serverBase (line 8306) | function serverBase(url) {
  function LocationHtml5Url (line 8319) | function LocationHtml5Url(appBase, basePrefix) {
  function LocationHashbangUrl (line 8387) | function LocationHashbangUrl(appBase, hashPrefix) {
  function LocationHashbangInHtml5Url (line 8443) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
  function locationGetter (line 8666) | function locationGetter(property) {
  function locationGetterSetter (line 8673) | function locationGetterSetter(property, preprocess) {
  function $LocationProvider (line 8721) | function $LocationProvider(){
  function $LogProvider (line 8932) | function $LogProvider(){
  function ensureSafeMemberName (line 9088) | function ensureSafeMemberName(name, fullExpression, allowConstructor) {
  function ensureSafeObject (line 9105) | function ensureSafeObject(obj, fullExpression) {
  function setter (line 9907) | function setter(obj, path, setValue, fullExp, options) {
  function cspSafeGetterFn (line 9945) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
  function getterFn (line 10041) | function getterFn(path, options, fullExp) {
  function $ParseProvider (line 10164) | function $ParseProvider() {
  function $QProvider (line 10467) | function $QProvider() {
  function qFactory (line 10485) | function qFactory(nextTick, exceptionHandler) {
  function $RootScopeProvider (line 10881) | function $RootScopeProvider(){
  function escapeForRegexp (line 11871) | function escapeForRegexp(s) {
  function adjustMatcher (line 11877) | function adjustMatcher(matcher) {
  function adjustMatchers (line 11905) | function adjustMatchers(matchers) {
  function $SceDelegateProvider (line 11981) | function $SceDelegateProvider() {
  function $SceProvider (line 12516) | function $SceProvider() {
  function $SnifferProvider (line 12951) | function $SnifferProvider() {
  function $TimeoutProvider (line 13025) | function $TimeoutProvider() {
  function urlResolve (line 13259) | function urlResolve(url) {
  function urlIsSameOrigin (line 13292) | function urlIsSameOrigin(requestUrl) {
  function $WindowProvider (line 13336) | function $WindowProvider(){
  function $FilterProvider (line 13416) | function $FilterProvider($provide) {
  function filterFilter (line 13573) | function filterFilter() {
  function currencyFilter (line 13723) | function currencyFilter($locale) {
  function numberFilter (line 13782) | function numberFilter($locale) {
  function formatNumber (line 13791) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
  function padNumber (line 13865) | function padNumber(num, digits, trim) {
  function dateGetter (line 13879) | function dateGetter(name, size, offset, trim) {
  function dateStrGetter (line 13890) | function dateStrGetter(name, shortForm) {
  function timeZoneGetter (line 13899) | function timeZoneGetter(date) {
  function ampmGetter (line 13909) | function ampmGetter(date, formats) {
  function dateFilter (line 14025) | function dateFilter($locale) {
  function jsonFilter (line 14128) | function jsonFilter() {
  function limitToFilter (line 14216) | function limitToFilter(){
  function orderByFilter (line 14340) | function orderByFilter($parse){
  function ngDirective (line 14391) | function ngDirective(directive) {
  function FormController (line 14827) | function FormController(element, attrs) {
  function textInputType (line 15550) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function numberInputType (line 15683) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function urlInputType (line 15745) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function emailInputType (line 15762) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
  function radioInputType (line 15779) | function radioInputType(scope, element, attr, ctrl) {
  function checkboxInputType (line 15801) | function checkboxInputType(scope, element, attr, ctrl) {
  function toggleValidCss (line 16188) | function toggleValidCss(isValid, validationErrorKey) {
  function getStringValue (line 16798) | function getStringValue() { return (parsed(scope) || '').toString(); }
  function classDirective (line 16806) | function classDirective(name, selector) {
  function setupAsSingle (line 19629) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
  function setupAsMultiple (line 19654) | function setupAsMultiple(scope, selectElement, ctrl) {
  function setupAsOptions (line 19685) | function setupAsOptions(scope, selectElement, ctrl) {
  function lookup (line 20308) | function lookup(name) {
  function performAnimation (line 20587) | function performAnimation(animationEvent, className, element, parentElem...
  function cancelChildAnimations (line 20758) | function cancelChildAnimations(element) {
  function cancelAnimations (line 20774) | function cancelAnimations(animations) {
  function cleanup (line 20786) | function cleanup(element) {
  function animationsDisabled (line 20798) | function animationsDisabled(element, parentElement) {
  function afterReflow (line 20869) | function afterReflow(callback) {
  function applyStyle (line 20882) | function applyStyle(node, style) {
  function getElementAnimationDetails (line 20889) | function getElementAnimationDetails(element, cacheKey) {
  function parseMaxTime (line 20947) | function parseMaxTime(str) {
  function getCacheKey (line 20958) | function getCacheKey(element) {
  function animateSetup (line 20968) | function animateSetup(element, className) {
  function animateRun (line 21027) | function animateRun(element, className, activeAnimationComplete) {
  function prepareStaggerDelay (line 21113) | function prepareStaggerDelay(delayStyle, staggerDelay, index) {
  function animateBefore (line 21122) | function animateBefore(element, className) {
  function animateAfter (line 21130) | function animateAfter(element, className, afterAnimationComplete) {
  function animate (line 21139) | function animate(element, className, animationComplete) {
  function animateClose (line 21167) | function animateClose(element, className) {
  function suffixClasses (line 21243) | function suffixClasses(classes, suffix) {
  function encodeUriSegment (line 21579) | function encodeUriSegment(val) {
  function encodeUriQuery (line 21598) | function encodeUriQuery(val, pctEncodeSpaces) {
  function Route (line 21607) | function Route(template, defaults) {
  function resourceFactory (line 21670) | function resourceFactory(url, paramDefaults, actions) {
  function makeMap (line 22040) | function makeMap(str) {
  function htmlParser (line 22059) | function htmlParser( html, handler ) {
  function decodeEntities (line 22197) | function decodeEntities(value) {
  function encodeEntities (line 22209) | function encodeEntities(value) {
  function htmlSanitizeWriter (line 22229) | function htmlSanitizeWriter(buf){
  function getCoordinates (line 22471) | function getCoordinates(event) {
  function hit (line 22677) | function hit(x1, y1, x2, y2) {
  function checkAllowableRegions (line 22684) | function checkAllowableRegions(touchCoordinates, x, y) {
  function onClick (line 22696) | function onClick(event) {
  function onTouchStart (line 22729) | function onTouchStart(event) {
  function preventGhostClick (line 22748) | function preventGhostClick(x, y) {
  function resetState (line 22769) | function resetState() {
  function makeSwipeDirective (line 22918) | function makeSwipeDirective(directiveName, direction, eventName) {
  function parseRepeatExpression (line 24716) | function parseRepeatExpression(expression){
  function isTagNameInList (line 24729) | function isTagNameInList(element, list){
  function findViewportAndContent (line 24741) | function findViewportAndContent(startElement){
  function setViewportCss (line 24778) | function setViewportCss(viewport){
  function setContentCss (line 24798) | function setContentCss(content){
  function computeRowHeight (line 24809) | function computeRowHeight(element){
  function makeNewScope (line 24861) | function makeNewScope (idx, collection, containerScope) {
  function addElements (line 24875) | function addElements (start, end, collection, containerScope, insPoint) {
  function recomputeActive (line 24889) | function recomputeActive() {
  function sfVirtualRepeatOnScroll (line 24901) | function sfVirtualRepeatOnScroll(evt){
  function sfVirtualRepeatWatchExpression (line 24917) | function sfVirtualRepeatWatchExpression(scope){
  function destroyActiveElements (line 24930) | function destroyActiveElements (action, count) {
  function sfVirtualRepeatListener (line 24941) | function sfVirtualRepeatListener(newValue, oldValue, scope){

FILE: content/js/ionic-docs.js
  function badChromeFix (line 87) | function badChromeFix(iframe) {
  function onScrollSpyChange (line 126) | function onScrollSpyChange(e) {
  function debounce (line 145) | function debounce(func, wait, immediate) {
  function setActive (line 165) | function setActive(hash) {
  function sendCurrentHash (line 189) | function sendCurrentHash(platform) {
  function fixyCheck (line 211) | function fixyCheck(a, b, c) {
  function fixyCheck (line 245) | function fixyCheck(a, b, c) {
  function filterIcons (line 264) | function filterIcons() {
  function escape (line 357) | function escape(value) {
  function tag (line 361) | function tag(node) {
  function testRe (line 365) | function testRe(re, lexeme) {
  function isNotHighlighted (line 370) | function isNotHighlighted(language) {
  function blockLanguage (line 374) | function blockLanguage(block) {
  function inherit (line 394) | function inherit(parent, obj) {
  function nodeStream (line 406) | function nodeStream(node) {
  function mergeStreams (line 436) | function mergeStreams(original, highlighted, value) {
  function compileLanguage (line 511) | function compileLanguage(language) {
  function highlight (line 613) | function highlight(name, value, ignore_illegals, continuation) {
  function highlightAuto (line 830) | function highlightAuto(text, languageSubset) {
  function fixMarkup (line 864) | function fixMarkup(value) {
  function buildClassName (line 876) | function buildClassName(prevClassName, currentLang, resultLang) {
  function highlightBlock (line 895) | function highlightBlock(block) {
  function configure (line 942) | function configure(user_options) {
  function initHighlighting (line 949) | function initHighlighting() {
  function initHighlightingOnLoad (line 961) | function initHighlightingOnLoad() {
  function registerLanguage (line 969) | function registerLanguage(name, language) {
  function listLanguages (line 976) | function listLanguages() {
  function getLanguage (line 980) | function getLanguage(name) {
  function searchReady (line 1820) | function searchReady(data) {
  function showResults (line 1881) | function showResults(resultsData) {
  function addResults (line 1894) | function addResults(sectionId, data, limit) {
  function hideResults (line 1915) | function hideResults() {
  function _super (line 2068) | function _super() {
  function _superApply (line 2072) | function _superApply( args ) {
  function processClassString (line 2452) | function processClassString( classes, checkOption ) {
  function handlerProxy (line 2535) | function handlerProxy() {
  function handlerProxy (line 2579) | function handlerProxy() {

FILE: content/js/ionic-highlight.js
  function escape (line 24) | function escape(value) {
  function tag (line 28) | function tag(node) {
  function testRe (line 32) | function testRe(re, lexeme) {
  function isNotHighlighted (line 37) | function isNotHighlighted(language) {
  function blockLanguage (line 41) | function blockLanguage(block) {
  function inherit (line 61) | function inherit(parent, obj) {
  function nodeStream (line 73) | function nodeStream(node) {
  function mergeStreams (line 103) | function mergeStreams(original, highlighted, value) {
  function compileLanguage (line 178) | function compileLanguage(language) {
  function highlight (line 280) | function highlight(name, value, ignore_illegals, continuation) {
  function highlightAuto (line 497) | function highlightAuto(text, languageSubset) {
  function fixMarkup (line 531) | function fixMarkup(value) {
  function buildClassName (line 543) | function buildClassName(prevClassName, currentLang, resultLang) {
  function highlightBlock (line 562) | function highlightBlock(block) {
  function configure (line 609) | function configure(user_options) {
  function initHighlighting (line 616) | function initHighlighting() {
  function initHighlightingOnLoad (line 628) | function initHighlightingOnLoad() {
  function registerLanguage (line 636) | function registerLanguage(name, language) {
  function listLanguages (line 643) | function listLanguages() {
  function getLanguage (line 647) | function getLanguage(name) {

FILE: content/js/ionic-site.js
  function p (line 7) | function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.a...
  function w (line 7) | function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"funct...
  function ga (line 7) | function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeTy...
  function ha (line 7) | function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLengt...
  function ia (line 7) | function ia(a){return a[u]=!0,a}
  function ja (line 7) | function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(...
  function ka (line 7) | function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[...
  function la (line 7) | function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourc...
  function ma (line 7) | function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"...
  function na (line 7) | function na(a){return function(b){var c=b.nodeName.toLowerCase();return(...
  function oa (line 7) | function oa(a){return function(b){return"form"in b?b.parentNode&&b.disab...
  function pa (line 7) | function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,...
  function qa (line 7) | function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}
  function ra (line 7) | function ra(){}
  function sa (line 7) | function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}
  function ta (line 7) | function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x...
  function ua (line 7) | function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e-...
  function va (line 7) | function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}
  function wa (line 7) | function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(...
  function xa (line 7) | function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)...
  function ya (line 7) | function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.r...
  function za (line 7) | function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var...
  function D (line 7) | function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!...
  function J (line 7) | function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}
  function L (line 7) | function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!...
  function M (line 7) | function M(a){return a}
  function N (line 7) | function N(a){throw a}
  function O (line 7) | function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(...
  function g (line 7) | function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(...
  function R (line 8) | function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventLi...
  function U (line 8) | function U(){this.expando=r.expando+U.uid++}
  function Z (line 8) | function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?...
  function $ (line 8) | function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.rep...
  function ea (line 8) | function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:funct...
  function ga (line 8) | function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(...
  function ha (line 8) | function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&...
  function ma (line 8) | function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagNa...
  function na (line 8) | function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",...
  function pa (line 8) | function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),...
  function ua (line 8) | function ua(){return!0}
  function va (line 8) | function va(){return!1}
  function wa (line 8) | function wa(){try{return d.activeElement}catch(a){}}
  function xa (line 8) | function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof...
  function Da (line 8) | function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeTyp...
  function Ea (line 8) | function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}
  function Fa (line 8) | function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttrib...
  function Ga (line 8) | function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&...
  function Ha (line 8) | function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.t...
  function Ia (line 8) | function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-...
  function Ja (line 8) | function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)...
  function b (line 8) | function b(){if(i){i.style.cssText="box-sizing:border-box;position:relat...
  function Na (line 8) | function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPr...
  function Oa (line 8) | function Oa(a,b){return{get:function(){return a()?void delete this.get:(...
  function Ua (line 8) | function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c...
  function Va (line 8) | function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[...
  function Wa (line 8) | function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"wid...
  function Xa (line 8) | function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizin...
  function ab (line 8) | function ab(a){var b=a.match(K)||[];return b.join(" ")}
  function bb (line 8) | function bb(a){return a.getAttribute&&a.getAttribute("class")||""}
  function ib (line 8) | function ib(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||eb....
  function jb (line 9) | function jb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}
  function b (line 15) | function b(){var a=document.createElement("bootstrap"),b={WebkitTransiti...
  function b (line 15) | function b(b){return this.each(function(){var c=a(this),e=c.data("bs.ale...
  function c (line 15) | function c(){g.detach().trigger("closed.bs.alert").remove()}
  function b (line 15) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.but...
  function b (line 15) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.car...
  function b (line 15) | function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.repla...
  function c (line 15) | function c(b){return this.each(function(){var c=a(this),e=c.data("bs.col...
  function b (line 15) | function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A...
  function c (line 15) | function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=...
  function d (line 15) | function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dro...
  function b (line 15) | function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.m...
  function b (line 15) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.too...
  function d (line 15) | function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-...
  function b (line 15) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.pop...
  function b (line 15) | function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).i...
  function c (line 15) | function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scr...
  function b (line 16) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab...
  function f (line 16) | function f(){g.removeClass("active").find("> .dropdown-menu > .active")....
  function b (line 16) | function b(b){return this.each(function(){var d=a(this),e=d.data("bs.aff...
  function e (line 25) | function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,lo...
  function n (line 25) | function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 25) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 25) | function t(e,s){n(this,t),r.initializer.load(this,s,e),this.begin()}
  function n (line 25) | function n(t){return t&&t.__esModule?t:{"default":t}}
  function i (line 25) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 25) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 25) | function t(){i(this,t)}
  function s (line 25) | function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 25) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 25) | function t(){s(this,t)}
  function linker (line 38) | function linker() {
  function getQuerystringParameter (line 92) | function getQuerystringParameter(name, querystring) {
  function updateQuerystringParameter (line 99) | function updateQuerystringParameter(uri, key, value) {
  function escape (line 161) | function escape(value) {
  function tag (line 165) | function tag(node) {
  function testRe (line 169) | function testRe(re, lexeme) {
  function isNotHighlighted (line 174) | function isNotHighlighted(language) {
  function blockLanguage (line 178) | function blockLanguage(block) {
  function inherit (line 198) | function inherit(parent, obj) {
  function nodeStream (line 210) | function nodeStream(node) {
  function mergeStreams (line 240) | function mergeStreams(original, highlighted, value) {
  function compileLanguage (line 315) | function compileLanguage(language) {
  function highlight (line 417) | function highlight(name, value, ignore_illegals, continuation) {
  function highlightAuto (line 634) | function highlightAuto(text, languageSubset) {
  function fixMarkup (line 668) | function fixMarkup(value) {
  function buildClassName (line 680) | function buildClassName(prevClassName, currentLang, resultLang) {
  function highlightBlock (line 699) | function highlightBlock(block) {
  function configure (line 746) | function configure(user_options) {
  function initHighlighting (line 753) | function initHighlighting() {
  function initHighlightingOnLoad (line 765) | function initHighlightingOnLoad() {
  function registerLanguage (line 773) | function registerLanguage(name, language) {
  function listLanguages (line 780) | function listLanguages() {
  function getLanguage (line 784) | function getLanguage(name) {
  function s4 (line 1622) | function s4() {
  function init (line 1636) | function init() {
  function addEventHandlers (line 1645) | function addEventHandlers() {
  function checkPosition (line 1649) | function checkPosition() {
  function tick (line 1779) | function tick() {
  function render (line 1849) | function render() {
  function firstPlay (line 1876) | function firstPlay () {
  function play (line 1881) | function play () {
  function pause (line 1892) | function pause () {
  function checkScroll (line 1898) | function checkScroll() {
  function checkViewport (line 1912) | function checkViewport() {

FILE: content/js/ionic.bundle.js
  function b (line 7) | function b(a,c){if("string"!=typeof a)throw new TypeError("URL must be a...
  function b (line 7) | function b(a,b){var c;if(a instanceof Error){var c=new Error(a.message,a...
  function c (line 7) | function c(a,c,d){try{new Function(a).call(d)}catch(e){throw b(e,"Evalua...
  function d (line 7) | function d(){}
  function e (line 7) | function e(){this._loader={loaderObj:this,loads:[],modules:{},importProm...
  function f (line 7) | function f(){e.call(this),this.paths={}}
  function g (line 7) | function g(a,b){var c,d="",e=0;for(var f in a){var g=f.split("*");if(g.l...
  function h (line 7) | function h(){}
  function f (line 7) | function f(a){return{status:"loading",name:a,linkSets:[],dependencies:[]...
  function g (line 7) | function g(a,b,c){return new Promise(n({step:c.address?"fetch":"locate",...
  function h (line 7) | function h(a,b,c,d){return new Promise(function(e){e(a.loaderObj.normali...
  function i (line 7) | function i(a,b){j(a,b,Promise.resolve().then(function(){return a.loaderO...
  function j (line 7) | function j(a,b,c){m(a,b,c.then(function(c){return"loading"==b.status?(b....
  function m (line 7) | function m(b,d,e){e.then(function(e){return"loading"==d.status?Promise.r...
  function n (line 7) | function n(a){return function(b){var c=a.loader,d=a.moduleName,e=a.step;...
  function o (line 7) | function o(a,b){var c={loader:a,loads:[],startingLoad:b,loadingCount:0};...
  function p (line 7) | function p(a,b){if("failed"!=b.status){for(var c=0,d=a.loads.length;d>c;...
  function q (line 7) | function q(a){var b=!1;try{w(a,function(c,d){s(a,c,d),b=!0})}catch(c){s(...
  function r (line 7) | function r(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.startin...
  function s (line 7) | function s(a,c,d){var e=a.loader;a:if(c)if(a.loads[0].name==c.name)d=b(d...
  function t (line 7) | function t(a,b){if(a.loaderObj.trace){a.loaderObj.loads||(a.loaderObj.lo...
  function u (line 7) | function u(a,b,c){try{var e=b.execute()}catch(f){return void c(b,f)}retu...
  function v (line 7) | function v(a,b,c){var d=a._loader.importPromises;return d[b]=c.then(func...
  function w (line 7) | function w(a,b){var c=a.loader;if(a.loads.length)for(var d=a.loads.conca...
  function x (line 7) | function x(a,b){return b.module.module}
  function y (line 7) | function y(){}
  function z (line 7) | function z(){throw new TypeError("ES6 transpilation is only provided in ...
  function e (line 7) | function e(){c(g.responseText)}
  function f (line 7) | function f(){d(new Error("XHR error"+(g.status?" ("+g.status+(g.statusTe...
  function e (line 12) | function e(){!function(e){function t(e,t){var n;if(e instanceof Error){v...
  function s (line 38) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function Zone (line 66) | function Zone(parentZone, data) {
  function create (line 210) | function create(name) {
  function create (line 214) | function create(name) {
  function scheduleMicrotask (line 244) | function scheduleMicrotask(fn) {
  function addMicrotaskSupport (line 248) | function addMicrotaskSupport(zoneClass) {
  function apply (line 294) | function apply() {
  function apply (line 348) | function apply() {
  function _redefineProperty (line 384) | function _redefineProperty(obj, prop, desc) {
  function isUnconfigurable (line 389) | function isUnconfigurable (obj, prop) {
  function rewriteDescriptor (line 393) | function rewriteDescriptor (obj, prop, desc) {
  function apply (line 417) | function apply() {
  function apply (line 476) | function apply() {
  function patchSetClearFunction (line 489) | function patchSetClearFunction(obj, fnNames) {
  function patchRequestAnimationFrame (line 541) | function patchRequestAnimationFrame(obj, fnNames) {
  function patchSetFunction (line 562) | function patchSetFunction(obj, fnNames) {
  function patchFunction (line 582) | function patchFunction(obj, fnNames) {
  function apply (line 610) | function apply() {
  function patchClass (line 635) | function patchClass(className) {
  function _patchPromiseFnsOnObject (line 749) | function _patchPromiseFnsOnObject(objectPath, fnNames) {
  function _patchThenable (line 769) | function _patchThenable(thenable) {
  function apply (line 788) | function apply() {
  function apply (line 826) | function apply() {
  function canPatchViaPropertyDescriptor (line 853) | function canPatchViaPropertyDescriptor() {
  function patchViaCapturingAllTheEvents (line 877) | function patchViaCapturingAllTheEvents() {
  function apply (line 906) | function apply() {
  function apply (line 952) | function apply() {
  function bindArguments (line 990) | function bindArguments(args) {
  function bindArgumentsOnce (line 999) | function bindArgumentsOnce(args) {
  function patchPrototype (line 1008) | function patchPrototype(obj, fnNames) {
  function isWebWorker (line 1019) | function isWebWorker() {
  function patchProperty (line 1023) | function patchProperty(obj, prop) {
  function patchProperties (line 1061) | function patchProperties(obj, properties) {
  function patchEventTargetMethods (line 1080) | function patchEventTargetMethods(obj) {
  function patchClass (line 1138) | function patchClass(className) {
  function lib$es6$promise$utils$$objectOrFunction (line 1211) | function lib$es6$promise$utils$$objectOrFunction(x) {
  function lib$es6$promise$utils$$isFunction (line 1215) | function lib$es6$promise$utils$$isFunction(x) {
  function lib$es6$promise$utils$$isMaybeThenable (line 1219) | function lib$es6$promise$utils$$isMaybeThenable(x) {
  function lib$es6$promise$asap$$setScheduler (line 1254) | function lib$es6$promise$asap$$setScheduler(scheduleFn) {
  function lib$es6$promise$asap$$setAsap (line 1258) | function lib$es6$promise$asap$$setAsap(asapFn) {
  function lib$es6$promise$asap$$useNextTick (line 1273) | function lib$es6$promise$asap$$useNextTick() {
  function lib$es6$promise$asap$$useVertxTimer (line 1282) | function lib$es6$promise$asap$$useVertxTimer() {
  function lib$es6$promise$asap$$useMutationObserver (line 1288) | function lib$es6$promise$asap$$useMutationObserver() {
  function lib$es6$promise$asap$$useMessageChannel (line 1300) | function lib$es6$promise$asap$$useMessageChannel() {
  function lib$es6$promise$asap$$useSetTimeout (line 1308) | function lib$es6$promise$asap$$useSetTimeout() {
  function lib$es6$promise$asap$$flush (line 1315) | function lib$es6$promise$asap$$flush() {
  function lib$es6$promise$asap$$attemptVertx (line 1329) | function lib$es6$promise$asap$$attemptVertx() {
  function lib$es6$promise$$internal$$noop (line 1354) | function lib$es6$promise$$internal$$noop() {}
  function lib$es6$promise$$internal$$selfFulfillment (line 1362) | function lib$es6$promise$$internal$$selfFulfillment() {
  function lib$es6$promise$$internal$$cannotReturnOwn (line 1366) | function lib$es6$promise$$internal$$cannotReturnOwn() {
  function lib$es6$promise$$internal$$getThen (line 1370) | function lib$es6$promise$$internal$$getThen(promise) {
  function lib$es6$promise$$internal$$tryThen (line 1379) | function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHand...
  function lib$es6$promise$$internal$$handleForeignThenable (line 1387) | function lib$es6$promise$$internal$$handleForeignThenable(promise, thena...
  function lib$es6$promise$$internal$$handleOwnThenable (line 1412) | function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {
  function lib$es6$promise$$internal$$handleMaybeThenable (line 1426) | function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeTh...
  function lib$es6$promise$$internal$$resolve (line 1444) | function lib$es6$promise$$internal$$resolve(promise, value) {
  function lib$es6$promise$$internal$$publishRejection (line 1454) | function lib$es6$promise$$internal$$publishRejection(promise) {
  function lib$es6$promise$$internal$$fulfill (line 1462) | function lib$es6$promise$$internal$$fulfill(promise, value) {
  function lib$es6$promise$$internal$$reject (line 1473) | function lib$es6$promise$$internal$$reject(promise, reason) {
  function lib$es6$promise$$internal$$subscribe (line 1481) | function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillme...
  function lib$es6$promise$$internal$$publish (line 1496) | function lib$es6$promise$$internal$$publish(promise) {
  function lib$es6$promise$$internal$$ErrorObject (line 1518) | function lib$es6$promise$$internal$$ErrorObject() {
  function lib$es6$promise$$internal$$tryCatch (line 1524) | function lib$es6$promise$$internal$$tryCatch(callback, detail) {
  function lib$es6$promise$$internal$$invokeCallback (line 1533) | function lib$es6$promise$$internal$$invokeCallback(settled, promise, cal...
  function lib$es6$promise$$internal$$initializePromise (line 1571) | function lib$es6$promise$$internal$$initializePromise(promise, resolver) {
  function lib$es6$promise$enumerator$$Enumerator (line 1583) | function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {
  function lib$es6$promise$promise$all$$all (line 1681) | function lib$es6$promise$promise$all$$all(entries) {
  function lib$es6$promise$promise$race$$race (line 1685) | function lib$es6$promise$promise$race$$race(entries) {
  function lib$es6$promise$promise$resolve$$resolve (line 1713) | function lib$es6$promise$promise$resolve$$resolve(object) {
  function lib$es6$promise$promise$reject$$reject (line 1726) | function lib$es6$promise$promise$reject$$reject(reason) {
  function lib$es6$promise$promise$$needsResolver (line 1737) | function lib$es6$promise$promise$$needsResolver() {
  function lib$es6$promise$promise$$needsNew (line 1741) | function lib$es6$promise$promise$$needsNew() {
  function lib$es6$promise$promise$$Promise (line 1849) | function lib$es6$promise$promise$$Promise(resolver) {
  function lib$es6$promise$polyfill$$polyfill (line 2126) | function lib$es6$promise$polyfill$$polyfill() {
  function s (line 2172) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function _Stacktrace (line 2194) | function _Stacktrace(e) {
  function _getStacktraceWithUncaughtError (line 2209) | function _getStacktraceWithUncaughtError () {
  function _getStacktraceWithCaughtError (line 2213) | function _getStacktraceWithCaughtError () {
  function decorate (line 2401) | function decorate(decorators, target, targetKey, targetDescriptor) {
  function metadata (line 2479) | function metadata(metadataKey, metadataValue) {
  function defineMetadata (line 2537) | function defineMetadata(metadataKey, metadataValue, target, targetKey) {
  function hasMetadata (line 2581) | function hasMetadata(metadataKey, target, targetKey) {
  function hasOwnMetadata (line 2625) | function hasOwnMetadata(metadataKey, target, targetKey) {
  function getMetadata (line 2669) | function getMetadata(metadataKey, target, targetKey) {
  function getOwnMetadata (line 2713) | function getOwnMetadata(metadataKey, target, targetKey) {
  function getMetadataKeys (line 2756) | function getMetadataKeys(target, targetKey) {
  function getOwnMetadataKeys (line 2799) | function getOwnMetadataKeys(target, targetKey) {
  function deleteMetadata (line 2843) | function deleteMetadata(metadataKey, target, targetKey) {
  function DecorateConstructor (line 2870) | function DecorateConstructor(decorators, target) {
  function DecoratePropertyWithDescriptor (line 2883) | function DecoratePropertyWithDescriptor(decorators, target, propertyKey,...
  function DecoratePropertyWithoutDescriptor (line 2896) | function DecoratePropertyWithoutDescriptor(decorators, target, propertyK...
  function GetOrCreateMetadataMap (line 2903) | function GetOrCreateMetadataMap(target, targetKey, create) {
  function OrdinaryHasMetadata (line 2923) | function OrdinaryHasMetadata(MetadataKey, O, P) {
  function OrdinaryHasOwnMetadata (line 2935) | function OrdinaryHasOwnMetadata(MetadataKey, O, P) {
  function OrdinaryGetMetadata (line 2943) | function OrdinaryGetMetadata(MetadataKey, O, P) {
  function OrdinaryGetOwnMetadata (line 2955) | function OrdinaryGetOwnMetadata(MetadataKey, O, P) {
  function OrdinaryDefineOwnMetadata (line 2963) | function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {
  function OrdinaryMetadataKeys (line 2968) | function OrdinaryMetadataKeys(O, P) {
  function OrdinaryOwnMetadataKeys (line 3002) | function OrdinaryOwnMetadataKeys(target, targetKey) {
  function IsUndefined (line 3011) | function IsUndefined(x) {
  function IsArray (line 3015) | function IsArray(x) {
  function IsObject (line 3019) | function IsObject(x) {
  function IsConstructor (line 3023) | function IsConstructor(x) {
  function IsSymbol (line 3027) | function IsSymbol(x) {
  function ToPropertyKey (line 3031) | function ToPropertyKey(value) {
  function GetPrototypeOf (line 3037) | function GetPrototypeOf(O) {
  function CreateMapPolyfill (line 3071) | function CreateMapPolyfill() {
  function CreateSetPolyfill (line 3145) | function CreateSetPolyfill() {
  function CreateWeakMapPolyfill (line 3174) | function CreateWeakMapPolyfill() {
  function __ (line 3309) | function __() {
  function getTypeNameForDebugging (line 3329) | function getTypeNameForDebugging(type) {
  function lockDevMode (line 3337) | function lockDevMode() {
  function enableDevMode (line 3341) | function enableDevMode() {
  function assertionsEnabled (line 3348) | function assertionsEnabled() {
  function CONST_EXPR (line 3353) | function CONST_EXPR(expr) {
  function CONST (line 3357) | function CONST() {
  function isPresent (line 3363) | function isPresent(obj) {
  function isBlank (line 3367) | function isBlank(obj) {
  function isString (line 3371) | function isString(obj) {
  function isFunction (line 3375) | function isFunction(obj) {
  function isType (line 3379) | function isType(obj) {
  function isStringMap (line 3383) | function isStringMap(obj) {
  function isPromise (line 3387) | function isPromise(obj) {
  function isArray (line 3391) | function isArray(obj) {
  function isNumber (line 3395) | function isNumber(obj) {
  function isDate (line 3399) | function isDate(obj) {
  function stringify (line 3403) | function stringify(token) {
  function serializeEnum (line 3418) | function serializeEnum(val) {
  function deserializeEnum (line 3422) | function deserializeEnum(val, values) {
  function StringWrapper (line 3427) | function StringWrapper() {}
  function StringJoiner (line 3481) | function StringJoiner(parts) {
  function NumberParseError (line 3498) | function NumberParseError(message) {
  function NumberWrapper (line 3509) | function NumberWrapper() {}
  function RegExpWrapper (line 3561) | function RegExpWrapper() {}
  function RegExpMatcherWrapper (line 3588) | function RegExpMatcherWrapper() {}
  function FunctionWrapper (line 3596) | function FunctionWrapper() {}
  function looseIdentical (line 3603) | function looseIdentical(a, b) {
  function getMapKey (line 3607) | function getMapKey(value) {
  function normalizeBlank (line 3611) | function normalizeBlank(obj) {
  function normalizeBool (line 3615) | function normalizeBool(obj) {
  function isJsObject (line 3619) | function isJsObject(o) {
  function print (line 3623) | function print(obj) {
  function Json (line 3628) | function Json() {}
  function DateWrapper (line 3639) | function DateWrapper() {}
  function setValueOnPath (line 3679) | function setValueOnPath(global, path, value) {
  function getSymbolIterator (line 3697) | function getSymbolIterator() {
  function PromiseWrapper (line 3723) | function PromiseWrapper() {}
  function noop (line 3783) | function noop() {}
  function throwError (line 3796) | function throwError(e) {
  function tryOrOnError (line 3811) | function tryOrOnError(target) {
  function _classCallCheck (line 3833) | function _classCallCheck(instance, Constructor) {
  function Subscription (line 3839) | function Subscription(_unsubscribe) {
  function _interopRequireDefault (line 3979) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 3982) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 3987) | function _inherits(subClass, superClass) {
  function ErrorObservable (line 4004) | function ErrorObservable(error, scheduler) {
  function _interopRequireDefault (line 4044) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4047) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4052) | function _inherits(subClass, superClass) {
  function EmptyObservable (line 4069) | function EmptyObservable(scheduler) {
  function _interopRequireDefault (line 4103) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4106) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4111) | function _inherits(subClass, superClass) {
  function OuterSubscriber (line 4128) | function OuterSubscriber() {
  function _interopRequireDefault (line 4180) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4183) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4188) | function _inherits(subClass, superClass) {
  function InnerSubscriber (line 4205) | function InnerSubscriber(parent, outerValue, outerIndex) {
  function _interopRequireDefault (line 4237) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4240) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4245) | function _inherits(subClass, superClass) {
  function ImmediateAction (line 4262) | function ImmediateAction(scheduler, work) {
  function _interopRequireDefault (line 4310) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4313) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4318) | function _inherits(subClass, superClass) {
  function FutureAction (line 4335) | function FutureAction(scheduler, work) {
  function _interopRequireDefault (line 4384) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4387) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4392) | function _inherits(subClass, superClass) {
  function DeferObservable (line 4412) | function DeferObservable(observableFactory) {
  function _interopRequireDefault (line 4442) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4445) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4450) | function _inherits(subClass, superClass) {
  function ForkJoinObservable (line 4469) | function ForkJoinObservable(observables) {
  function AllSubscriber (line 4499) | function AllSubscriber(destination, parent, index, context) {
  function hasValue (line 4519) | function hasValue(x) {
  function emptyArray (line 4522) | function emptyArray(len) {
  function _interopRequireDefault (line 4540) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4543) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4548) | function _inherits(subClass, superClass) {
  function PromiseObservable (line 4569) | function PromiseObservable(promise, scheduler) {
  function dispatchNext (line 4639) | function dispatchNext(_ref) {
  function dispatchError (line 4645) | function dispatchError(_ref2) {
  function _interopRequireDefault (line 4661) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4664) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4669) | function _inherits(subClass, superClass) {
  function IteratorObservable (line 4692) | function IteratorObservable(iterator, project, thisArg, scheduler) {
  function StringIterator (line 4784) | function StringIterator(str) {
  function ArrayIterator (line 4809) | function ArrayIterator(arr) {
  function getIterator (line 4833) | function getIterator(o) {
  function toLength (line 4846) | function toLength(o) {
  function numberIsFinite (line 4863) | function numberIsFinite(value) {
  function sign (line 4866) | function sign(value) {
  function _interopRequireDefault (line 4887) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4890) | function _classCallCheck(instance, Constructor) {
  function Notification (line 4898) | function Notification(kind, value, exception) {
  function _interopRequireDefault (line 4973) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4976) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 4981) | function _inherits(subClass, superClass) {
  function FromEventObservable (line 5003) | function FromEventObservable(sourceObj, eventName, selector) {
  function _interopRequireDefault (line 5069) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 5072) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 5077) | function _inherits(subClass, superClass) {
  function FromEventPatternObservable (line 5099) | function FromEventPatternObservable(addHandler, removeHandler, selector) {
  function isNumeric (line 5147) | function isNumeric(val) {
  function clearImmediate (line 5194) | function clearImmediate(handle) {
  function addFromSetImmediateArguments (line 5197) | function addFromSetImmediateArguments(args) {
  function partiallyApplied (line 5201) | function partiallyApplied(handler) {
  function runIfPresent (line 5215) | function runIfPresent(handle) {
  function installNextTickImplementation (line 5231) | function installNextTickImplementation() {
  function canUsePostMessage (line 5238) | function canUsePostMessage() {
  function installPostMessageImplementation (line 5250) | function installPostMessageImplementation() {
  function installMessageChannelImplementation (line 5268) | function installMessageChannelImplementation() {
  function installReadyStateChangeImplementation (line 5280) | function installReadyStateChangeImplementation() {
  function installSetTimeoutImplementation (line 5295) | function installSetTimeoutImplementation() {
  function _interopRequireDefault (line 5314) | function _interopRequireDefault(obj) {
  function _inherits (line 5317) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 5330) | function _classCallCheck(instance, Constructor) {
  function MergeAllOperator (line 5340) | function MergeAllOperator(concurrent) {
  function MergeAllSubscriber (line 5352) | function MergeAllSubscriber(destination, concurrent) {
  function _interopRequireDefault (line 5401) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 5404) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 5409) | function _inherits(subClass, superClass) {
  function InfiniteObservable (line 5426) | function InfiniteObservable() {
  function _interopRequireDefault (line 5448) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 5451) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 5456) | function _inherits(subClass, superClass) {
  function RangeObservable (line 5473) | function RangeObservable(start, end, scheduler) {
  function _interopRequireDefault (line 5543) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 5546) | function _classCallCheck(instance, Constructor) {
  function _inherits (line 5551) | function _inherits(subClass, superClass) {
  function TimerObservable (line 5572) | function TimerObservable(dueTime, period, scheduler) {
  function _interopRequireDefault (line 5643) | function _interopRequireDefault(obj) {
  function _inherits (line 5646) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 5659) | function _classCallCheck(instance, Constructor) {
  function ZipOperator (line 5677) | function ZipOperator(project) {
  function ZipSubscriber (line 5689) | function ZipSubscriber(destination, project) {
  function StaticIterator (line 5772) | function StaticIterator(iterator) {
  function StaticArrayIterator (line 5792) | function StaticArrayIterator(array) {
  function ZipBufferIterator (line 5820) | function ZipBufferIterator(destination, parent, observable, index) {
  function _interopRequireDefault (line 5878) | function _interopRequireDefault(obj) {
  function _inherits (line 5881) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 5894) | function _classCallCheck(instance, Constructor) {
  function buffer (line 5901) | function buffer(closingNotifier) {
  function BufferOperator (line 5905) | function BufferOperator(closingNotifier) {
  function BufferSubscriber (line 5916) | function BufferSubscriber(destination, closingNotifier) {
  function BufferClosingNotifierSubscriber (line 5945) | function BufferClosingNotifierSubscriber(parent) {
  function _interopRequireDefault (line 5973) | function _interopRequireDefault(obj) {
  function _inherits (line 5976) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 5989) | function _classCallCheck(instance, Constructor) {
  function bufferCount (line 5996) | function bufferCount(bufferSize) {
  function BufferCountOperator (line 6001) | function BufferCountOperator(bufferSize, startBufferEvery) {
  function BufferCountSubscriber (line 6013) | function BufferCountSubscriber(destination, bufferSize, startBufferEvery) {
  function _interopRequireDefault (line 6072) | function _interopRequireDefault(obj) {
  function _inherits (line 6075) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 6088) | function _classCallCheck(instance, Constructor) {
  function bufferTime (line 6097) | function bufferTime(bufferTimeSpan) {
  function BufferTimeOperator (line 6103) | function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, sche...
  function BufferTimeSubscriber (line 6116) | function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreatio...
  function dispatchBufferTimeSpanOnly (line 6176) | function dispatchBufferTimeSpanOnly(state) {
  function dispatchBufferCreation (line 6187) | function dispatchBufferCreation(state) {
  function dispatchBufferClose (line 6202) | function dispatchBufferClose(_ref) {
  function _interopRequireDefault (line 6219) | function _interopRequireDefault(obj) {
  function _inherits (line 6222) | function _inherits(subClass, superClass) {
  function _classCallCheck (line 6235) | function _classCallCheck(instance, Constructor) {
  function bufferToggle (line 6247) | function bufferToggle(openings, closingSelector) {
  function BufferToggleOperator (line 6251) | function BufferToggleOperator(openings, closingSelector) {
  function BufferToggleSubscriber (line 6263) | function BufferToggleSubscriber(destination, openings, closingSelector) {
  function BufferClosingNotifierSubscriber (line 6327) 
Copy disabled (too large) Download .json
Condensed preview — 847 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,923K chars).
[
  {
    "path": ".dockerignore",
    "chars": 1836,
    "preview": "### Node template\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic report"
  },
  {
    "path": ".env-docker",
    "chars": 76,
    "preview": "API_URL=http://api\nDASHBOARD_URL=http://dashboard:8080\nPORT=3000\nPROD=false\n"
  },
  {
    "path": ".gitignore",
    "chars": 378,
    "preview": ".*.sw*\n.sass-cache\n.DS_Store\nnode_modules/\n_site/\n/.idea/\n.jekyll-metadata\n.tmp\nlinkchecker.html\n\n* text=auto\n/.env\n/con"
  },
  {
    "path": ".npmrc",
    "chars": 18,
    "preview": "package-lock=false"
  },
  {
    "path": ".slugignore",
    "chars": 12,
    "preview": "assets/img/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2208,
    "preview": "The ionic website repo is licensed and managed separately from the ionic repo itself.\n\nBy contributing to the driftyco/i"
  },
  {
    "path": "Dockerfile",
    "chars": 111,
    "preview": "FROM node:16\n\nWORKDIR /usr/src/app\n\nCOPY package.json ./\n\nRUN npm i\n\nCOPY . ./\n\nEXPOSE 3000\n\nCMD npm run start\n"
  },
  {
    "path": "Gulpfile.js",
    "chars": 5971,
    "preview": "const gulp = require('gulp');\nconst $ = require('gulp-load-plugins')();\nconst browserSync = require('browser-sync');\ncon"
  },
  {
    "path": "LICENSE",
    "chars": 10756,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "Procfile",
    "chars": 20,
    "preview": "web: node server.js\n"
  },
  {
    "path": "README.md",
    "chars": 1648,
    "preview": "ionic-site\n==========\n\nRepo for the ionicframework.com site.  To preview local Ionic changes, follow the instructions at"
  },
  {
    "path": "app.json",
    "chars": 678,
    "preview": "{\n  \"addons\": [\n    \"heroku-redis\"\n  ],\n  \"buildpacks\": [\n    {\n      \"url\": \"heroku/nodejs\"\n    }\n  ],\n  \"description\":"
  },
  {
    "path": "assets/3rd-party-libs.json",
    "chars": 203,
    "preview": "{\n  \"css\": [\n\n  ],\n  \"js\": [\n    \"node_modules/jquery/dist/jquery.slim.min.js\",\n    \"node_modules/bootstrap-sass/assets/"
  },
  {
    "path": "assets/js/analytics.js",
    "chars": 5650,
    "preview": "// Google Tag Manager\n(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});v"
  },
  {
    "path": "assets/js/highlight.js",
    "chars": 44558,
    "preview": "(function(factory) {\n\n  // Setup highlight.js for different environments. First is Node.js or\n  // CommonJS.\n  if(typeof"
  },
  {
    "path": "assets/js/utils.js",
    "chars": 19033,
    "preview": "// shim foreach for ie11\nif ( !Array.prototype.forEach ) {\n  Array.prototype.forEach = function(fn, scope) {\n    for (va"
  },
  {
    "path": "assets/scss/_animations.scss",
    "chars": 7507,
    "preview": "@keyframes fadeIn {\n  0% { opacity: 0; }\n  100% { opacity: 1; }\n}\n\n@keyframes crossFadeInOut {\n  0%, 40%, 100% { opacity"
  },
  {
    "path": "assets/scss/_fonts.scss",
    "chars": 4696,
    "preview": "@import url(\"https://fonts.googleapis.com/css?family=Roboto+Mono\");\n\n$fontsDir: \"/fonts/\";\n$graphikDir: $fontsDir + \"gra"
  },
  {
    "path": "assets/scss/_general.scss",
    "chars": 7940,
    "preview": "body {\n  font-family: $font-family-default;\n  position: relative;\n  overflow-x: hidden;\n  -moz-osx-font-smoothing: grays"
  },
  {
    "path": "assets/scss/_hljs.scss",
    "chars": 2288,
    "preview": "pre {\n  background-color: white;\n}\n\n.hljs {\n  display: block;\n  padding: 0.5em;\n  background: #ffffff;\n  overflow-x: aut"
  },
  {
    "path": "assets/scss/_mixins.scss",
    "chars": 1126,
    "preview": "// mixins\n@mixin box {\n  background-color: #fff;\n  border-radius: 6px;\n  box-shadow: 0 8px 32px rgba(0,0,0,0.1),\n       "
  },
  {
    "path": "assets/scss/_theme.scss",
    "chars": 1364,
    "preview": ":root {\n  --c-white: #ffffff;\n  --c-black: #000000;\n\n  --c-blue-0: #F0F6FF;\n  --c-blue-100: #E3EDFF;\n  --c-blue-200: #CD"
  },
  {
    "path": "assets/scss/_typography.scss",
    "chars": 507,
    "preview": "h1 {\n  font-weight: 800;\n  letter-spacing: -0.04em;\n}\n\nh2,\nh3,\nh4,\nh5,\nh6 {\n  letter-spacing: -0.02em;\n  font-weight: 70"
  },
  {
    "path": "assets/scss/_vars.scss",
    "chars": 1617,
    "preview": "$font-family-inter: \"Inter\", \"Inter UI\", Helvetica, Arial, sans-serif;\n$font-family-system: apple-system, BlinkMacSystem"
  },
  {
    "path": "assets/scss/components/_alert.scss",
    "chars": 707,
    "preview": ".alert,\n.docs-container main .alert {\n  border-radius: 4px;\n  display: inline-block;\n  padding: 20px 28px;\n  position: r"
  },
  {
    "path": "assets/scss/components/_banner.scss",
    "chars": 252,
    "preview": ".banner {\n  text-align: center;\n\n  &--hero {\n    .container {\n      max-width: 700px;\n    }\n\n    h1 {\n      margin-top: "
  },
  {
    "path": "assets/scss/components/_bar-chart.scss",
    "chars": 556,
    "preview": "bar-chart,\n.survey-layout main svg {\n  width: 100%;\n  display: block;\n  margin-bottom: 48px;\n\n  > svg {\n    width: 100%;"
  },
  {
    "path": "assets/scss/components/_bar.scss",
    "chars": 376,
    "preview": ".bar {\n  &.navy {\n    background: linear-gradient(to right, #1d2534 0%,#243452 100%);\n\n    h1,\n    h2,\n    h3,\n    h4,\n "
  },
  {
    "path": "assets/scss/components/_buttons.scss",
    "chars": 4822,
    "preview": ".btn,\n.navbar .btn {\n  font-weight: 500;\n  border-radius: 4px;\n  line-height: 1.4em;\n  padding: 14px 33px 14px;\n  margin"
  },
  {
    "path": "assets/scss/components/_checkmark-list.scss",
    "chars": 1309,
    "preview": ".checkmark-list {\n  &--large {\n    max-width: 380px;\n\n    li {\n      line-height: 26px;\n      font-size: 16px;\n      let"
  },
  {
    "path": "assets/scss/components/_cta.scss",
    "chars": 3970,
    "preview": ".transparent .cta {\n  margin-top: -78px;\n  padding-top: 78px;\n}\n\n.cta {\n  color: white;\n  background: $blue;\n\n  &.gradie"
  },
  {
    "path": "assets/scss/components/_customer-callout.scss",
    "chars": 1598,
    "preview": ".customer-callout {\n  background: linear-gradient(180deg, #f9fafb 0%, #ffffff 100%);\n  margin-top: 120px;\n  margin-botto"
  },
  {
    "path": "assets/scss/components/_docs_content.scss",
    "chars": 5765,
    "preview": ".page-pro-docs {\n  .docs-container {\n    main h2 {\n      padding-top: 0.5em;\n    }\n    main p {\n      margin-top: 0.7em;"
  },
  {
    "path": "assets/scss/components/_draggable.scss",
    "chars": 2092,
    "preview": ".draggable {\n  height: 345px;\n  position: relative;\n\n  .code,\n  .app {\n    position: absolute;\n    top: 0;\n    right: 0;"
  },
  {
    "path": "assets/scss/components/_footer.scss",
    "chars": 3954,
    "preview": ".docs-container + footer {\n  display: none;\n}\n\nfooter {\n  border-top: 1px solid #f3f5f9;\n  padding-top: 70px;\n  padding-"
  },
  {
    "path": "assets/scss/components/_form.scss",
    "chars": 2882,
    "preview": ".modal form,\n.form-inline {\n  max-width: 420px;\n\n  input,\n  .select-wrapper,\n  textarea {\n    border: 1px solid #e1e5ed;"
  },
  {
    "path": "assets/scss/components/_header.scss",
    "chars": 16398,
    "preview": ".navbar-default {\n  background: linear-gradient(to right, #347eff, #1ea3ff);\n  font-family: $font-family-inter;\n  margin"
  },
  {
    "path": "assets/scss/components/_hero.scss",
    "chars": 2737,
    "preview": ".hero {\n  padding-top: 128px;\n  padding-bottom: 72px;\n  position: relative;\n\n  &.left {\n    .content {\n      width: 415p"
  },
  {
    "path": "assets/scss/components/_hubspot_form.scss",
    "chars": 7513,
    "preview": ".hbspt-form {\n  max-width: 420px;\n  margin: 0 auto;\n  font-weight: 400;\n\n  .hs-form-required {\n    display: none;\n  }\n\n "
  },
  {
    "path": "assets/scss/components/_jquery_UI.scss",
    "chars": 17341,
    "preview": "/*! jQuery UI - v1.12.1 - 2016-11-14\n* http://jqueryui.com\n* Includes: draggable.css, theme.css\n* To view and modify thi"
  },
  {
    "path": "assets/scss/components/_mobile-nav.scss",
    "chars": 5000,
    "preview": ".mobile-nav {\n  transition: opacity 0.4s;\n  position: fixed;\n  z-index: 99999;\n  top: 0;\n  right: 0;\n  left: 0;\n  bottom"
  },
  {
    "path": "assets/scss/components/_modal.scss",
    "chars": 2561,
    "preview": ".modal {\n  .control-label {\n    font-weight: 600;\n  }\n\n  .form-control {\n    font-weight: 500;\n  }\n\n  .close,\n  .go-back"
  },
  {
    "path": "assets/scss/components/_pre-header.scss",
    "chars": 3879,
    "preview": ".pre-header {\n  font-family: $font-family-inter;\n  background: #F8FAFC;\n    box-shadow: 0 1px 0px 0 rgba(0,20,56,.06);\n "
  },
  {
    "path": "assets/scss/components/_pre_footer.scss",
    "chars": 2294,
    "preview": "#pre-footer {\n  font-family: $font-family-inter;\n  background: $whiteish;\n  color: #727a87;\n  padding-top: 80px;\n  paddi"
  },
  {
    "path": "assets/scss/components/_pro_docs_content.scss",
    "chars": 3029,
    "preview": "body.docs #snap-bar + #pro-header.navbar {\n  margin-top: 22px;\n}\n\n#pro-header {\n  background: white;\n\n  .container {\n   "
  },
  {
    "path": "assets/scss/components/_resource-card.scss",
    "chars": 2815,
    "preview": ".resource-card-list {\n  display: flex;\n  flex-wrap: wrap;\n  margin-left: -16px;\n  margin-right: -16px;\n}\n\n.resource-card"
  },
  {
    "path": "assets/scss/components/_resource-promo.scss",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "assets/scss/components/_responsive_docs.scss",
    "chars": 997,
    "preview": ".responsive-docs-container.docs-container {\n  padding-top: 50px;\n\n  .responsive-side-nav {\n    width: 300px;\n    positio"
  },
  {
    "path": "assets/scss/components/_side_nav.scss",
    "chars": 6772,
    "preview": ".side-nav {\n  position: fixed;\n  background: $whiteish;\n  overflow-y: scroll;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  ove"
  },
  {
    "path": "assets/scss/components/_site-search.scss",
    "chars": 316,
    "preview": ".site-search {\n  display: flex;\n  align-items: center;\n  margin-right: 16px;\n}\n\n.site-search__trigger {\n  cursor: pointe"
  },
  {
    "path": "assets/scss/components/_snap_bar.scss",
    "chars": 1577,
    "preview": "#snap-bar {\n  background: linear-gradient(to right, #07090e, #2f4562);\n  color: rgba(255, 255, 255, .5);\n  padding: 13px"
  },
  {
    "path": "assets/scss/components/_social_share_sidebar.scss",
    "chars": 1917,
    "preview": "#social-share-sidebar {\n  right: auto;\n  left: 50px;\n  color: #bac2cf;\n  width: 200px;\n  position: fixed;\n  top: 200px;\n"
  },
  {
    "path": "assets/scss/components/_sticky-bar.scss",
    "chars": 1592,
    "preview": "#sticky-bar {\n  box-shadow: 0px 1px 0px #E9EDF3, 0px -1px 0px #E9EDF3;\n  background: white;\n  position: sticky;\n  top: 0"
  },
  {
    "path": "assets/scss/components/_sub_header.scss",
    "chars": 5570,
    "preview": "/**\n * The Sub Header sits under the main navigation to display context-specific\n * page information, widgets, and links"
  },
  {
    "path": "assets/scss/components/_tables.scss",
    "chars": 373,
    "preview": ".table {\n  > thead,\n  > thead:first-child,\n  > tbody,\n  > tbody:first-child {\n    > tr,\n    > tr:first-child {\n      > t"
  },
  {
    "path": "assets/scss/components/_tabs.scss",
    "chars": 2779,
    "preview": ".rounded-tabs {\n  background: none;\n  margin: 0 0 0 -20px;\n  padding: 0;\n  display: flex;\n\n  @media (max-width: $screen-"
  },
  {
    "path": "assets/scss/components/_tag.scss",
    "chars": 278,
    "preview": ".tag,\n.docs-container main .tag {\n  background: $blue;\n  margin-left: 10px;\n  padding: 5px 7px 4px;\n  border-radius: 4px"
  },
  {
    "path": "assets/scss/components/_testimonial-slides.scss",
    "chars": 4581,
    "preview": ".testimonial-slides {\n  position: relative;\n  transition: height 0.4s;\n\n  @media (max-width: $screen-sm-max) {\n    min-h"
  },
  {
    "path": "assets/scss/components/_tippy.scss",
    "chars": 2168,
    "preview": "tippy {\n  position: relative;\n\n  .tip {\n    position: absolute;\n    transform: scale3d(0, 0, 1);\n    transition: .15s tr"
  },
  {
    "path": "assets/scss/components/_toc.scss",
    "chars": 1424,
    "preview": ".toc {\n  margin-top: 20px;\n  // border-bottom: 1px solid #bbb;\n\n  .toggle {\n    background: none;\n    border: 0;\n    tex"
  },
  {
    "path": "assets/scss/components/_tooltip.scss",
    "chars": 148,
    "preview": ".tooltip {\n  width: 300px;\n\n  .tooltip-inner {\n    padding: 10px;\n    background: rgba(black, .85);\n  }\n\n  .tooltip-arro"
  },
  {
    "path": "assets/scss/components/_utils.scss",
    "chars": 608,
    "preview": "@media (max-width: $screen-xs-max) {\n  .hide-xs {\n    display: none;\n  }\n  .show-sm,\n  .show-md,\n  .show-lg {\n    displa"
  },
  {
    "path": "assets/scss/components/home_slides/_ioniconf.scss",
    "chars": 2132,
    "preview": "$fontFamilyRoboto: 'Roboto Mono', Menlo, monospace;\n$colorTextMain: #E9EDF3;\n$colorButtonMain: linear-gradient(74.26deg,"
  },
  {
    "path": "assets/scss/components/home_slides/_limitless.scss",
    "chars": 2207,
    "preview": "#slide-limitless {\n  background: #548fff linear-gradient(to right, #4278ff, #67a7ff);\n  background-size: 100%;\n\n  .btn {"
  },
  {
    "path": "assets/scss/components/home_slides/_one-any.scss",
    "chars": 2570,
    "preview": "#slide-one-any {\n  background: white;\n  position: relative;\n  min-height: 840px;\n  border-bottom: none;\n\n  .notification"
  },
  {
    "path": "assets/scss/components/home_slides/_react-1.scss",
    "chars": 5447,
    "preview": "#slide-ionic-react {\n  clear: both;\n  padding-block-start: 80px !important;\n  padding-block-end: 140px !important;\n  dis"
  },
  {
    "path": "assets/scss/components/home_slides/_v5.scss",
    "chars": 4297,
    "preview": "#ionic-slider #slide-ionic-5 {\n  padding-top: 160px;\n  padding-bottom: 245px;\n\n  h4 {\n    font-size: 24px;\n    line-heig"
  },
  {
    "path": "assets/scss/components/home_slides/_v6.scss",
    "chars": 4831,
    "preview": "#ionic-slider #slide-ionic-6 {\n  margin-block-start: 64px;\n\n  display: grid;\n  align-items: center;\n\n  grid-template-col"
  },
  {
    "path": "assets/scss/components/home_slides/_vue.scss",
    "chars": 2935,
    "preview": "section#slide-ionic-vue {\n  padding-top: 0px !important;\n  padding-bottom: 230px !important;\n\n  clear: both;\n\n  .arrow {"
  },
  {
    "path": "assets/scss/components/home_slides/index.scss",
    "chars": 3279,
    "preview": "@import \"../../vars\";\n\n#ionic-slider {\n  // background: #01050c;\n  display: block;\n  min-height: 860px;\n  position: rela"
  },
  {
    "path": "assets/scss/components/promos/_hybrid-vs-native.scss",
    "chars": 1526,
    "preview": "#promo--hybrid-vs-native {\n  .wrapper {\n    display: flex;\n    border-radius: 32px;\n    overflow: hidden;\n    border: 1p"
  },
  {
    "path": "assets/scss/components/promos/_index.scss",
    "chars": 12519,
    "preview": ".promo {\n  padding-top: 64px;\n  padding-bottom: 64px;\n  background-color: #f3f5f9;\n  position: relative;\n\n  .container {"
  },
  {
    "path": "assets/scss/components/promos/_ioniconf.scss",
    "chars": 1048,
    "preview": "#page-home #promo--ioniconf,\n#promo--ioniconf {\n  background: #001228 url('/img/ioniconf/ioniconf-promo-bg.png') 50% 50%"
  },
  {
    "path": "assets/scss/components/promos/_offline-storage.scss",
    "chars": 2291,
    "preview": "#promo--offline-storage {\n  background: linear-gradient(317.92deg, #7A85FB 16.45%, #EEEFFF 91.77%);\n  padding-top: 41px;"
  },
  {
    "path": "assets/scss/creator.scss",
    "chars": 26870,
    "preview": "$whitish: #f3f5f7;\n$lighter-grey: #e2e7ef;\n$light-grey: #dbe0e9;\n$lightish-grey: #a4abb9;\n$med-grey: #9bacb6;\n$darkish-g"
  },
  {
    "path": "assets/scss/ionicons-v3/_ionicons-common.scss",
    "chars": 26326,
    "preview": "@charset \"UTF-8\";\n// Ionicons Common CSS\n// --------------------------\n\n.ionicons,\n.ion-ios-add:before,\n.ion-ios-add-cir"
  },
  {
    "path": "assets/scss/ionicons-v3/_ionicons-core.scss",
    "chars": 532,
    "preview": "@import \"ionicons-variables\";\n/*!\n  Ionicons, v#{$ionicons-version}\n  Created by Ben Sperry for the Ionic Framework, htt"
  },
  {
    "path": "assets/scss/ionicons-v3/_ionicons-icons.scss",
    "chars": 45913,
    "preview": "@charset \"UTF-8\";\n// Ionicons Icon Font CSS\n// --------------------------\n\n.ion-ios-add:before { content: \"\\f102\"; }\n.io"
  },
  {
    "path": "assets/scss/ionicons-v3/_ionicons-variables.scss",
    "chars": 201,
    "preview": "@charset \"UTF-8\";\n// Ionicons Variables\n// --------------------------\n\n$ionicons-font-path: \"../fonts\" !default;\n$ionico"
  },
  {
    "path": "assets/scss/ionicons-v3/_ionicons.scss",
    "chars": 1506,
    "preview": "@import \"ionicons-variables\";\n/*!\n  Ionicons, v#{$ionicons-version}\n  Created by Ben Sperry for the Ionic Framework, htt"
  },
  {
    "path": "assets/scss/pages/_404.scss",
    "chars": 662,
    "preview": ".page-404 .four-oh-four {\n  min-height: calc(100vh - 64px);\n\n  text-align: center;\n\n  display: flex;\n  flex-direction: c"
  },
  {
    "path": "assets/scss/pages/_coming-soon.scss",
    "chars": 6240,
    "preview": ".page-coming-soon {\n  background: black;\n  .pre-header {\n    display: none;\n  }\n\n  footer {\n    border-top: none;\n  }\n  "
  },
  {
    "path": "assets/scss/pages/_contributors.scss",
    "chars": 8743,
    "preview": "#page-contributors {\n  main {\n    color: #161a1f;\n    font-weight: 600;\n  }\n\n  .btn {\n    font-size: 16px;\n    font-weig"
  },
  {
    "path": "assets/scss/pages/_demo.scss",
    "chars": 2877,
    "preview": "#page-demo .demo-cta,\n#page-strategy-session .demo-cta {\n\n  @media (max-width: $screen-xs-max) {\n    margin-top: 0;\n  }\n"
  },
  {
    "path": "assets/scss/pages/_sales.scss",
    "chars": 566,
    "preview": "#page-sales {\n  .hero {\n    padding-top: 60px;\n    padding-bottom: 0;\n    max-width: 760px;\n    margin-left: auto;\n    m"
  },
  {
    "path": "assets/scss/pages/_start.scss",
    "chars": 989,
    "preview": "#page-start {\n  .grecaptcha-badge {\n    display: flex;\n    justify-content: flex-end;\n    overflow: hidden;\n    left: 0p"
  },
  {
    "path": "assets/scss/pages/_startups.scss",
    "chars": 11283,
    "preview": "#page-startups {\n  img {\n    height: auto;\n  }\n\n  main {\n    color: #161a1f;\n    font-weight: 600;\n  }\n\n  .btn {\n    fon"
  },
  {
    "path": "assets/scss/pages/_what-is-ionic.scss",
    "chars": 6381,
    "preview": "#page-what-is-ionic {\n  .banner,\n  main {\n    font-family: $font-family-inter;\n  }\n\n  .banner {\n    max-width: 800px;\n  "
  },
  {
    "path": "assets/scss/pages/about.scss",
    "chars": 3849,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n#page-about {\n  .navbar.transparent"
  },
  {
    "path": "assets/scss/pages/angular.scss",
    "chars": 15080,
    "preview": "@import \"../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n$angular-red-1: #DD0031;\n$angular-r"
  },
  {
    "path": "assets/scss/pages/articles/_why-hybrid.scss",
    "chars": 121,
    "preview": "#page-articles-why-hybrid {\n  .signup-form .card {\n    background-image: url('/img/articles/why-hybrid-cover.jpg');\n  }\n"
  },
  {
    "path": "assets/scss/pages/auth.scss",
    "chars": 5785,
    "preview": "@import '../vars';\n\n#page-login,\n#page-signup,\n#page-start {\n  display: grid;\n  grid-template-rows: auto 1fr auto;\n  gri"
  },
  {
    "path": "assets/scss/pages/community.scss",
    "chars": 17192,
    "preview": "@import '../vars';\n@import '../mixins';\n\n#page-community {\n  img {\n    width: auto;\n    height: auto;\n  }\n\n  .banner,\n  "
  },
  {
    "path": "assets/scss/pages/contact.scss",
    "chars": 3911,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n#page-contact {\n  .navbar ~ .banner"
  },
  {
    "path": "assets/scss/pages/developers.scss",
    "chars": 3095,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n#page-developers {\n  .cta {\n    bac"
  },
  {
    "path": "assets/scss/pages/enterprise/_index_bak.scss",
    "chars": 13783,
    "preview": "#page-enterprise {\n  .navbar.transparent ~ .banner {\n    background: #293340 no-repeat center bottom\n      url(\"/img/ent"
  },
  {
    "path": "assets/scss/pages/enterprise/_shared.scss",
    "chars": 6924,
    "preview": "@import './components/ee-hero';\n\n.ee-main {\n  margin-top: 0;\n\n  section {\n    margin-bottom: 200px;\n  }\n\n  .left,\n  .rig"
  },
  {
    "path": "assets/scss/pages/enterprise/auth-connect.scss",
    "chars": 1438,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@import './shared';\n@import './s"
  },
  {
    "path": "assets/scss/pages/enterprise/components/_ee-hero.scss",
    "chars": 2400,
    "preview": ".ee-hero {\n  max-width: 640px;\n  padding-top: 130px;\n  padding-bottom: 160px;\n\n  &::before,\n  &::after {\n    display: no"
  },
  {
    "path": "assets/scss/pages/enterprise/contact.scss",
    "chars": 194,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import 'shared';\n\n.ee-hero {\n  p"
  },
  {
    "path": "assets/scss/pages/enterprise/customers.scss",
    "chars": 4810,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import 'shared';\n\nimg {\n  height"
  },
  {
    "path": "assets/scss/pages/enterprise/identity-vault.scss",
    "chars": 15585,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n@import \"./shared\";\n@import \"./s"
  },
  {
    "path": "assets/scss/pages/enterprise/index.scss",
    "chars": 13412,
    "preview": "@import \"../../vars\";\r\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\r\n@import \"../../utilities/u-ente"
  },
  {
    "path": "assets/scss/pages/enterprise/offline-storage.scss",
    "chars": 4102,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@import './shared';\n@import './s"
  },
  {
    "path": "assets/scss/pages/enterprise/platform.scss",
    "chars": 2284,
    "preview": "@import '../../vars';\n@import '../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import '"
  },
  {
    "path": "assets/scss/pages/enterprise/solutions/_shared.scss",
    "chars": 9887,
    "preview": "@import '../../../vars';\n@import '../../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n.b"
  },
  {
    "path": "assets/scss/pages/enterprise/solutions/cross-platform.scss",
    "chars": 1919,
    "preview": "@import '../../../vars';\n@import '../../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@i"
  },
  {
    "path": "assets/scss/pages/enterprise/solutions/design.scss",
    "chars": 2319,
    "preview": "@import '../../../vars';\n@import '../../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@i"
  },
  {
    "path": "assets/scss/pages/enterprise/solutions/index.scss",
    "chars": 479,
    "preview": "@import '../../../vars';\n@import '../../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@i"
  },
  {
    "path": "assets/scss/pages/enterprise/support.scss",
    "chars": 3547,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-enterprise-support {\n  .na"
  },
  {
    "path": "assets/scss/pages/enterprise/training.scss",
    "chars": 1481,
    "preview": "#page-enterprise-training {\n  .banner {\n    padding-top: 198px;\n    padding-bottom: 90px;\n\n    h1 {\n      font-size: 48p"
  },
  {
    "path": "assets/scss/pages/enterprise/why-ionic.scss",
    "chars": 1007,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import 'shared';\n\nimg {\n  height"
  },
  {
    "path": "assets/scss/pages/framework.scss",
    "chars": 28326,
    "preview": "@import \"../vars\";\n\n.page-framework {\n  img {\n    height: auto;\n  }\n\n  .primary-row {\n    text-align: center;\n\n    h1,\n "
  },
  {
    "path": "assets/scss/pages/getting-started-with-ionic-vue-1.scss",
    "chars": 12342,
    "preview": "@import '../vars';\n@import url('https://fonts.googleapis.com/css?family=Roboto+Mono');\n\n$ff-roboto: 'Roboto Mono', 'Sour"
  },
  {
    "path": "assets/scss/pages/getting-started.scss",
    "chars": 6211,
    "preview": "// #region ---------------------- IMPORTS -------------------------\n\n@import \"../vars\";\n@import \"bootstrap-sass/assets/s"
  },
  {
    "path": "assets/scss/pages/go/_pwa-architects-guide.scss",
    "chars": 5268,
    "preview": "#page-go-pwa-architects-guide,\n#page-go-why-hybrid {\n  font-family: $font-family-inter;\n\n  .banner {\n    background-colo"
  },
  {
    "path": "assets/scss/pages/go/_why-hybrid.scss",
    "chars": 189,
    "preview": "#page-go-why-hybrid {\n  main .lg::before {\n    background-image: url('/img/articles/why-hybrid-cover.jpg');\n    backgrou"
  },
  {
    "path": "assets/scss/pages/home.scss",
    "chars": 16167,
    "preview": "@import \"../vars\";\n@import \"../mixins\";\n@import \"../components/home_slides/index\";\n@import \"../components/home_slides/re"
  },
  {
    "path": "assets/scss/pages/integrations/index1.scss",
    "chars": 20638,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n.integrations-card {\n  transitio"
  },
  {
    "path": "assets/scss/pages/ioniconf-2020.scss",
    "chars": 17203,
    "preview": "//#region ----------------------------- IMPORTS ------------------------------------------\n@import \"bootstrap-sass/asset"
  },
  {
    "path": "assets/scss/pages/jobs.scss",
    "chars": 5907,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n#page-jobs {\n\n  img {\n    height: a"
  },
  {
    "path": "assets/scss/pages/native.scss",
    "chars": 11403,
    "preview": "@import '../vars';\r\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\r\n@import '../utilities/u-native';\r\n"
  },
  {
    "path": "assets/scss/pages/press/_release.scss",
    "chars": 1095,
    "preview": "body.press-release {\n  main.container {\n    font-family: $font-family-serif;\n    max-width: 730px;\n\n    h1 {\n      posit"
  },
  {
    "path": "assets/scss/pages/press/index.scss",
    "chars": 5565,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n@import \"../../mixins\";\n\n#page-pr"
  },
  {
    "path": "assets/scss/pages/pricing/__feature-lists.scss",
    "chars": 1533,
    "preview": ".feature-lists {\n  display: flex;\n  justify-content: center;\n  flex-wrap: wrap;\n\n  &::before,\n  &::after {\n    display: "
  },
  {
    "path": "assets/scss/pages/pricing/__modal.scss",
    "chars": 448,
    "preview": ".modal {\n  hgroup {\n    padding-top: 18px;\n    padding-bottom: 32px;\n  }\n\n  h3 {\n    font-size: 29px;\n    font-weight: 6"
  },
  {
    "path": "assets/scss/pages/pricing/__plan-cards.scss",
    "chars": 5776,
    "preview": "@import '../../vars';\n\n .plans {\n  display: grid;\n  margin-left: -58px;\n  margin-top: 55px;\n  font-family: $font-family-"
  },
  {
    "path": "assets/scss/pages/pricing/__table.scss",
    "chars": 6562,
    "preview": "\ntable,\n.table {\n  margin-bottom: 0;\n  min-width: 800px;\n}\n\nthead th,\ntbody td {\n  width: 20%;\n}\n\nthead {\n  th, td {\n   "
  },
  {
    "path": "assets/scss/pages/pricing/__vars.scss",
    "chars": 443,
    "preview": "$c-white: white;\n$c-carbon-400: #414D5C;\n$c-carbon-600: #27323F;\n$c-carbon-700: #1A232F;\n$c-carbon-900: #010610;\n$c-blac"
  },
  {
    "path": "assets/scss/pages/pricing/compare.scss",
    "chars": 7701,
    "preview": "@import \"../../vars\";\n@import \"./__vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n@import \"./__"
  },
  {
    "path": "assets/scss/pages/pricing/enterprise.scss",
    "chars": 8491,
    "preview": "@import '../../vars';\n@import '../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import '"
  },
  {
    "path": "assets/scss/pages/pricing/index.scss",
    "chars": 5684,
    "preview": "@import '../../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n@import './_vars';\n@import './__m"
  },
  {
    "path": "assets/scss/pages/pro/_contact.scss",
    "chars": 240,
    "preview": "#page-products-contact{\n\n    .pricing-survey{\n        width:600px;\n        margin:40px auto 40px auto;\n    }\n    \n    .c"
  },
  {
    "path": "assets/scss/pages/pro/_deploy.scss",
    "chars": 10203,
    "preview": "#page-products-deploy {\n  .top {\n    margin-top: -138px;\n    padding-top: 170px;\n    background: white;\n    text-align: "
  },
  {
    "path": "assets/scss/pages/pro/_general.scss",
    "chars": 5120,
    "preview": "// This is a collection of generics for the products pages\n.products-page {\n  font-family: $font-family-inter;\n  positio"
  },
  {
    "path": "assets/scss/pages/pro/_package.scss",
    "chars": 10494,
    "preview": "#page-products-package {\n  #sub-header > .container {\n    z-index: 2;\n  }\n\n  .top {\n    clear: both;\n    position: relat"
  },
  {
    "path": "assets/scss/pages/pro/_teams.scss",
    "chars": 8074,
    "preview": "#page-products-for-teams {\n  #sub-header > .container {\n    align-items: center;\n  }\n\n  .cta {\n    background-color: #12"
  },
  {
    "path": "assets/scss/pages/pro/index.scss",
    "chars": 32997,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-products {\n  background-co"
  },
  {
    "path": "assets/scss/pages/products/advisory.scss",
    "chars": 10116,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-products-advisory {\n  img "
  },
  {
    "path": "assets/scss/pages/products/appflow.scss",
    "chars": 30933,
    "preview": "@import \"../../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-products {\n  img {\n    hei"
  },
  {
    "path": "assets/scss/pages/pwa/_index.scss",
    "chars": 6494,
    "preview": "#page-pwa {\n  img:not(.promo__illustration) {\n    width: auto;\n  }\n  img {\n    height: auto;\n\n    &.promo__image {\n     "
  },
  {
    "path": "assets/scss/pages/pwa-toolkit.scss",
    "chars": 2833,
    "preview": "@import \"../vars\";\n@import \"../mixins\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n.banner {\n  hg"
  },
  {
    "path": "assets/scss/pages/react.scss",
    "chars": 13549,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@import './enterprise/shared';\n@imp"
  },
  {
    "path": "assets/scss/pages/resources/case-studies.scss",
    "chars": 7921,
    "preview": "@import \"../../vars\";\n@import \"../../mixins\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\nmain hgr"
  },
  {
    "path": "assets/scss/pages/resources/index.scss",
    "chars": 3758,
    "preview": "@import '../../vars';\n@import '../../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n// @impor"
  },
  {
    "path": "assets/scss/pages/resources/webinars.scss",
    "chars": 6661,
    "preview": "@import \"../../vars\";\n@import \"../../mixins\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n// hacks"
  },
  {
    "path": "assets/scss/pages/resources/whitepapers.scss",
    "chars": 4570,
    "preview": "@import \"../../vars\";\n@import \"../../mixins\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n.cta {\n "
  },
  {
    "path": "assets/scss/pages/solutions/_shared.scss",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "assets/scss/pages/subscribe.scss",
    "chars": 269,
    "preview": "@import '../vars';\n@import '../mixins';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n.subscribe {\n "
  },
  {
    "path": "assets/scss/pages/support.scss",
    "chars": 11054,
    "preview": "@import \"../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-support {\n  .cta {\n    backgr"
  },
  {
    "path": "assets/scss/pages/survey/2017.scss",
    "chars": 3614,
    "preview": "@import '../../vars';\n@import 'surveys';\n\n\n\n.survey-layout {\n  .navbar ~ .banner {\n    h2 {\n      font-weight: 700;\n    "
  },
  {
    "path": "assets/scss/pages/survey/2018.scss",
    "chars": 8927,
    "preview": "@import \"../../vars\";\n@import \"../../mixins\";\n@import \"surveys\";\n\n#page-survey-2018 {\n  .navbar ~ .banner {\n    backgrou"
  },
  {
    "path": "assets/scss/pages/survey/2020.scss",
    "chars": 9228,
    "preview": "@import '../../vars';\n\n$c-black-300: #24282E;\n$c-black-400: #17202E;\n$c-black-500: #0E151F;\n\n$c-grey-200: #F7F9FC;\n$c-gr"
  },
  {
    "path": "assets/scss/pages/survey/_surveys.scss",
    "chars": 3316,
    "preview": ".survey-layout {\n  .navbar ~ .banner {\n    background: linear-gradient(to right, #1e6fff 0%, #0499ff 100%);\n    backgrou"
  },
  {
    "path": "assets/scss/pages/team.scss",
    "chars": 4127,
    "preview": "@import '../vars';\n\n#page-team {\n  .navbar ~ .banner {\n    background: #393e49 no-repeat center top;\n    background-imag"
  },
  {
    "path": "assets/scss/pages/thank-you.scss",
    "chars": 2658,
    "preview": "@import \"../vars\";\n#page-thank-you {\n  font-family: $font-family-inter;\n\n  main {\n    padding-bottom: 0px;\n    overflow:"
  },
  {
    "path": "assets/scss/pages/translations.scss",
    "chars": 227,
    "preview": "@import '../vars';\n@import '../components/resource-card';\n\nmain {\n  margin-top: 64px;\n  margin-bottom: 64px;\n}\n\n.resourc"
  },
  {
    "path": "assets/scss/pages/trusted-partners.scss",
    "chars": 14848,
    "preview": "@import '../vars';\n@import 'bootstrap-sass/assets/stylesheets/bootstrap/variables';\n\n@import '../mixins';\n\n@mixin tp-log"
  },
  {
    "path": "assets/scss/pages/values.scss",
    "chars": 1347,
    "preview": "@import \"../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n#page-values {\n  .navbar ~ .banner "
  },
  {
    "path": "assets/scss/pages/vue.scss",
    "chars": 15194,
    "preview": "@import \"../vars\";\n@import \"bootstrap-sass/assets/stylesheets/bootstrap/variables\";\n\n:root {\n  font-size: 16px;\n}\n\n@medi"
  },
  {
    "path": "assets/scss/pygments/autumn.scss",
    "chars": 3539,
    "preview": ".highlight .hll { background-color: #ffffcc }\n.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */\n.highli"
  },
  {
    "path": "assets/scss/pygments/borland.css",
    "chars": 2989,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #008800; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/bw.css",
    "chars": 2112,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { font-style: italic } /* Comment */\n.codehilite .err { bo"
  },
  {
    "path": "assets/scss/pygments/colorful.css",
    "chars": 4221,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #808080 } /* Comment */\n.codehilite .err { color:"
  },
  {
    "path": "assets/scss/pygments/default.css",
    "chars": 3968,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite  { background: #f8f8f8; }\n.codehilite .c { color: #408080; fo"
  },
  {
    "path": "assets/scss/pygments/emacs.css",
    "chars": 3929,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #008800; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/friendly.css",
    "chars": 3957,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #60a0b0; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/fruity.css",
    "chars": 4512,
    "preview": ".codehilite .hll { background-color: #333333 }\n.codehilite .c { color: #008800; font-style: italic; background-color: #0"
  },
  {
    "path": "assets/scss/pygments/github.css",
    "chars": 3284,
    "preview": ".hll { background-color: #ffffcc }\n.c { color: #999988; font-style: italic } /* Comment */\n.err { color: #a61717; backgr"
  },
  {
    "path": "assets/scss/pygments/ionic.scss",
    "chars": 3738,
    "preview": ".highlight  { background: #ffffff; }\n.highlight .c { color: #999988; font-style: italic } /* Comment */\n.highlight .err "
  },
  {
    "path": "assets/scss/pygments/manni.css",
    "chars": 4041,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #0099FF; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/monokai.css",
    "chars": 3680,
    "preview": ".codehilite .hll { background-color: #49483e }\n.codehilite .c { color: #75715e } /* Comment */\n.codehilite .err { color:"
  },
  {
    "path": "assets/scss/pygments/murphy.css",
    "chars": 4263,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #606060; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/native.css",
    "chars": 4354,
    "preview": ".codehilite .hll { background-color: #404040 }\n.codehilite .c { color: #999999; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/pastie.css",
    "chars": 4319,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #888888 } /* Comment */\n.codehilite .err { color:"
  },
  {
    "path": "assets/scss/pygments/perldoc.css",
    "chars": 3683,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #228B22 } /* Comment */\n.codehilite .err { color:"
  },
  {
    "path": "assets/scss/pygments/tango.css",
    "chars": 4560,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #8f5902; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/trac.css",
    "chars": 3706,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #999988; font-style: italic } /* Comment */\n.code"
  },
  {
    "path": "assets/scss/pygments/vim.css",
    "chars": 4069,
    "preview": ".codehilite .hll { background-color: #222222 }\n.codehilite .c { color: #000080 } /* Comment */\n.codehilite .err { color:"
  },
  {
    "path": "assets/scss/pygments/vs.css",
    "chars": 1929,
    "preview": ".codehilite .hll { background-color: #ffffcc }\n.codehilite .c { color: #008000 } /* Comment */\n.codehilite .err { border"
  },
  {
    "path": "assets/scss/pygments/zenburn.css",
    "chars": 2337,
    "preview": "\n.codehilite code, .codehilite pre{color:#fdce93;background-color:#3f3f3f}\n.codehilite .hll{background-color:#222}\n.code"
  },
  {
    "path": "assets/scss/styles.scss",
    "chars": 4857,
    "preview": "//\n// Ionic v2\n//\n// SCSS styles for Ionicframework.com.\n// Some parts of the site still use styles in ./scss rather tha"
  },
  {
    "path": "assets/scss/utilities/u-enterprise.scss",
    "chars": 3508,
    "preview": ".d\\:flx {\r\n  display:flex;\r\n}\r\n.d\\:blk {\r\n  display:block;\r\n}\r\n.d\\:i-flx {\r\n  display:inline-flex;\r\n}\r\n.d\\:flx\\:w {\r\n  d"
  },
  {
    "path": "assets/scss/utilities/u-getting-started.scss",
    "chars": 3895,
    "preview": "@mixin box($el:'&', $back:null, $color:null, $fb: null, $mt:null, $mb:null, $ml:null,\n           $mr:null, $fg: null, $w"
  },
  {
    "path": "assets/scss/utilities/u-ioniconf.scss",
    "chars": 3080,
    "preview": ".u-flex {\n  display: flex;\n}\n.u-flex-c {\n  display:flex;\n  flex-direction:column;\n}\n.u-grow {\n  flex-grow: 1;\n}\n.u-fill "
  },
  {
    "path": "assets/scss/utilities/u-mixins.scss",
    "chars": 3904,
    "preview": "@mixin box($back:null, $color:null, $fb: null, $mis:null, $mie:null, $mbs:null, $mbe:null, $c:null,\n           $fg: null"
  },
  {
    "path": "assets/scss/utilities/u-native.scss",
    "chars": 3084,
    "preview": "// #region --------------- UTILITIES ------------------\r\n@mixin animationForward($name: unique-id(), $time: 1s, $curve: "
  },
  {
    "path": "assets/stencil/_vars.scss",
    "chars": 606,
    "preview": "// Colors\n$blue: #488aff;\n$lightblue: #b8ceff;\n$green: #2cd865;\n$yellow: #ffcb2c;\n$red: #f45454;\n\n$dark: #24282e;\n$darkg"
  },
  {
    "path": "assets/stencil/components/additional-resources/additional-resources.scss",
    "chars": 2105,
    "preview": "@import '../../vars';\n\n.resources {\n  padding-bottom: 120px;\n\n  @media (max-width: $screen-xs-max) {\n    padding-bottom:"
  },
  {
    "path": "assets/stencil/components/additional-resources/additional-resources.tsx",
    "chars": 3136,
    "preview": "import Prismic from 'prismic-javascript';\nimport { Component, Prop, h, Host, State } from '@stencil/core';\nimport defaul"
  },
  {
    "path": "assets/stencil/components/additional-resources/default.json",
    "chars": 3396,
    "preview": "[\n  {\n    \"id\": \"XFtVWhQAAB8AaRsr\",\n    \"type\": \"article\",\n    \"tags\": [\n      \"hybrid\",\n      \"introduction\"\n    ],\n   "
  },
  {
    "path": "assets/stencil/components/angular-components/angular-components.scss",
    "chars": 3957,
    "preview": "@import \"../../vars\";\n// @import '../../../../node_modules/prismjs/themes/prism-tomorrow';\n@import \"../../prism-ionic\";\n"
  },
  {
    "path": "assets/stencil/components/angular-components/angular-components.tsx",
    "chars": 9346,
    "preview": "import { Component, State, h, Prop, Watch } from '@stencil/core';\n\nimport '@ionic/core';\nimport Prism from 'prismjs';\n\ne"
  },
  {
    "path": "assets/stencil/components/app-wizard/app-wizard.scss",
    "chars": 9828,
    "preview": "ionic-app-wizard {\n  width: 100%;\n}\n\n#app-wizard {\n  height: 100%;\n  display: grid;\n  grid-template-rows: auto 1fr;\n\n  ."
  },
  {
    "path": "assets/stencil/components/app-wizard/app-wizard.tsx",
    "chars": 21635,
    "preview": "import { Component, State, h, Listen, Element } from '@stencil/core';\n\nimport { getUser } from '../../util/auth';\nimport"
  },
  {
    "path": "assets/stencil/components/auth-connect-promo/auth-connect-promo.scss",
    "chars": 4559,
    "preview": "@use '../../vars' as var;\n\n//#region -------------------------------- ANIMATIONS ------------------------------------\n@k"
  },
  {
    "path": "assets/stencil/components/auth-connect-promo/auth-connect-promo.tsx",
    "chars": 8016,
    "preview": "import { Component, Host, h, State, Listen } from '@stencil/core';\n\n\n@Component({\n  tag: 'auth-connect-promo',\n  styleUr"
  },
  {
    "path": "assets/stencil/components/bar-chart/bar-chart.scss",
    "chars": 1614,
    "preview": "@import '../../vars';\n\nbar-chart {\n  fill: currentColor;\n\n  // important necessary to override attr vals\n  path.c3-bar {"
  },
  {
    "path": "assets/stencil/components/bar-chart/bar-chart.tsx",
    "chars": 2836,
    "preview": "import { Component, Element, Prop } from '@stencil/core';\nimport c3 from 'c3';\n\n@Component({\n  tag: 'bar-chart',\n  style"
  },
  {
    "path": "assets/stencil/components/ebook-switcher/bookData.json",
    "chars": 2643,
    "preview": "{\n  \"hybrid-vs-native\": {\n    \"title\": \"Hybrid vs. Native\",\n    \"image\": {\n      \"url\": \"https://images.prismic.io/ionic"
  }
]

// ... and 647 more files (download for full content)

About this extraction

This page contains the full source code of the driftyco/ionic-site GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 847 files (23.8 MB), approximately 6.3M tokens, and a symbol index with 5954 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!