From 744023a4da808c64426db3c57fabb7bc2d4c9c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20F=C3=A9lizard?= Date: Sat, 27 Jul 2019 12:41:02 +0000 Subject: [PATCH] Upgrade to Rails 5.0 [Closes https://github.com/buckybox/webstore/issues/6] --- .gitlab-ci.yml | 2 +- .rubocop.yml | 14 +- .travis.yml | 4 + Gemfile | 6 +- Gemfile.lock | 226 +- README.md | 2 +- app/controllers/application_controller.rb | 2 +- app/controllers/authentication_controller.rb | 4 +- app/controllers/checkout_controller.rb | 2 +- app/controllers/customise_order_controller.rb | 4 +- .../delivery_options_controller.rb | 4 +- app/controllers/payment_options_controller.rb | 4 +- app/controllers/session_controller.rb | 2 +- app/controllers/store_controller.rb | 2 +- app/helpers/application_helper.rb | 12 +- app/models/checkout/checkout.rb | 2 +- app/models/checkout/customise_order.rb | 6 +- app/models/checkout/delivery_options.rb | 8 +- app/models/checkout/payment_options.rb | 22 +- app/models/order.rb | 6 +- app/services/api.rb | 6 +- .../payment_options/payment_options.html.haml | 2 +- bin/setup | 25 +- bin/update | 31 + config/application.rb | 2 +- config/cable.yml | 9 + config/environment.rb | 2 +- config/environments/development.rb | 39 +- config/environments/production.rb | 54 +- config/environments/test.rb | 9 +- .../application_controller_renderer.rb | 10 + config/initializers/cookies_serializer.rb | 2 + config/initializers/new_framework_defaults.rb | 27 + config/initializers/wrap_parameters.rb | 4 +- config/locales/en.yml | 23 + config/puma.rb | 52 +- config/secrets.yml | 6 +- config/spring.rb | 8 + features/step_definitions/webstore_steps.rb | 4 +- features/support/env.rb | 3 +- lib/address.rb | 2 +- ...fest-2487fc3d0a0e3a3fa7950f702299bdac.json | 1 - ...fest-ea678e9fc85e02793ea1d1e543eada97.json | 1 + ...3b1ad64e3ee06bdc5e886d3188c43247c00709a.js | 59 - ...ad64e3ee06bdc5e886d3188c43247c00709a.js.gz | Bin 81981 -> 0 bytes ...1b798c569aa2e38ed3d0dd009cc2faeab3b0b17.js | 18806 ++++++++++++++++ ...98c569aa2e38ed3d0dd009cc2faeab3b0b17.js.gz | Bin 0 -> 146434 bytes ...6c32d291ba4594c5403a2eb56cf9c2b3b67c39.css | 9250 ++++++++ ...2d291ba4594c5403a2eb56cf9c2b3b67c39.css.gz | Bin 0 -> 32308 bytes ...4dbedc35a7b60b67f4a1a40fc92ca6cdceea02.css | 17 - ...edc35a7b60b67f4a1a40fc92ca6cdceea02.css.gz | Bin 23555 -> 0 bytes ...98797b2dcf5c35c401d347622a0e177b50fde9.map | 1 - ...8da5d14734d58d56baeea6a31e9819e6630775.map | 1 + ...a359ac8bae65503825dd6b38dd7be725b323a0e.js | 6 - ...9ac8bae65503825dd6b38dd7be725b323a0e.js.gz | Bin 46607 -> 0 bytes ...f4fb99913546c83632d10bc19c136015ac637e9.js | 14373 ++++++++++++ ...b99913546c83632d10bc19c136015ac637e9.js.gz | Bin 0 -> 105930 bytes ...031b3537b7b7b1167634702b923257f5ed6fdf.css | 1 - ...b3537b7b7b1167634702b923257f5ed6fdf.css.gz | Bin 3003 -> 0 bytes ...a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e.css | 929 + ...e4c5bf5775e9c008b0feb1f9ab5f6c0526e.css.gz | Bin 0 -> 4254 bytes ...d294f55776cfeb085c60129a39aa6fc4ae2528.png | Bin 0 -> 2464 bytes ...f946b9a2fe61b6150480d011b72b379c3b238d.png | Bin 2586 -> 0 bytes spec/models/checkout/payment_options_spec.rb | 16 +- vendor/bin/install_phantomjs.sh | 12 - 65 files changed, 43797 insertions(+), 330 deletions(-) create mode 100755 bin/update create mode 100644 config/cable.yml create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/new_framework_defaults.rb create mode 100644 config/locales/en.yml create mode 100644 config/spring.rb delete mode 100644 public/assets/.sprockets-manifest-2487fc3d0a0e3a3fa7950f702299bdac.json create mode 100644 public/assets/.sprockets-manifest-ea678e9fc85e02793ea1d1e543eada97.json delete mode 100644 public/assets/application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js delete mode 100644 public/assets/application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js.gz create mode 100644 public/assets/application-a4a6495b561b19b1c1d1591e11b798c569aa2e38ed3d0dd009cc2faeab3b0b17.js create mode 100644 public/assets/application-a4a6495b561b19b1c1d1591e11b798c569aa2e38ed3d0dd009cc2faeab3b0b17.js.gz create mode 100644 public/assets/application-dff9f3f8e922cd0c8c03db4f606c32d291ba4594c5403a2eb56cf9c2b3b67c39.css create mode 100644 public/assets/application-dff9f3f8e922cd0c8c03db4f606c32d291ba4594c5403a2eb56cf9c2b3b67c39.css.gz delete mode 100644 public/assets/application-f38798986a4c88227b916d75d74dbedc35a7b60b67f4a1a40fc92ca6cdceea02.css delete mode 100644 public/assets/application-f38798986a4c88227b916d75d74dbedc35a7b60b67f4a1a40fc92ca6cdceea02.css.gz delete mode 100644 public/assets/leaflet-src-c3e1d834d7ca30c12e8b9950e698797b2dcf5c35c401d347622a0e177b50fde9.map create mode 100644 public/assets/leaflet-src.js-6eed528b5678ee4f34b8be267a8da5d14734d58d56baeea6a31e9819e6630775.map delete mode 100644 public/assets/map-4aa8a25cbf7a3b1c49089b140a359ac8bae65503825dd6b38dd7be725b323a0e.js delete mode 100644 public/assets/map-4aa8a25cbf7a3b1c49089b140a359ac8bae65503825dd6b38dd7be725b323a0e.js.gz create mode 100644 public/assets/map-8c9aaae2cc84ff29a3ba3492ff4fb99913546c83632d10bc19c136015ac637e9.js create mode 100644 public/assets/map-8c9aaae2cc84ff29a3ba3492ff4fb99913546c83632d10bc19c136015ac637e9.js.gz delete mode 100644 public/assets/map-9a88d1a7714d73d7ecc1c1ea35031b3537b7b7b1167634702b923257f5ed6fdf.css delete mode 100644 public/assets/map-9a88d1a7714d73d7ecc1c1ea35031b3537b7b7b1167634702b923257f5ed6fdf.css.gz create mode 100644 public/assets/map-cfe2691f2f3fbef0e4b3a17366a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e.css create mode 100644 public/assets/map-cfe2691f2f3fbef0e4b3a17366a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e.css.gz create mode 100644 public/assets/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png delete mode 100644 public/assets/marker-icon-2x-2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d.png delete mode 100755 vendor/bin/install_phantomjs.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 04eb7fe..641b6e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,5 +19,5 @@ before_script: integration: script: - - ./vendor/bin/install_phantomjs.sh + - apt-get update -q && apt-get install chromium-driver -yq - ./bin/ci diff --git a/.rubocop.yml b/.rubocop.yml index bd8e002..b9f98a5 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,8 @@ require: rubocop-rspec +RSpec/FilePath: + Enabled: false + RSpec/NestedGroups: Enabled: false @@ -37,6 +40,7 @@ Metrics: Enabled: false # Naming + Naming/PredicateName: Enabled: false @@ -45,17 +49,21 @@ Naming/PredicateName: Rails: Enabled: true -Rails/FilePath: - Enabled: false - # Style Style/Documentation: Enabled: false +Style/FrozenStringLiteralComment: + Exclude: + - features/step_definitions/*.rb + Style/GlobalVars: AllowedVariables: [$redis] +Style/MixinUsage: + Exclude: [bin/*] + Style/SafeNavigation: Enabled: false diff --git a/.travis.yml b/.travis.yml index 09c9c98..85fbe2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,3 +5,7 @@ script: ./bin/ci after_script: '[ "$TRAVIS_RUBY_VERSION" != "2.5.6" ] || bundle exec rake coveralls:push' rvm: - 2.5.6 +- 2.6.4 +matrix: + allow_failures: + - rvm: 2.6.4 diff --git a/Gemfile b/Gemfile index 370c8dc..39964dd 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "rails", "~> 4.2" +gem "rails", "~> 5.0.0" gem "puma" gem "sass-rails" gem "uglifier" # Use Uglifier as compressor for JavaScript assets @@ -16,7 +16,7 @@ gem "jquery-rails" # Use jquery as the JavaScript library # Our additional Gems are listed below gem "secure_headers", "< 4" # TODO: upgrade -gem "rails-i18n" +gem "rails-i18n", "~> 5.1" # for 5.0.x, 5.1.x and 5.2.x gem "crazy_money" gem "ordinalize_full", require: "ordinalize_full/integer" gem "buckybox-api" # to use the git version: git: "https://github.com/buckybox/buckybox-api-ruby" @@ -61,7 +61,7 @@ group :test do gem "cucumber-rails", require: false gem "capybara", require: false gem "capybara-screenshot" - gem "poltergeist", require: false + gem "selenium-webdriver", require: false gem "webmock", require: false gem "vcr", require: false end diff --git a/Gemfile.lock b/Gemfile.lock index ad02095..59072c5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,43 +1,50 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.2.11.1) - actionpack (= 4.2.11.1) - actionview (= 4.2.11.1) - activejob (= 4.2.11.1) + actioncable (5.0.7.2) + actionpack (= 5.0.7.2) + nio4r (>= 1.2, < 3.0) + websocket-driver (~> 0.6.1) + actionmailer (5.0.7.2) + actionpack (= 5.0.7.2) + actionview (= 5.0.7.2) + activejob (= 5.0.7.2) mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.11.1) - actionview (= 4.2.11.1) - activesupport (= 4.2.11.1) - rack (~> 1.6) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.5) + rails-dom-testing (~> 2.0) + actionpack (5.0.7.2) + actionview (= 5.0.7.2) + activesupport (= 5.0.7.2) + rack (~> 2.0) + rack-test (~> 0.6.3) + rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.11.1) - activesupport (= 4.2.11.1) + actionview (5.0.7.2) + activesupport (= 5.0.7.2) builder (~> 3.1) erubis (~> 2.7.0) - rails-dom-testing (~> 1.0, >= 1.0.5) + rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (4.2.11.1) - activesupport (= 4.2.11.1) - globalid (>= 0.3.0) - activemodel (4.2.11.1) - activesupport (= 4.2.11.1) + activejob (5.0.7.2) + activesupport (= 5.0.7.2) + globalid (>= 0.3.6) + activemodel (5.0.7.2) + activesupport (= 5.0.7.2) + activemodel-serializers-xml (1.0.2) + activemodel (> 5.x) + activesupport (> 5.x) builder (~> 3.1) - activerecord (4.2.11.1) - activemodel (= 4.2.11.1) - activesupport (= 4.2.11.1) - arel (~> 6.0) - activesupport (4.2.11.1) - i18n (~> 0.7) + activerecord (5.0.7.2) + activemodel (= 5.0.7.2) + activesupport (= 5.0.7.2) + arel (~> 7.0) + activesupport (5.0.7.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.5.2) + addressable (2.6.0) public_suffix (>= 2.0.2, < 4.0) - arel (6.0.4) + arel (7.1.4) ast (2.4.0) autoprefixer-rails (8.2.0) execjs @@ -45,7 +52,7 @@ GEM descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) - backports (3.11.1) + backports (3.15.0) better_errors (2.4.0) coderay (>= 1.0.0) erubi (>= 1.0.0) @@ -67,17 +74,19 @@ GEM bundler (~> 1.2) thor (~> 0.18) byebug (10.0.1) - capybara (2.18.0) + capybara (3.27.0) addressable mini_mime (>= 0.1.3) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - xpath (>= 2.0, < 4.0) - capybara-screenshot (1.0.18) - capybara (>= 1.0, < 3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (~> 1.5) + xpath (~> 3.2) + capybara-screenshot (1.0.23) + capybara (>= 1.0, < 4) launchy - cliver (0.3.2) + childprocess (1.0.1) + rake (< 13.0) coderay (1.1.2) coercible (1.0.0) descendants_tracker (~> 0.0.1) @@ -101,26 +110,26 @@ GEM crazy_money (1.4.0) currency_data (>= 1.1.0) i18n (>= 0.7) - cucumber (3.1.0) + cucumber (3.1.2) builder (>= 2.1.2) - cucumber-core (~> 3.1.0) - cucumber-expressions (~> 5.0.4) + cucumber-core (~> 3.2.0) + cucumber-expressions (~> 6.0.1) cucumber-wire (~> 0.0.1) diff-lcs (~> 1.3) - gherkin (~> 5.0) + gherkin (~> 5.1.0) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.1.2) - cucumber-core (3.1.0) + cucumber-core (3.2.1) backports (>= 3.8.0) cucumber-tag_expressions (~> 1.1.0) - gherkin (>= 5.0.0) - cucumber-expressions (5.0.13) - cucumber-rails (1.5.0) - capybara (>= 1.1.2, < 3) - cucumber (>= 1.3.8, < 4) + gherkin (~> 5.0) + cucumber-expressions (6.0.1) + cucumber-rails (1.7.0) + capybara (>= 2.3.0, < 4) + cucumber (>= 3.0.2, < 4) mime-types (>= 1.17, < 4) - nokogiri (~> 1.5) - railties (>= 4, < 5.2) + nokogiri (~> 1.8) + railties (>= 4.2, < 7) cucumber-tag_expressions (1.1.1) cucumber-wire (0.0.1) currency_data (1.1.0) @@ -129,13 +138,14 @@ GEM thread_safe (~> 0.3, >= 0.3.1) diff-lcs (1.3) docile (1.1.5) - draper (2.1.0) - actionpack (>= 3.0) - activemodel (>= 3.0) - activesupport (>= 3.0) - request_store (~> 1.0) + draper (3.1.0) + actionpack (>= 5.0) + activemodel (>= 5.0) + activemodel-serializers-xml (>= 1.0) + activesupport (>= 5.0) + request_store (>= 1.0) equalizer (0.0.11) - erubi (1.7.1) + erubi (1.8.0) erubis (2.7.0) ethon (0.11.0) ffi (>= 1.3.0) @@ -144,7 +154,7 @@ GEM ffi (1.10.0) figaro (1.1.1) thor (~> 0.14) - gherkin (5.0.0) + gherkin (5.1.0) globalid (0.4.2) activesupport (>= 4.2.0) haml (5.0.4) @@ -167,6 +177,7 @@ GEM i18n (0.9.5) concurrent-ruby (~> 1.0) ice_nine (0.11.2) + jaro_winkler (1.5.3) jquery-rails (4.3.1) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) @@ -182,67 +193,64 @@ GEM nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) - mime-types (3.1) + method_source (0.9.2) + mime-types (3.2.2) mime-types-data (~> 3.2015) - mime-types-data (3.2016.0521) - mini_mime (1.0.1) + mime-types-data (3.2019.0331) + mini_mime (1.0.2) mini_portile2 (2.4.0) minitest (5.11.3) multi_json (1.13.1) multi_test (0.1.2) naught (1.1.0) + nio4r (2.5.1) nokogiri (1.10.4) mini_portile2 (~> 2.4.0) oj (3.5.0) ordinalize_full (1.5.0) i18n (~> 0.8) - parallel (1.12.1) - parser (2.5.0.5) + parallel (1.17.0) + parser (2.6.3.0) ast (~> 2.4.0) - poltergeist (1.17.0) - capybara (~> 2.1) - cliver (~> 0.3.1) - websocket-driver (>= 0.2.0) - powerpack (0.1.1) - public_suffix (3.0.2) + public_suffix (3.1.1) puma (3.11.3) - rack (1.6.11) + rack (2.0.7) rack-test (0.6.3) rack (>= 1.0) - rails (4.2.11.1) - actionmailer (= 4.2.11.1) - actionpack (= 4.2.11.1) - actionview (= 4.2.11.1) - activejob (= 4.2.11.1) - activemodel (= 4.2.11.1) - activerecord (= 4.2.11.1) - activesupport (= 4.2.11.1) - bundler (>= 1.3.0, < 2.0) - railties (= 4.2.11.1) - sprockets-rails - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.9) - activesupport (>= 4.2.0, < 5.0) - nokogiri (~> 1.6) - rails-deprecated_sanitizer (>= 1.0.1) + rails (5.0.7.2) + actioncable (= 5.0.7.2) + actionmailer (= 5.0.7.2) + actionpack (= 5.0.7.2) + actionview (= 5.0.7.2) + activejob (= 5.0.7.2) + activemodel (= 5.0.7.2) + activerecord (= 5.0.7.2) + activesupport (= 5.0.7.2) + bundler (>= 1.3.0) + railties (= 5.0.7.2) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) rails-html-sanitizer (1.0.4) loofah (~> 2.2, >= 2.2.2) - rails-i18n (4.0.9) - i18n (~> 0.7) - railties (~> 4.0) - railties (4.2.11.1) - actionpack (= 4.2.11.1) - activesupport (= 4.2.11.1) + rails-i18n (5.1.3) + i18n (>= 0.7, < 2) + railties (>= 5.0, < 6) + railties (5.0.7.2) + actionpack (= 5.0.7.2) + activesupport (= 5.0.7.2) + method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (3.0.0) - rake (12.3.2) + rake (12.3.3) rb-fsevent (0.10.3) rb-inotify (0.10.0) ffi (~> 1.0) redis (4.0.1) ref (2.0.0) + regexp_parser (1.6.0) request_store (1.4.1) rack (>= 1.4) rspec-core (3.7.1) @@ -262,18 +270,19 @@ GEM rspec-mocks (~> 3.7.0) rspec-support (~> 3.7.0) rspec-support (3.7.1) - rubocop (0.54.0) + rubocop (0.73.0) + jaro_winkler (~> 1.5.1) parallel (~> 1.10) - parser (>= 2.5) - powerpack (~> 0.1) + parser (>= 2.6) rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) + unicode-display_width (>= 1.4.0, < 1.7) rubocop-rspec (1.24.0) rubocop (>= 0.53.0) - ruby-progressbar (1.9.0) + ruby-progressbar (1.10.1) ruby_parser (3.11.0) sexp_processor (~> 4.9) + rubyzip (1.2.3) safe_yaml (1.0.4) sass (3.7.4) sass-listen (~> 4.0.0) @@ -290,10 +299,13 @@ GEM useragent select2-rails (3.5.10) thor (~> 0.14) + selenium-webdriver (3.142.3) + childprocess (>= 0.5, < 2.0) + rubyzip (~> 1.2, >= 1.2.2) sexp_processor (4.10.1) - simple_form (3.5.1) - actionpack (> 4, < 5.2) - activemodel (> 4, < 5.2) + simple_form (4.1.0) + actionpack (>= 5.0) + activemodel (>= 5.0) simplecov (0.14.1) docile (~> 1.1.0) json (>= 1.8, < 3) @@ -322,7 +334,7 @@ GEM thread_safe (~> 0.1) uglifier (4.1.8) execjs (>= 0.3.0, < 3) - unicode-display_width (1.3.0) + unicode-display_width (1.6.0) useragent (0.16.10) vcr (4.0.0) virtus (1.0.5) @@ -334,10 +346,10 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff - websocket-driver (0.7.0) + websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.3) - xpath (3.0.0) + websocket-extensions (0.1.4) + xpath (3.2.0) nokogiri (~> 1.8) PLATFORMS @@ -369,11 +381,10 @@ DEPENDENCIES leaflet-rails naught ordinalize_full - poltergeist puma - rails (~> 4.2) + rails (~> 5.0.0) rails-html-sanitizer - rails-i18n + rails-i18n (~> 5.1) redis rspec-rails rubocop @@ -381,6 +392,7 @@ DEPENDENCIES sass-rails secure_headers (< 4) select2-rails (< 4) + selenium-webdriver simple_form simplecov (< 0.15) therubyracer diff --git a/README.md b/README.md index 58d201f..59cd3fd 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ New translations can be fetched with `tx pull -af`. ```bash ./bin/ci # or -git commit && gitlab-ci-multi-runner exec docker integration +git commit && gitlab-runner exec docker integration ``` ## License diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f5fcc5f..8ff5de0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,7 +6,7 @@ class ApplicationController < ActionController::Base force_ssl if: :ssl_configured?, except: :ping def ping - render text: "Pong!" + render plain: "Pong!" end private diff --git a/app/controllers/authentication_controller.rb b/app/controllers/authentication_controller.rb index 0c8d2b8..895b5d2 100644 --- a/app/controllers/authentication_controller.rb +++ b/app/controllers/authentication_controller.rb @@ -9,8 +9,10 @@ def authentication end def save_authentication - args = { cart: current_cart }.merge(params[:authentication]) + authentication = params.require(:authentication).permit! + args = { cart: current_cart }.merge(authentication) return if cart_expired?(args) + authentication = Authentication.new(args) authentication.sign_in_attempt? ? try_sign_in(authentication) : save_credentials(authentication) end diff --git a/app/controllers/checkout_controller.rb b/app/controllers/checkout_controller.rb index 04858c7..9683f66 100644 --- a/app/controllers/checkout_controller.rb +++ b/app/controllers/checkout_controller.rb @@ -118,7 +118,7 @@ def set_current_webstore end def current_webstore_id - params[:webstore_id] + params.permit(:webstore_id)[:webstore_id] end def set_locale diff --git a/app/controllers/customise_order_controller.rb b/app/controllers/customise_order_controller.rb index 7598568..b7a076b 100644 --- a/app/controllers/customise_order_controller.rb +++ b/app/controllers/customise_order_controller.rb @@ -10,8 +10,10 @@ def customise_order end def save_order_customisation - args = { cart: current_cart }.merge(params[:customise_order]) + customise_order = params.require(:customise_order).permit! + args = { cart: current_cart }.merge(customise_order) return if cart_expired?(args) + customise_order = CustomiseOrder.new(args) customise_order.save ? successful_order_customisation : failed_order_customisation(customise_order) end diff --git a/app/controllers/delivery_options_controller.rb b/app/controllers/delivery_options_controller.rb index 8a04a37..a835b9f 100644 --- a/app/controllers/delivery_options_controller.rb +++ b/app/controllers/delivery_options_controller.rb @@ -11,8 +11,10 @@ def delivery_options end def save_delivery_options - args = { cart: current_cart }.merge(params[:delivery_options]) + delivery_options = params.require(:delivery_options).permit! + args = { cart: current_cart }.merge(delivery_options) return if cart_expired?(args) + delivery_options = DeliveryOptions.new(args) delivery_options.save ? successful_delivery_options : failed_delivery_options(delivery_options) end diff --git a/app/controllers/payment_options_controller.rb b/app/controllers/payment_options_controller.rb index b3914b8..26c6184 100644 --- a/app/controllers/payment_options_controller.rb +++ b/app/controllers/payment_options_controller.rb @@ -10,8 +10,10 @@ def payment_options end def save_payment_options - args = { cart: current_cart }.merge(params[:payment_options]) + payment_options = params.require(:payment_options).permit! + args = { cart: current_cart }.merge(payment_options) return if cart_expired?(args) + payment_options = PaymentOptions.new(args) payment_options.save ? successful_payment_options : failed_payment_options(payment_options) end diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb index e607595..0007fcf 100644 --- a/app/controllers/session_controller.rb +++ b/app/controllers/session_controller.rb @@ -8,7 +8,7 @@ def new end def create - credentials = params[:session] + credentials = params.require(:session).permit(:email, :password).to_h result = API.authenticate_customer(credentials) if result.empty? diff --git a/app/controllers/store_controller.rb b/app/controllers/store_controller.rb index 7f64b8a..d83429e 100644 --- a/app/controllers/store_controller.rb +++ b/app/controllers/store_controller.rb @@ -27,7 +27,7 @@ def start_checkout @current_webstore_customer = checkout.customer.decorate - product_id = params[:product_id] + product_id = params.permit(:product_id)[:product_id] checkout.add_product!(product_id) ? successful_new_checkout(checkout) : failed_new_checkout end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 50451f6..13c5e3f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -6,15 +6,17 @@ def render_flash_messages(flash) content_tag(:div, class: "alert #{alert_class_for(type)}") do link_to("×", "javascript:void(0)", class: "close", data: { dismiss: "alert" }) << message end - end.join.html_safe # rubocop:disable Rails/OutputSafety + end.join.html_safe end - private def alert_class_for(flash_type) +private + + def alert_class_for(flash_type) { success: "alert-success", - error: "alert-danger", - alert: "alert-warning", - notice: "alert-info", + error: "alert-danger", + alert: "alert-warning", + notice: "alert-info", }[flash_type.to_sym] || flash_type.to_s end end diff --git a/app/models/checkout/checkout.rb b/app/models/checkout/checkout.rb index 8634bdb..5eae0f0 100644 --- a/app/models/checkout/checkout.rb +++ b/app/models/checkout/checkout.rb @@ -13,7 +13,7 @@ def initialize(args = {}) @existing_customer = args.fetch(:existing_customer) @cart = args[:cart_class].new( webstore_id: args[:webstore_id], - customer: customer_hash, + customer: customer_hash, ) cart.save diff --git a/app/models/checkout/customise_order.rb b/app/models/checkout/customise_order.rb index 8d29fbf..9b2f22c 100644 --- a/app/models/checkout/customise_order.rb +++ b/app/models/checkout/customise_order.rb @@ -45,9 +45,9 @@ def substitutions_unlimited? def to_h { - dislikes: dislikes, - likes: likes, - extras: extras, + dislikes: dislikes, + likes: likes, + extras: extras, } end diff --git a/app/models/checkout/delivery_options.rb b/app/models/checkout/delivery_options.rb index 22cccb9..e8cd9d0 100644 --- a/app/models/checkout/delivery_options.rb +++ b/app/models/checkout/delivery_options.rb @@ -59,10 +59,10 @@ def extra_frequencies def to_h { delivery_service_id: delivery_service, - start_date: start_date, - frequency: frequency, - days: days, - extra_frequency: extra_frequency, + start_date: start_date, + frequency: frequency, + days: days, + extra_frequency: extra_frequency, } end diff --git a/app/models/checkout/payment_options.rb b/app/models/checkout/payment_options.rb index 75fa8ce..80143fd 100644 --- a/app/models/checkout/payment_options.rb +++ b/app/models/checkout/payment_options.rb @@ -99,17 +99,17 @@ def address_complete? def to_h { - name: name, - phone_number: phone_number, - phone_type: phone_type, - address_1: address_1, - address_2: address_2, - suburb: suburb, - city: city, - postcode: postcode, - delivery_note: delivery_note, - payment_method: payment_method, - complete: complete, + name: name, + phone_number: phone_number, + phone_type: phone_type, + address_1: address_1, + address_2: address_2, + suburb: suburb, + city: city, + postcode: postcode, + delivery_note: delivery_note, + payment_method: payment_method, + complete: complete, } end diff --git a/app/models/order.rb b/app/models/order.rb index 4c8f6f6..8f3c974 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -111,9 +111,9 @@ def extra_quantity(extra) def schedule(schedule_builder_class = ScheduleRule) schedule_builder_class.new( - start_date: start_date, - frequency: frequency, - days: days, + start_date: start_date, + frequency: frequency, + days: days, ) end diff --git a/app/services/api.rb b/app/services/api.rb index 8ce4d58..541ebcc 100644 --- a/app/services/api.rb +++ b/app/services/api.rb @@ -2,7 +2,7 @@ class API class << self - WEBSTORE_ID_FORMAT = /\A[a-z0-9\-_]+\Z/ + WEBSTORE_ID_FORMAT = /\A[a-z0-9\-_]+\Z/.freeze def webstore(id) raise BuckyBox::API::NotFoundError if id !~ WEBSTORE_ID_FORMAT @@ -41,9 +41,7 @@ def credentials key ||= "" if Rails.env.test? secret ||= "" if Rails.env.test? - if key.nil? || secret.nil? - raise "You must set BUCKYBOX_API_KEY and BUCKYBOX_API_SECRET variables" - end + raise "You must set BUCKYBOX_API_KEY and BUCKYBOX_API_SECRET variables" if key.nil? || secret.nil? { "API-Key" => key, "API-Secret" => secret } end diff --git a/app/views/payment_options/payment_options.html.haml b/app/views/payment_options/payment_options.html.haml index 2bda395..7010a09 100644 --- a/app/views/payment_options/payment_options.html.haml +++ b/app/views/payment_options/payment_options.html.haml @@ -31,7 +31,7 @@ %h4= t 'payment_options.phone' .row-fluid .span9= f.input :phone_number, label: false, placeholder: t('payment_options.enter_phone'), required: payment_options.require_phone, input_html: { class: 'span12', value: payment_options.default_phone_number } - .span3= f.input :phone_type, collection: payment_options.phone_types, label: false, required: payment_options.require_phone, include_blank: false, prompt: "", selected: payment_options.default_phone_type, input_html: { class: 'span12' } + .span3= f.input :phone_type, collection: payment_options.phone_types, label: false, required: payment_options.require_phone, prompt: "", selected: payment_options.default_phone_type, input_html: { class: 'span12' } - unless payment_options.pickup_point? .row-fluid diff --git a/bin/setup b/bin/setup index 71d8493..e413f40 100755 --- a/bin/setup +++ b/bin/setup @@ -2,30 +2,35 @@ # frozen_string_literal: true require "pathname" +require "fileutils" +include FileUtils # path to your application root. APP_ROOT = Pathname.new File.expand_path("..", __dir__) -Dir.chdir APP_ROOT do +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do # This script is a starting point to setup your application. - # Add necessary setup steps to this file: + # Add necessary setup steps to this file. puts "== Installing dependencies ==" - system "gem install bundler --conservative" - system "bundle check || bundle install" + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") # puts "\n== Copying sample files ==" - # unless File.exist?("config/database.yml") - # system "cp config/database.yml.sample config/database.yml" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' # end puts "\n== Preparing database ==" - system "bin/rake db:setup" + system! "bin/rails db:setup" puts "\n== Removing old logs and tempfiles ==" - system "rm -f log/*" - system "rm -rf tmp/cache" + system! "bin/rails log:clear tmp:clear" puts "\n== Restarting application server ==" - system "touch tmp/restart.txt" + system! "bin/rails restart" end diff --git a/bin/update b/bin/update new file mode 100755 index 0000000..998dede --- /dev/null +++ b/bin/update @@ -0,0 +1,31 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "pathname" +require "fileutils" +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path("..", __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts "== Installing dependencies ==" + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") + + puts "\n== Updating database ==" + system! "bin/rails db:migrate" + + puts "\n== Removing old logs and tempfiles ==" + system! "bin/rails log:clear tmp:clear" + + puts "\n== Restarting application server ==" + system! "bin/rails restart" +end diff --git a/config/application.rb b/config/application.rb index 2baa79f..9b38736 100644 --- a/config/application.rb +++ b/config/application.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require File.expand_path("boot", __dir__) +require_relative "boot" # Pick the frameworks you want: require "active_model/railtie" diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000..0bbde6f --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,9 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: redis://localhost:6379/1 diff --git a/config/environment.rb b/config/environment.rb index 9e61e37..7df99e8 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # Load the Rails application. -require File.expand_path("application", __dir__) +require_relative "application" # Initialize the Rails application. Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb index a6c9934..92db4fc 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -11,13 +11,28 @@ # Do not eager load code on boot. config.eager_load = false - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = true + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + if Rails.root.join("tmp/caching-dev.txt").exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=172800", + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end # Don't care if the mailer can't send. # config.action_mailer.raise_delivery_errors = false + # config.action_mailer.perform_caching = false + # Print deprecation notices to the Rails logger. config.active_support.deprecation = :log @@ -29,19 +44,13 @@ # number of complex assets. config.assets.debug = true - # Asset digests allow you to set far-future HTTP expiration dates on all assets, - # yet still be able to expire them through the digest params. - config.assets.digest = true - - # Adds additional error checking when serving assets at runtime. - # Checks for improperly declared sprockets dependencies. - # Raises helpful error messages. - config.assets.raise_runtime_errors = true - - # Don't use precompiled assets locally - # http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation - config.assets.prefix = "/dev-assets" + # Suppress logger output for asset requests. + config.assets.quiet = true # Raises error for missing translations config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + # config.file_watcher = ActiveSupport::EventedFileUpdateChecker end diff --git a/config/environments/production.rb b/config/environments/production.rb index c600b0c..2569012 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -16,50 +16,48 @@ config.consider_all_requests_local = false config.action_controller.perform_caching = true - # Enable Rack::Cache to put a simple HTTP cache in front of your application - # Add `rack-cache` to your Gemfile before enabling this. - # For large-scale production use, consider using a caching reverse proxy like NGINX, varnish or squid. - # config.action_dispatch.rack_cache = true - - # Disable Rails's static asset server (Apache or NGINX will already do this). - config.serve_static_files = false + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? # Compress JavaScripts and CSS. - # Don't mangle variable names to be idempotent and avoid noise in commits - # config.assets.js_compressor = :uglifier - config.assets.js_compressor = Uglifier.new(mangle: false) - config.assets.css_compressor = :sass + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false - # Asset digests allow you to set far-future HTTP expiration dates on all assets, - # yet still be able to expire them through the digest params. - config.assets.digest = true - # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + # Specifies the header that your server uses for sending files. - # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true - # Set to :info to decrease the log volume. + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. config.log_level = :debug # Prepend all log lines with the following tags. - # config.log_tags = [ :subdomain, :uuid ] - - # Use a different logger for distributed setups. - # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + config.log_tags = [:request_id] # Use a different cache store in production. # config.cache_store = :mem_cache_store - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = "http://assets.example.com" + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "bucky_box/webstore_#{Rails.env}" + # config.action_mailer.perform_caching = false # Ignore bad email addresses and do not raise email delivery errors. # Set this to true and configure the email server for immediate delivery to raise delivery errors. @@ -75,6 +73,16 @@ # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + # Do not dump schema after migrations. # config.active_record.dump_schema_after_migration = false end diff --git a/config/environments/test.rb b/config/environments/test.rb index 6b7c172..0d1a2f1 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -14,9 +14,11 @@ # preloads Rails for running tests, you may have to set it to true. config.eager_load = false - # Configure static asset server for tests with Cache-Control for performance. - config.serve_static_files = true - config.static_cache_control = "public, max-age=3600" + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=3600", + } # Show full error reports and disable caching. config.consider_all_requests_local = true @@ -27,6 +29,7 @@ # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false + # config.action_mailer.perform_caching = false # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000..6d56e43 --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb index 0a23b25..ee8dff9 100644 --- a/config/initializers/cookies_serializer.rb +++ b/config/initializers/cookies_serializer.rb @@ -2,4 +2,6 @@ # Be sure to restart your server when you modify this file. +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/new_framework_defaults.rb b/config/initializers/new_framework_defaults.rb new file mode 100644 index 0000000..35531e1 --- /dev/null +++ b/config/initializers/new_framework_defaults.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.0 upgrade. +# +# Once upgraded flip defaults one by one to migrate to the new default. +# +# Read the Guide for Upgrading Ruby on Rails for more info on each option. + +Rails.application.config.action_controller.raise_on_unfiltered_parameters = true + +# Enable per-form CSRF tokens. Previous versions had false. +Rails.application.config.action_controller.per_form_csrf_tokens = false + +# Enable origin-checking CSRF mitigation. Previous versions had false. +Rails.application.config.action_controller.forgery_protection_origin_check = false + +# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. +# Previous versions had false. +ActiveSupport.to_time_preserves_timezone = false + +# Require `belongs_to` associations by default. Previous versions had false. +# Rails.application.config.active_record.belongs_to_required_by_default = false + +# Do not halt callback chains when a callback returns false. Previous versions had true. +ActiveSupport.halt_callback_chains_on_return_false = true diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb index 246168a..2f3c0db 100644 --- a/config/initializers/wrap_parameters.rb +++ b/config/initializers/wrap_parameters.rb @@ -7,10 +7,10 @@ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] if respond_to?(:wrap_parameters) + wrap_parameters format: [:json] end # To enable root element in JSON for ActiveRecord objects. # ActiveSupport.on_load(:active_record) do -# self.include_root_in_json = true +# self.include_root_in_json = true # end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb index a95ed32..52ae000 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -1,10 +1,50 @@ # frozen_string_literal: true -# directory '/var/app/current' -threads 8, 32 +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum, this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests, default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } workers `grep -c processor /proc/cpuinfo` + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# preload_app! -# bind 'unix:///var/run/puma/my_app.sock' -# pidfile '/var/run/puma/puma.pid' -# stdout_redirect '/var/log/puma/puma.log', '/var/log/puma/puma.log', true -# daemonize false + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted this block will be run, if you are using `preload_app!` +# option you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/config/secrets.yml b/config/secrets.yml index b9671cd..0431716 100644 --- a/config/secrets.yml +++ b/config/secrets.yml @@ -5,16 +5,16 @@ # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. -# You can use `rake secret` to generate a secure secret key. +# You can use `rails secret` to generate a secure secret key. # Make sure the secrets in this file are kept private # if you're sharing your code publicly. development: - secret_key_base: 9f7356b3179a1c86e0454e5f0fba43854a8a14608064299ad0ed9d25f95f820aac0fa6b835d29ae299c45d822856d86e730215d404d46a183bcdffbdcdfc6850 + secret_key_base: 94e496630b6e90f7fbf2df4a0a4bc48de373f1a2a92c06cc27640550d46d647cf099e27e029a5beec1efbba940419d44cfbc9ecde07456bca9511988052fc56f test: - secret_key_base: 5b98adc9e4a93ca25b1c8329fe9595e0cd3002610a40818a2cf2305b92f56c9a4703731190162947dabae5a889d901fb65238a9d956a2137411015c081311528 + secret_key_base: c407a8ed88e453fe072b439bf826e9e2465e86439452046d46dbc649ce4bb91b100f5b9e78a0c3f8aaa3d25fb1f7ce53ba0f331340f82fe092ce8122c977d8e3 # Do not keep production secrets in the repository, # instead read values from the environment. diff --git a/config/spring.rb b/config/spring.rb new file mode 100644 index 0000000..c5933e4 --- /dev/null +++ b/config/spring.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +%w[ + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +].each { |path| Spring.watch(path) } diff --git a/features/step_definitions/webstore_steps.rb b/features/step_definitions/webstore_steps.rb index c3d9c83..e0bdfa5 100644 --- a/features/step_definitions/webstore_steps.rb +++ b/features/step_definitions/webstore_steps.rb @@ -1,5 +1,3 @@ -# frozen_string_literal: true - World(Select2Helper) def step_path(step) @@ -10,7 +8,7 @@ def step_path(step) Given /^I am authenticated$/ do step "I am on the webstore" step "I log in" if page.has_link?("Log in") - expect(page).not_to have_button("Log in") + expect(page).not_to have_link("Log in") end Given /^I am unauthenticated$/ do diff --git a/features/support/env.rb b/features/support/env.rb index 71529ca..b1307ef 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -5,8 +5,7 @@ require "cucumber/rails" ActionController::Base.allow_rescue = true -require "capybara/poltergeist" -Capybara.javascript_driver = :poltergeist +# Capybara.javascript_driver = :selenium_chrome require "capybara-screenshot/cucumber" diff --git a/lib/address.rb b/lib/address.rb index 9130cf5..a5f50f4 100644 --- a/lib/address.rb +++ b/lib/address.rb @@ -26,7 +26,7 @@ def initialize(args = {}) def to_s(join_with = ", ") ADDRESS_ATTRIBUTES.map do |attribute| public_send attribute - end.reject(&:blank?).join(join_with).html_safe # rubocop:disable Rails/OutputSafety + end.reject(&:blank?).join(join_with).html_safe end def phones diff --git a/public/assets/.sprockets-manifest-2487fc3d0a0e3a3fa7950f702299bdac.json b/public/assets/.sprockets-manifest-2487fc3d0a0e3a3fa7950f702299bdac.json deleted file mode 100644 index 8b95b48..0000000 --- a/public/assets/.sprockets-manifest-2487fc3d0a0e3a3fa7950f702299bdac.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{"map-4aa8a25cbf7a3b1c49089b140a359ac8bae65503825dd6b38dd7be725b323a0e.js":{"logical_path":"map.js","mtime":"2017-05-11T14:37:46+00:00","size":183589,"digest":"4aa8a25cbf7a3b1c49089b140a359ac8bae65503825dd6b38dd7be725b323a0e","integrity":"sha256-SqiiXL96OxxJCJsUCjWayLrmVQOCXdazjde+clsyOg4="},"leaflet-src-c3e1d834d7ca30c12e8b9950e698797b2dcf5c35c401d347622a0e177b50fde9.map":{"logical_path":"leaflet-src.map","mtime":"2017-05-08T14:23:45+00:00","size":487784,"digest":"c3e1d834d7ca30c12e8b9950e698797b2dcf5c35c401d347622a0e177b50fde9","integrity":"sha256-w+HYNNfKMMEui5lQ5ph5ey3PXDXEAdNHYioOF3tQ/ek="},"marker-icon-2x-2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d.png":{"logical_path":"marker-icon-2x.png","mtime":"2017-05-08T14:23:45+00:00","size":2586,"digest":"2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d","integrity":"sha256-LXei5MLwi7rEGAgyTvlGuaL+YbYVBIDQEbcrN5w7I40="},"marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"marker-shadow.png","mtime":"2017-05-08T14:23:45+00:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"marker-icon.png","mtime":"2017-05-08T14:23:45+00:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"map-9a88d1a7714d73d7ecc1c1ea35031b3537b7b7b1167634702b923257f5ed6fdf.css":{"logical_path":"map.css","mtime":"2017-05-11T14:37:46+00:00","size":12298,"digest":"9a88d1a7714d73d7ecc1c1ea35031b3537b7b7b1167634702b923257f5ed6fdf","integrity":"sha256-mojRp3FNc9fswcHqNQMbNTe3t7EWdjRwK5IyV/Xtb98="},"layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"layers.png","mtime":"2017-05-08T14:23:45+00:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"layers-2x.png","mtime":"2017-05-08T14:23:45+00:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"glyphicons-halflings-d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de.png":{"logical_path":"glyphicons-halflings.png","mtime":"2017-01-06T22:57:41+00:00","size":12799,"digest":"d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de","integrity":"sha256-2Z4/oyxkEDLwgUmRSyjC3GrPLsYvcJh/Ilnqu/p/wN4="},"glyphicons-halflings-white-f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4.png":{"logical_path":"glyphicons-halflings-white.png","mtime":"2017-01-06T22:57:41+00:00","size":8777,"digest":"f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4","integrity":"sha256-8ODZWpyKvN+r9GNI4tQoWCm7BJH19q8OBa9Sv/tjJMQ="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2017-01-06T22:57:44+00:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2017-01-06T22:57:44+00:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2017-01-06T22:57:44+00:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"background-5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1.png":{"logical_path":"background.png","mtime":"2015-11-26T18:28:31+00:00","size":710,"digest":"5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1","integrity":"sha256-X2Hb272k9gciOltrhV6nXM+tpXTzpKXzw/LfdE50adE="},"bucky-box-powered-7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb.png":{"logical_path":"bucky-box-powered.png","mtime":"2015-11-26T18:28:31+00:00","size":1046,"digest":"7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb","integrity":"sha256-fZhvLuatdy2IgPb73cCiri5jZshypJNNRy21k6EWJbs="},"close-icon-397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a.png":{"logical_path":"close-icon.png","mtime":"2016-03-26T11:39:19+00:00","size":1231,"digest":"397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a","integrity":"sha256-OXoC6ASq0XLZGGs/ktpyxdMjYY9JZZF5ASMLub8Syoo="},"facebook-icon-1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3.png":{"logical_path":"facebook-icon.png","mtime":"2015-11-26T18:28:31+00:00","size":215,"digest":"1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3","integrity":"sha256-Hx701j3/2K0GnnLGftW2NaYsMQO5VNgjqlTUdeNDfvM="},"fallbacks/box/box_image/webstore_default-f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd.png":{"logical_path":"fallbacks/box/box_image/webstore_default.png","mtime":"2015-11-26T18:28:31+00:00","size":1162,"digest":"f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd","integrity":"sha256-9qxsYAHvmydwMadvVx6tRG4jADcJngqSt2tsbdOLIM0="},"map-marker-icon-cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191.png":{"logical_path":"map-marker-icon.png","mtime":"2016-03-26T11:39:19+00:00","size":820,"digest":"cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191","integrity":"sha256-zuiNfU+LhCESgEyo+KcY+JPVsF+fkl6EVTxhvIEkQZE="},"phone-icon-2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c.png":{"logical_path":"phone-icon.png","mtime":"2015-11-26T18:28:31+00:00","size":267,"digest":"2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c","integrity":"sha256-JFbbcX+vjzvucMUL8uzn56TQ6k9hP6xt2M86iXv9inw="},"webstore-background-25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d.png":{"logical_path":"webstore-background.png","mtime":"2015-11-26T18:28:31+00:00","size":42237,"digest":"25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d","integrity":"sha256-JdxXxYmb1fEdUN/gTtEVd2VL3drKoThyXM/RWORyco0="},"application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js":{"logical_path":"application.js","mtime":"2017-05-11T14:37:46+00:00","size":301563,"digest":"731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a","integrity":"sha256-cxx3QzFkKUmvr9SVY7GtZOPuBr3F6IbTGIxDJHwAcJo="},"application-f38798986a4c88227b916d75d74dbedc35a7b60b67f4a1a40fc92ca6cdceea02.css":{"logical_path":"application.css","mtime":"2017-05-11T14:37:46+00:00","size":132108,"digest":"f38798986a4c88227b916d75d74dbedc35a7b60b67f4a1a40fc92ca6cdceea02","integrity":"sha256-84eYmGpMiCJ7kW11102+3DWntgtn9KGkD8ksps3O6gI="}},"assets":{"map.js":"map-4aa8a25cbf7a3b1c49089b140a359ac8bae65503825dd6b38dd7be725b323a0e.js","leaflet-src.map":"leaflet-src-c3e1d834d7ca30c12e8b9950e698797b2dcf5c35c401d347622a0e177b50fde9.map","marker-icon-2x.png":"marker-icon-2x-2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d.png","marker-shadow.png":"marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","marker-icon.png":"marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","map.css":"map-9a88d1a7714d73d7ecc1c1ea35031b3537b7b7b1167634702b923257f5ed6fdf.css","layers.png":"layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","layers-2x.png":"layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","glyphicons-halflings.png":"glyphicons-halflings-d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de.png","glyphicons-halflings-white.png":"glyphicons-halflings-white-f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4.png","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","background.png":"background-5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1.png","bucky-box-powered.png":"bucky-box-powered-7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb.png","close-icon.png":"close-icon-397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a.png","facebook-icon.png":"facebook-icon-1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3.png","fallbacks/box/box_image/webstore_default.png":"fallbacks/box/box_image/webstore_default-f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd.png","map-marker-icon.png":"map-marker-icon-cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191.png","phone-icon.png":"phone-icon-2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c.png","webstore-background.png":"webstore-background-25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d.png","application.js":"application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js","application.css":"application-f38798986a4c88227b916d75d74dbedc35a7b60b67f4a1a40fc92ca6cdceea02.css"}} \ No newline at end of file diff --git a/public/assets/.sprockets-manifest-ea678e9fc85e02793ea1d1e543eada97.json b/public/assets/.sprockets-manifest-ea678e9fc85e02793ea1d1e543eada97.json new file mode 100644 index 0000000..f30825f --- /dev/null +++ b/public/assets/.sprockets-manifest-ea678e9fc85e02793ea1d1e543eada97.json @@ -0,0 +1 @@ +{"files":{"map-8c9aaae2cc84ff29a3ba3492ff4fb99913546c83632d10bc19c136015ac637e9.js":{"logical_path":"map.js","mtime":"2019-04-23T07:41:57+00:00","size":403662,"digest":"8c9aaae2cc84ff29a3ba3492ff4fb99913546c83632d10bc19c136015ac637e9","integrity":"sha256-jJqq4syE/ymjujSS/0+5mRNUbINjLRC8GcE2AVrGN+k="},"leaflet-src.js-6eed528b5678ee4f34b8be267a8da5d14734d58d56baeea6a31e9819e6630775.map":{"logical_path":"leaflet-src.js.map","mtime":"2019-03-14T01:29:53+00:00","size":755043,"digest":"6eed528b5678ee4f34b8be267a8da5d14734d58d56baeea6a31e9819e6630775","integrity":"sha256-bu1Si1Z47k80uL4meo2l0Uc01Y1Wuu6mox6YGeZjB3U="},"marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png":{"logical_path":"marker-icon-2x.png","mtime":"2019-03-14T01:29:53+00:00","size":2464,"digest":"00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528","integrity":"sha256-ABecTB7oMNOhCEEq4NKU9Vd2z+sIXGASmjmqb8SuJSg="},"marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"marker-shadow.png","mtime":"2019-03-14T01:29:53+00:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"marker-icon.png","mtime":"2019-03-14T01:29:53+00:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"map-cfe2691f2f3fbef0e4b3a17366a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e.css":{"logical_path":"map.css","mtime":"2019-04-23T07:41:57+00:00","size":30605,"digest":"cfe2691f2f3fbef0e4b3a17366a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e","integrity":"sha256-z+JpHy8/vvDks6FzZqnuTFv1d16cAIsP6x+atfbAUm4="},"layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"layers.png","mtime":"2019-03-14T01:29:53+00:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"layers-2x.png","mtime":"2019-03-14T01:29:53+00:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"glyphicons-halflings-d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de.png":{"logical_path":"glyphicons-halflings.png","mtime":"2019-03-14T01:28:32+00:00","size":12799,"digest":"d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de","integrity":"sha256-2Z4/oyxkEDLwgUmRSyjC3GrPLsYvcJh/Ilnqu/p/wN4="},"glyphicons-halflings-white-f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4.png":{"logical_path":"glyphicons-halflings-white.png","mtime":"2019-03-14T01:28:32+00:00","size":8777,"digest":"f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4","integrity":"sha256-8ODZWpyKvN+r9GNI4tQoWCm7BJH19q8OBa9Sv/tjJMQ="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2019-03-14T01:31:04+00:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2019-03-14T01:31:04+00:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2019-03-14T01:31:04+00:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"background-5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1.png":{"logical_path":"background.png","mtime":"2015-11-26T18:28:31+00:00","size":710,"digest":"5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1","integrity":"sha256-X2Hb272k9gciOltrhV6nXM+tpXTzpKXzw/LfdE50adE="},"bucky-box-powered-7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb.png":{"logical_path":"bucky-box-powered.png","mtime":"2015-11-26T18:28:31+00:00","size":1046,"digest":"7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb","integrity":"sha256-fZhvLuatdy2IgPb73cCiri5jZshypJNNRy21k6EWJbs="},"close-icon-397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a.png":{"logical_path":"close-icon.png","mtime":"2016-03-26T11:39:19+00:00","size":1231,"digest":"397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a","integrity":"sha256-OXoC6ASq0XLZGGs/ktpyxdMjYY9JZZF5ASMLub8Syoo="},"facebook-icon-1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3.png":{"logical_path":"facebook-icon.png","mtime":"2015-11-26T18:28:31+00:00","size":215,"digest":"1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3","integrity":"sha256-Hx701j3/2K0GnnLGftW2NaYsMQO5VNgjqlTUdeNDfvM="},"fallbacks/box/box_image/webstore_default-f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd.png":{"logical_path":"fallbacks/box/box_image/webstore_default.png","mtime":"2015-11-26T18:28:31+00:00","size":1162,"digest":"f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd","integrity":"sha256-9qxsYAHvmydwMadvVx6tRG4jADcJngqSt2tsbdOLIM0="},"map-marker-icon-cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191.png":{"logical_path":"map-marker-icon.png","mtime":"2016-03-26T11:39:19+00:00","size":820,"digest":"cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191","integrity":"sha256-zuiNfU+LhCESgEyo+KcY+JPVsF+fkl6EVTxhvIEkQZE="},"phone-icon-2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c.png":{"logical_path":"phone-icon.png","mtime":"2015-11-26T18:28:31+00:00","size":267,"digest":"2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c","integrity":"sha256-JFbbcX+vjzvucMUL8uzn56TQ6k9hP6xt2M86iXv9inw="},"webstore-background-25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d.png":{"logical_path":"webstore-background.png","mtime":"2015-11-26T18:28:31+00:00","size":42237,"digest":"25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d","integrity":"sha256-JdxXxYmb1fEdUN/gTtEVd2VL3drKoThyXM/RWORyco0="},"application-a4a6495b561b19b1c1d1591e11b798c569aa2e38ed3d0dd009cc2faeab3b0b17.js":{"logical_path":"application.js","mtime":"2019-04-23T07:42:01+00:00","size":572645,"digest":"a4a6495b561b19b1c1d1591e11b798c569aa2e38ed3d0dd009cc2faeab3b0b17","integrity":"sha256-pKZJW1YbGbHB0VkeEbeYxWmqLjjtPQ3QCcwvrqs7Cxc="},"application-dff9f3f8e922cd0c8c03db4f606c32d291ba4594c5403a2eb56cf9c2b3b67c39.css":{"logical_path":"application.css","mtime":"2019-04-23T07:42:01+00:00","size":333507,"digest":"dff9f3f8e922cd0c8c03db4f606c32d291ba4594c5403a2eb56cf9c2b3b67c39","integrity":"sha256-3/nz+OkizQyMA9tPYGwy0pG6RZTFQDoutWz5wrO2fDk="}},"assets":{"map.js":"map-8c9aaae2cc84ff29a3ba3492ff4fb99913546c83632d10bc19c136015ac637e9.js","leaflet-src.js.map":"leaflet-src.js-6eed528b5678ee4f34b8be267a8da5d14734d58d56baeea6a31e9819e6630775.map","marker-icon-2x.png":"marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png","marker-shadow.png":"marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","marker-icon.png":"marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","map.css":"map-cfe2691f2f3fbef0e4b3a17366a9ee4c5bf5775e9c008b0feb1f9ab5f6c0526e.css","layers.png":"layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","layers-2x.png":"layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","glyphicons-halflings.png":"glyphicons-halflings-d99e3fa32c641032f08149914b28c2dc6acf2ec62f70987f2259eabbfa7fc0de.png","glyphicons-halflings-white.png":"glyphicons-halflings-white-f0e0d95a9c8abcdfabf46348e2d4285829bb0491f5f6af0e05af52bffb6324c4.png","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","background.png":"background-5f61dbdbbda4f607223a5b6b855ea75ccfada574f3a4a5f3c3f2df744e7469d1.png","bucky-box-powered.png":"bucky-box-powered-7d986f2ee6ad772d8880f6fbddc0a2ae2e6366c872a4934d472db593a11625bb.png","close-icon.png":"close-icon-397a02e804aad172d9186b3f92da72c5d323618f4965917901230bb9bf12ca8a.png","facebook-icon.png":"facebook-icon-1f1ef4d63dffd8ad069e72c67ed5b635a62c3103b954d823aa54d475e3437ef3.png","fallbacks/box/box_image/webstore_default.png":"fallbacks/box/box_image/webstore_default-f6ac6c6001ef9b277031a76f571ead446e230037099e0a92b76b6c6dd38b20cd.png","map-marker-icon.png":"map-marker-icon-cee88d7d4f8b842112804ca8f8a718f893d5b05f9f925e84553c61bc81244191.png","phone-icon.png":"phone-icon-2456db717faf8f3bee70c50bf2ece7e7a4d0ea4f613fac6dd8cf3a897bfd8a7c.png","webstore-background.png":"webstore-background-25dc57c5899bd5f11d50dfe04ed11577654bdddacaa138725ccfd158e472728d.png","application.js":"application-a4a6495b561b19b1c1d1591e11b798c569aa2e38ed3d0dd009cc2faeab3b0b17.js","application.css":"application-dff9f3f8e922cd0c8c03db4f606c32d291ba4594c5403a2eb56cf9c2b3b67c39.css"}} \ No newline at end of file diff --git a/public/assets/application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js b/public/assets/application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js deleted file mode 100644 index d903cfd..0000000 --- a/public/assets/application-731c774331642949afafd49563b1ad64e3ee06bdc5e886d3188c43247c00709a.js +++ /dev/null @@ -1,59 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ -function update_days(){var frequency=$(".delivery_service-schedule-frequency:visible").val(),weeks=$(".delivery_service-schedule-inputs:visible .order-days tr"),week_numbers=weeks.find("td:first-child");$(".delivery_service-schedule-inputs:not(:visible) .order-days tr").find("input").prop("disabled","true").removeAttr("checked"),frequency&&"single"!==frequency?"monthly"===frequency?(week_numbers.show(),weeks.show()):(week_numbers.hide(),weeks.slice(1).hide(),weeks.first().show()):weeks.hide(),weeks.find("input[data-enabled]").removeAttr("disabled");var delivery_service_id=$("#delivery_service_select").val();update_day_checkboxes($("#delivery_service-schedule-inputs-"+delivery_service_id).find(".schedule-start-date"))}function update_day_checkboxes_style(){$('.order-days:visible input[type="checkbox"]').each(function(){var checkbox=$(this),td=checkbox.closest("td");checkbox.is(":checked")||checkbox.data("enabled")?td.removeClass("disabled"):td.addClass("disabled")})}function update_day_checkboxes(start_date){var date=new Date(start_date.val()),delivery_service_schedule_inputs=start_date.closest(".delivery_service-schedule-inputs");delivery_service_schedule_inputs.find('input[type="checkbox"]:not([data-enabled])').prop("checked",!1);var frequency=delivery_service_schedule_inputs.find(".delivery_service-schedule-frequency").val(),weeks=delivery_service_schedule_inputs.find(".order-days tr");if("monthly"!==frequency&&weeks.slice(1).find('input[type="checkbox"]').prop("checked",!1),0===weeks.find('input[type="checkbox"]:checked').length){var checkbox_selector="#day-"+date.getDay()+' input[type="checkbox"]';delivery_service_schedule_inputs.find(checkbox_selector).prop("checked",!0)}}function update_delivery_service_information(delivery_service_id){$(".delivery_service-info").hide(),$("#delivery_service-info-"+delivery_service_id).show();var all_delivery_service_schedule_inputs=$(".delivery_service-schedule-inputs");all_delivery_service_schedule_inputs.hide(),all_delivery_service_schedule_inputs.find("select").prop("disabled",!0),all_delivery_service_schedule_inputs.find('input[type="checkbox"]').prop("disabled",!0);var delivery_service_schedule=$("#delivery_service-schedule-inputs-"+delivery_service_id);delivery_service_schedule.show(),delivery_service_schedule.find(".order-days").show(),delivery_service_schedule.find("select").prop("disabled",!1),$.each(delivery_service_schedule.find('input[type="checkbox"]'),function(index,value){var day=$(value);day.data("enabled")&&day.prop("disabled",!1)}),$("#webstore-schedule").toggle(!!delivery_service_id),update_day_checkboxes(delivery_service_schedule.find(".schedule-start-date"))}function disable_the_others_options(affecting_input,effected_input){enable_all_options(effected_input),effected_input.find("select").select2("close"),affecting_input.find("option:selected").each(function(){var counter=effected_input.find("option[value='"+$(this).val()+"']");counter.attr("disabled","disabled"),counter.removeAttr("selected")}),effected_input.find("select").trigger("liszt:updated")}function enable_all_options(input){input.find("option").each(function(){$(this).removeAttr("disabled")}),input.find("select").trigger("liszt:updated")}function set_password_field_visibility(){var returning="new"!==$("#registered input[type=radio]:checked").val();$("#password-field").toggle(returning)}!function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=jQuery.type(obj);return"function"!==type&&!jQuery.isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}function winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier))return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not});if(qualifier.nodeType)return jQuery.grep(elements,function(elem){return elem===qualifier!==not});if("string"==typeof qualifier){if(risSimple.test(qualifier))return jQuery.filter(qualifier,elements,not);qualifier=jQuery.filter(qualifier,elements)}return jQuery.grep(elements,function(elem){return jQuery.inArray(elem,qualifier)>-1!==not})}function sibling(cur,dir){do{cur=cur[dir]}while(cur&&1!==cur.nodeType);return cur}function createOptions(options){var object={};return jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=!0}),object}function detach(){document.addEventListener?(document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed)):(document.detachEvent("onreadystatechange",completed),window.detachEvent("onload",completed))}function completed(){(document.addEventListener||"load"===window.event.type||"complete"===document.readyState)&&(detach(),jQuery.ready())}function dataAttr(elem,key,data){if(data===undefined&&1===elem.nodeType){var name="data-"+key.replace(rmultiDash,"-$1").toLowerCase();if("string"==typeof(data=elem.getAttribute(name))){try{data="true"===data||"false"!==data&&("null"===data?null:+data+""===data?+data:rbrace.test(data)?jQuery.parseJSON(data):data)}catch(e){}jQuery.data(elem,key,data)}else data=undefined}return data}function isEmptyDataObject(obj){var name;for(name in obj)if(("data"!==name||!jQuery.isEmptyObject(obj[name]))&&"toJSON"!==name)return!1;return!0}function internalData(elem,name,data,pvt){if(acceptData(elem)){var ret,thisCache,internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[internalKey]:elem[internalKey]&&internalKey;if(id&&cache[id]&&(pvt||cache[id].data)||data!==undefined||"string"!=typeof name)return id||(id=isNode?elem[internalKey]=deletedIds.pop()||jQuery.guid++:internalKey),cache[id]||(cache[id]=isNode?{}:{toJSON:jQuery.noop}),"object"!=typeof name&&"function"!=typeof name||(pvt?cache[id]=jQuery.extend(cache[id],name):cache[id].data=jQuery.extend(cache[id].data,name)),thisCache=cache[id],pvt||(thisCache.data||(thisCache.data={}),thisCache=thisCache.data),data!==undefined&&(thisCache[jQuery.camelCase(name)]=data),"string"==typeof name?null==(ret=thisCache[name])&&(ret=thisCache[jQuery.camelCase(name)]):ret=thisCache,ret}}function internalRemoveData(elem,name,pvt){if(acceptData(elem)){var thisCache,i,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(cache[id]){if(name&&(thisCache=pvt?cache[id]:cache[id].data)){jQuery.isArray(name)?name=name.concat(jQuery.map(name,jQuery.camelCase)):name in thisCache?name=[name]:(name=jQuery.camelCase(name),name=name in thisCache?[name]:name.split(" ")),i=name.length;for(;i--;)delete thisCache[name[i]];if(pvt?!isEmptyDataObject(thisCache):!jQuery.isEmptyObject(thisCache))return}(pvt||(delete cache[id].data,isEmptyDataObject(cache[id])))&&(isNode?jQuery.cleanData([elem],!0):support.deleteExpando||cache!=cache.window?delete cache[id]:cache[id]=undefined)}}}function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale=1,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){unit=unit||initialInUnit[3],valueParts=valueParts||[],initialInUnit=+initial||1;do{scale=scale||".5",initialInUnit/=scale,jQuery.style(elem,prop,initialInUnit+unit)}while(scale!==(scale=currentValue()/initial)&&1!==scale&&--maxIterations)}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}function createSafeFragment(document){var list=nodeNames.split("|"),safeFrag=document.createDocumentFragment();if(safeFrag.createElement)for(;list.length;)safeFrag.createElement(list.pop());return safeFrag}function getAll(context,tag){var elems,elem,i=0,found="undefined"!=typeof context.getElementsByTagName?context.getElementsByTagName(tag||"*"):"undefined"!=typeof context.querySelectorAll?context.querySelectorAll(tag||"*"):undefined;if(!found)for(found=[],elems=context.childNodes||context;null!=(elem=elems[i]);i++)!tag||jQuery.nodeName(elem,tag)?found.push(elem):jQuery.merge(found,getAll(elem,tag));return tag===undefined||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],found):found}function setGlobalEval(elems,refElements){for(var elem,i=0;null!=(elem=elems[i]);i++)jQuery._data(elem,"globalEval",!refElements||jQuery._data(refElements[i],"globalEval"))}function fixDefaultChecked(elem){rcheckableType.test(elem.type)&&(elem.defaultChecked=elem.checked)}function buildFragment(elems,context,scripts,selection,ignored){for(var j,elem,contains,tmp,tag,tbody,wrap,l=elems.length,safe=createSafeFragment(context),nodes=[],i=0;i"!==wrap[1]||rtbody.test(elem)?0:tmp:tmp.firstChild,j=elem&&elem.childNodes.length;j--;)jQuery.nodeName(tbody=elem.childNodes[j],"tbody")&&!tbody.childNodes.length&&elem.removeChild(tbody);for(jQuery.merge(nodes,tmp.childNodes),tmp.textContent="";tmp.firstChild;)tmp.removeChild(tmp.firstChild);tmp=safe.lastChild}else nodes.push(context.createTextNode(elem));for(tmp&&safe.removeChild(tmp),support.appendChecked||jQuery.grep(getAll(nodes,"input"),fixDefaultChecked),i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(safe.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return tmp=null,safe}function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){"string"!=typeof selector&&(data=data||selector,selector=undefined);for(type in types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=undefined):null==fn&&("string"==typeof selector?(fn=data,data=undefined):(fn=data,data=selector,selector=undefined)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)},fn.guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}function manipulationTarget(elem,content){return jQuery.nodeName(elem,"table")&&jQuery.nodeName(11!==content.nodeType?content:content.firstChild,"tr")?elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody")):elem}function disableScript(elem){return elem.type=(null!==jQuery.find.attr(elem,"type"))+"/"+elem.type,elem}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);return match?elem.type=match[1]:elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){if(1===dest.nodeType&&jQuery.hasData(src)){var type,i,l,oldData=jQuery._data(src),curData=jQuery._data(dest,oldData),events=oldData.events;if(events){delete curData.handle,curData.events={};for(type in events)for(i=0,l=events[type].length;i1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);isFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored),first=fragment.firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(scripts=jQuery.map(getAll(fragment,"script"),disableScript),hasScripts=scripts.length;i")).appendTo(doc.documentElement),doc=(iframe[0].contentWindow||iframe[0].contentDocument).document,doc.write(),doc.close(),display=actualDisplay(nodeName,doc),iframe.detach()),elemdisplay[nodeName]=display),display}function addGetHookIf(conditionFn,hookFn){return{get:function(){return conditionFn()?void delete this.get:(this.get=hookFn).apply(this,arguments)}}}function vendorPropName(name){if(name in emptyStyle)return name;for(var capName=name.charAt(0).toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}function showHide(elements,show){for(var display,elem,hidden,values=[],index=0,length=elements.length;index=0&&j=0},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},isPlainObject:function(obj){var key;if(!obj||"object"!==jQuery.type(obj)||obj.nodeType||jQuery.isWindow(obj))return!1;try{if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(!support.ownFirst)for(key in obj)return hasOwn.call(obj,key);for(key in obj);return key===undefined||hasOwn.call(obj,key)},type:function(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj},globalEval:function(data){data&&jQuery.trim(data)&&(window.execScript||function(data){window.eval.call(window,data)})(data)},camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;iExpr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}var keys=[];return cache}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var div=document.createElement("div");try{return!!fn(div)}catch(e){return!1}finally{div.parentNode&&div.parentNode.removeChild(div),div=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||MAX_NEGATIVE)-(~a.sourceIndex||MAX_NEGATIVE);if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&"undefined"!=typeof context.getElementsByTagName&&context}function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function multipleContexts(selector,contexts,results){for(var i=0,len=contexts.length;i-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},MAX_NEGATIVE=1<<31,hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,rescape=/'|\\/g,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},unloadHandler=function(){setDocument()};try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,parent,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(document=doc,docElem=document.documentElement,documentIsHTML=!isXML(document),(parent=document.defaultView)&&parent.top!==parent&&(parent.addEventListener?parent.addEventListener("unload",unloadHandler,!1):parent.attachEvent&&parent.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(div){return div.className="i",!div.getAttribute("className")}),support.getElementsByTagName=assert(function(div){return div.appendChild(document.createComment("")),!div.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(div){return docElem.appendChild(div).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.find.ID=function(id,context){if("undefined"!=typeof context.getElementById&&documentIsHTML){var m=context.getElementById(id);return m?[m]:[]}},Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}}):(delete Expr.find.ID,Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node="undefined"!=typeof elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return"undefined"!=typeof context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if("undefined"!=typeof context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(div){docElem.appendChild(div).innerHTML="",div.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),div.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),div.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),div.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),div.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(div){var input=document.createElement("input");input.setAttribute("type","hidden"),div.appendChild(input).setAttribute("name","D"),div.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),div.querySelectorAll(":enabled").length||rbuggyQSA.push(":enabled",":disabled"),div.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(div){support.disconnectedMatch=matches.call(div,"div"),matches.call(div,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&compare||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||"undefined"!=typeof elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(node=parent,outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),cache=uniqueCache[type]||[],nodeIndex=cache[0]===dirruns&&cache[1],diff=nodeIndex&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(node=elem,outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),cache=uniqueCache[type]||[],nodeIndex=cache[0]===dirruns&&cache[1],diff=nodeIndex),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&(outerCache=node[expando]||(node[expando]={}),uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={}),uniqueCache[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)idx=indexOf(seed,matched[i]),seed[idx]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:function(elem){return!1===elem.disabled},disabled:function(elem){return!0===elem.disabled},checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i2&&"ID"===(token=tokens[0]).type&&support.getById&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(div1){return 1&div1.compareDocumentPosition(document.createElement("div"))}),assert(function(div){return div.innerHTML="","#"===div.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(div){return div.innerHTML="",div.firstChild.setAttribute("value",""),""===div.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(div){return null==div.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains;var dir=function(elem,dir,until){for(var matched=[],truncate=until!==undefined;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext,rsingleTag=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,risSimple=/^.[^:#\[\.,]*$/;jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret=[],self=this,len=self.length;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i1?jQuery.unique(ret):ret),ret.selector=this.selector?this.selector+" "+selector:selector,ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector.charAt(0)&&">"===selector.charAt(selector.length-1)&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)jQuery.isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}if((elem=document.getElementById(match[2]))&&elem.parentNode){if(elem.id!==match[2])return rootjQuery.find(selector);this.length=1,this[0]=elem}return this.context=document,this.selector=selector,this}return selector.nodeType?(this.context=this[0]=selector,this.length=1, -this):jQuery.isFunction(selector)?"undefined"!=typeof root.ready?root.ready(selector):selector(jQuery):(selector.selector!==undefined&&(this.selector=selector.selector,this.context=selector.context),jQuery.makeArray(selector,this))}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};jQuery.fn.extend({has:function(target){var i,targets=jQuery(target,this),len=targets.length;return this.filter(function(){for(i=0;i-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?jQuery.inArray(this[0],jQuery(elem)):jQuery.inArray(elem.jquery?elem[0]:elem,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.merge([],elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(ret=jQuery.filter(selector,ret)),this.length>1&&(guaranteedUnique[name]||(ret=jQuery.uniqueSort(ret)),rparentsprev.test(name)&&(ret=ret.reverse())),this.pushStack(ret)}});var rnotwhite=/\S+/g;jQuery.Callbacks=function(options){options="string"==typeof options?createOptions(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=!0,memory||self.disable(),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=args||[],args=[context,args.slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},then:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=jQuery.isFunction(fns[i])&&fns[i];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&jQuery.isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this===promise?newDefer.promise():this,fn?[returned]:arguments)})}),fns=null}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return promise.pipe=promise.then,jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[3];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[1^i][2].disable,tuples[2][2].lock),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?promise:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(subordinate){var progressValues,progressContexts,resolveContexts,i=0,resolveValues=slice.call(arguments),length=resolveValues.length,remaining=1!==length||subordinate&&jQuery.isFunction(subordinate.promise)?length:0,deferred=1===remaining?subordinate:jQuery.Deferred(),updateFunc=function(i,contexts,values){return function(value){contexts[i]=this,values[i]=arguments.length>1?slice.call(arguments):value,values===progressValues?deferred.notifyWith(contexts,values):--remaining||deferred.resolveWith(contexts,values)}};if(length>1)for(progressValues=new Array(length),progressContexts=new Array(length),resolveContexts=new Array(length);i0||(readyList.resolveWith(document,[jQuery]),jQuery.fn.triggerHandler&&(jQuery(document).triggerHandler("ready"),jQuery(document).off("ready"))))}}),jQuery.ready.promise=function(obj){if(!readyList)if(readyList=jQuery.Deferred(),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll)window.setTimeout(jQuery.ready);else if(document.addEventListener)document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed);else{document.attachEvent("onreadystatechange",completed),window.attachEvent("onload",completed);var top=!1;try{top=null==window.frameElement&&document.documentElement}catch(e){}top&&top.doScroll&&function doScrollCheck(){if(!jQuery.isReady){try{top.doScroll("left")}catch(e){return window.setTimeout(doScrollCheck,50)}detach(),jQuery.ready()}}()}return readyList.promise(obj)},jQuery.ready.promise();var i;for(i in jQuery(support))break;support.ownFirst="0"===i,support.inlineBlockNeedsLayout=!1,jQuery(function(){var val,div,body,container;(body=document.getElementsByTagName("body")[0])&&body.style&&(div=document.createElement("div"),container=document.createElement("div"),container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",body.appendChild(container).appendChild(div),"undefined"!=typeof div.style.zoom&&(div.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",support.inlineBlockNeedsLayout=val=3===div.offsetWidth,val&&(body.style.zoom=1)),body.removeChild(container))}),function(){var div=document.createElement("div");support.deleteExpando=!0;try{delete div.test}catch(e){support.deleteExpando=!1}div=null}();var acceptData=function(elem){var noData=jQuery.noData[(elem.nodeName+" ").toLowerCase()],nodeType=+elem.nodeType||1;return(1===nodeType||9===nodeType)&&(!noData||!0!==noData&&elem.getAttribute("classid")===noData)},rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/([A-Z])/g;jQuery.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(elem){return!!(elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando])&&!isEmptyDataObject(elem)},data:function(elem,name,data){return internalData(elem,name,data)},removeData:function(elem,name){return internalRemoveData(elem,name)},_data:function(elem,name,data){return internalData(elem,name,data,!0)},_removeData:function(elem,name){return internalRemoveData(elem,name,!0)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length&&(data=jQuery.data(elem),1===elem.nodeType&&!jQuery._data(elem,"parsedAttrs"))){for(i=attrs.length;i--;)attrs[i]&&(name=attrs[i].name,0===name.indexOf("data-")&&(name=jQuery.camelCase(name.slice(5)),dataAttr(elem,name,data[name])));jQuery._data(elem,"parsedAttrs",!0)}return data}return"object"==typeof key?this.each(function(){jQuery.data(this,key)}):arguments.length>1?this.each(function(){jQuery.data(this,key,value)}):elem?dataAttr(elem,key,jQuery.data(elem,key)):undefined},removeData:function(key){return this.each(function(){jQuery.removeData(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=jQuery._data(elem,type),data&&(!queue||jQuery.isArray(data)?queue=jQuery._data(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type)};"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,next,hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return jQuery._data(elem,key)||jQuery._data(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){jQuery._removeData(elem,type+"queue"),jQuery._removeData(elem,key)})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length
a",support.leadingWhitespace=3===div.firstChild.nodeType,support.tbody=!div.getElementsByTagName("tbody").length,support.htmlSerialize=!!div.getElementsByTagName("link").length,support.html5Clone="<:nav>"!==document.createElement("nav").cloneNode(!0).outerHTML,input.type="checkbox",input.checked=!0,fragment.appendChild(input),support.appendChecked=input.checked,div.innerHTML="",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue,fragment.appendChild(div),input=document.createElement("input"),input.setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,support.noCloneEvent=!!div.addEventListener,div[jQuery.expando]=1,support.attributes=!div.getAttribute(jQuery.expando)}();var wrapMap={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:support.htmlSerialize?[0,"",""]:[1,"X
","
"]};wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var rhtml=/<|&#?\w+;/,rtbody=/-1&&(namespaces=type.split("."),type=namespaces.shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event),event.isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=undefined,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)event.type=i>1?bubbleType:special.bindType||type,handle=(jQuery._data(cur,"events")||{})[event.type]&&jQuery._data(cur,"handle"),handle&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());if(event.type=type,!onlyHandlers&&!event.isDefaultPrevented()&&(!special._default||!1===special._default.apply(eventPath.pop(),data))&&acceptData(elem)&&ontype&&elem[type]&&!jQuery.isWindow(elem)){tmp=elem[ontype],tmp&&(elem[ontype]=null),jQuery.event.triggered=type;try{elem[type]()}catch(e){}jQuery.event.triggered=undefined,tmp&&(elem[ontype]=tmp)}return event.result}},dispatch:function(event){event=jQuery.event.fix(event);var i,j,ret,matched,handleObj,handlerQueue=[],args=slice.call(arguments),handlers=(jQuery._data(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};if(args[0]=event,event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))!==undefined&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,matches,sel,handleObj,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&("click"!==event.type||isNaN(event.button)||event.button<1))for(;cur!=this;cur=cur.parentNode||this)if(1===cur.nodeType&&(!0!==cur.disabled||"click"!==event.type)){for(matches=[],i=0;i-1:jQuery.find(sel,this,null,[cur]).length),matches[sel]&&matches.push(handleObj);matches.length&&handlerQueue.push({elem:cur,handlers:matches})}return delegateCount]","i"),rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,rnoInnerhtml=/\s*$/g,safeFragment=createSafeFragment(document),fragmentDiv=safeFragment.appendChild(document.createElement("div"));jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var destElements,node,clone,i,srcElements,inPage=jQuery.contains(elem.ownerDocument,elem);if(support.html5Clone||jQuery.isXMLDoc(elem)||!rnoshimcache.test("<"+elem.nodeName+">")?clone=elem.cloneNode(!0):(fragmentDiv.innerHTML=elem.outerHTML,fragmentDiv.removeChild(clone=fragmentDiv.firstChild)),!(support.noCloneEvent&&support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),srcElements=getAll(elem),i=0;null!=(node=srcElements[i]);++i)destElements[i]&&fixCloneNodeIssues(node,destElements[i]);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0;null!=(node=srcElements[i]);i++)cloneCopyEvent(node,destElements[i]);else cloneCopyEvent(elem,clone);return destElements=getAll(clone,"script"),destElements.length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),destElements=srcElements=node=null,clone},cleanData:function(elems,forceAcceptData){for(var elem,type,id,data,i=0,internalKey=jQuery.expando,cache=jQuery.cache,attributes=support.attributes,special=jQuery.event.special;null!=(elem=elems[i]);i++)if((forceAcceptData||acceptData(elem))&&(id=elem[internalKey],data=id&&cache[id])){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);cache[id]&&(delete cache[id],attributes||"undefined"==typeof elem.removeAttribute?elem[internalKey]=undefined:elem.removeAttribute(internalKey),deletedIds.push(id))}}}),jQuery.fn.extend({domManip:domManip,detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)}, -text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(value))},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){manipulationTarget(this,elem).appendChild(elem)}})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++){for(1===elem.nodeType&&jQuery.cleanData(getAll(elem,!1));elem.firstChild;)elem.removeChild(elem.firstChild);elem.options&&jQuery.nodeName(elem,"select")&&(elem.options.length=0)}return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined)return 1===elem.nodeType?elem.innerHTML.replace(rinlinejQuery,""):undefined;if("string"==typeof value&&!rnoInnerhtml.test(value)&&(support.htmlSerialize||!rnoshimcache.test(value))&&(support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;it",div.childNodes[0].style.borderCollapse="separate",contents=div.getElementsByTagName("td"),contents[0].style.cssText="margin:0;border:0;padding:0;display:none",(reliableHiddenOffsetsVal=0===contents[0].offsetHeight)&&(contents[0].style.display="",contents[1].style.display="none",reliableHiddenOffsetsVal=0===contents[0].offsetHeight)),documentElement.removeChild(container)}var pixelPositionVal,pixelMarginRightVal,boxSizingReliableVal,reliableHiddenOffsetsVal,reliableMarginRightVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.cssText="float:left;opacity:.5",support.opacity="0.5"===div.style.opacity,support.cssFloat=!!div.style.cssFloat,div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,container=document.createElement("div"),container.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",div.innerHTML="",container.appendChild(div),support.boxSizing=""===div.style.boxSizing||""===div.style.MozBoxSizing||""===div.style.WebkitBoxSizing,jQuery.extend(support,{reliableHiddenOffsets:function(){return null==pixelPositionVal&&computeStyleTests(),reliableHiddenOffsetsVal},boxSizingReliable:function(){return null==pixelPositionVal&&computeStyleTests(),boxSizingReliableVal},pixelMarginRight:function(){return null==pixelPositionVal&&computeStyleTests(),pixelMarginRightVal},pixelPosition:function(){return null==pixelPositionVal&&computeStyleTests(),pixelPositionVal},reliableMarginRight:function(){return null==pixelPositionVal&&computeStyleTests(),reliableMarginRightVal},reliableMarginLeft:function(){return null==pixelPositionVal&&computeStyleTests(),reliableMarginLeftVal}}))}();var getStyles,curCSS,rposition=/^(top|right|bottom|left)$/;window.getComputedStyle?(getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},curCSS=function(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return computed=computed||getStyles(elem),ret=computed?computed.getPropertyValue(name)||computed[name]:undefined,""!==ret&&ret!==undefined||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),computed&&!support.pixelMarginRight()&&rnumnonpx.test(ret)&&rmargin.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth),ret===undefined?ret:ret+""}):documentElement.currentStyle&&(getStyles=function(elem){return elem.currentStyle},curCSS=function(elem,name,computed){var left,rs,rsLeft,ret,style=elem.style;return computed=computed||getStyles(elem),ret=computed?computed[name]:undefined,null==ret&&style&&style[name]&&(ret=style[name]),rnumnonpx.test(ret)&&!rposition.test(name)&&(left=style.left,rs=elem.runtimeStyle,rsLeft=rs&&rs.left,rsLeft&&(rs.left=elem.currentStyle.left),style.left="fontSize"===name?"1em":ret,ret=style.pixelLeft+"px",style.left=left,rsLeft&&(rs.left=rsLeft)),ret===undefined?ret:ret+""||"auto"});var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity\s*=\s*([^)]*)/i,rdisplayswap=/^(none|table(?!-c[ea]).+)/,rnumsplit=new RegExp("^("+pnum+")(.*)$","i"),cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","O","Moz","ms"],emptyStyle=document.createElement("div").style;jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;if(name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],value===undefined)return hooks&&"get"in hooks&&(ret=hooks.get(elem,!1,extra))!==undefined?ret:style[name];if(type=typeof value,"string"===type&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value===value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),!(hooks&&"set"in hooks&&(value=hooks.set(elem,value,extra))===undefined)))try{style[name]=value}catch(e){}}},css:function(elem,name,extra,styles){var num,val,hooks,origName=jQuery.camelCase(name);return name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],hooks&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),val===undefined&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){if(computed)return rdisplayswap.test(jQuery.css(elem,"display"))&&0===elem.offsetWidth?swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra)}):getWidthOrHeight(elem,name,extra)},set:function(elem,value,extra){var styles=extra&&getStyles(elem);return setPositiveNumber(elem,value,extra?augmentWidthOrHeight(elem,name,extra,support.boxSizing&&"border-box"===jQuery.css(elem,"boxSizing",!1,styles),styles):0)}}}),support.opacity||(jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":computed?"1":""},set:function(elem,value){var style=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+100*value+")":"",filter=currentStyle&¤tStyle.filter||style.filter||"";style.zoom=1,(value>=1||""===value)&&""===jQuery.trim(filter.replace(ralpha,""))&&style.removeAttribute&&(style.removeAttribute("filter"),""===value||currentStyle&&!currentStyle.filter)||(style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+" "+opacity)}}),jQuery.cssHooks.marginRight=addGetHookIf(support.reliableMarginRight,function(elem,computed){if(computed)return swap(elem,{display:"inline-block"},curCSS,[elem,"marginRight"])}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||(jQuery.contains(elem.ownerDocument,elem)?elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}):0))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},rmargin.test(prefix)||(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){for(styles=getStyles(elem),len=name.length;i1)},show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHidden(this)?jQuery(this).show():jQuery(this).hide()})}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""),result&&"auto"!==result?result:0)},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){jQuery.isFunction(props)?(callback=props,props=["*"]):props=props.match(rnotwhite);for(var prop,index=0,length=props.length;index
a",a=div.getElementsByTagName("a")[0],input.setAttribute("type","checkbox"),div.appendChild(input),a=div.getElementsByTagName("a")[0],a.style.cssText="top:1px",support.getSetAttribute="t"!==div.className,support.style=/top/.test(a.getAttribute("style")),support.hrefNormalized="/a"===a.getAttribute("href"),support.checkOn=!!input.value,support.optSelected=opt.selected,support.enctype=!!document.createElement("form").enctype,select.disabled=!0,support.optDisabled=!opt.disabled,input=document.createElement("input"),input.setAttribute("value",""),support.input=""===input.getAttribute("value"),input.value="t",input.setAttribute("type","radio"),support.radioValue="t"===input.value}();var rreturn=/\r/g,rspaces=/[\x20\t\r\n\f]+/g;jQuery.fn.extend({val:function(value){var hooks,ret,isFunction,elem=this[0];{if(arguments.length)return isFunction=jQuery.isFunction(value),this.each(function(i){var val;1===this.nodeType&&(val=isFunction?value.call(this,i,jQuery(this).val()):value,null==val?val="":"number"==typeof val?val+="":jQuery.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&hooks.set(this,val,"value")!==undefined||(this.value=val))});if(elem)return(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined?ret:(ret=elem.value,"string"==typeof ret?ret.replace(rreturn,""):null==ret?"":ret)}}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:jQuery.trim(jQuery.text(elem)).replace(rspaces," ")}},select:{get:function(elem){for(var value,option,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type||index<0,values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;i-1)try{option.selected=optionSet=!0}catch(_){option.scrollHeight}else option.selected=!1;return optionSet||(elem.selectedIndex=-1),options}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(jQuery.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})});var nodeHook,boolHook,attrHandle=jQuery.expr.attrHandle,ruseDefault=/^(?:checked|selected)$/i,getSetAttribute=support.getSetAttribute,getSetInput=support.input;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return"undefined"==typeof elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(name=name.toLowerCase(),hooks=jQuery.attrHooks[name]||(jQuery.expr.match.bool.test(name)?boolHook:nodeHook)),value!==undefined?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:(ret=jQuery.find.attr(elem,name),null==ret?undefined:ret))},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&jQuery.nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,propName,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)propName=jQuery.propFix[name]||name,jQuery.expr.match.bool.test(name)?getSetInput&&getSetAttribute||!ruseDefault.test(name)?elem[propName]=!1:elem[jQuery.camelCase("default-"+name)]=elem[propName]=!1:jQuery.attr(elem,name,""),elem.removeAttribute(getSetAttribute?name:propName)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):getSetInput&&getSetAttribute||!ruseDefault.test(name)?elem.setAttribute(!getSetAttribute&&jQuery.propFix[name]||name,name):elem[jQuery.camelCase("default-"+name)]=elem[name]=!0,name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;getSetInput&&getSetAttribute||!ruseDefault.test(name)?attrHandle[name]=function(elem,name,isXML){var ret,handle;return isXML||(handle=attrHandle[name],attrHandle[name]=ret,ret=null!=getter(elem,name,isXML)?name.toLowerCase():null,attrHandle[name]=handle),ret}:attrHandle[name]=function(elem,name,isXML){if(!isXML)return elem[jQuery.camelCase("default-"+name)]?name.toLowerCase():null}}),getSetInput&&getSetAttribute||(jQuery.attrHooks.value={set:function(elem,value,name){if(!jQuery.nodeName(elem,"input"))return nodeHook&&nodeHook.set(elem,value,name);elem.defaultValue=value}}),getSetAttribute||(nodeHook={set:function(elem,value,name){var ret=elem.getAttributeNode(name);if(ret||elem.setAttributeNode(ret=elem.ownerDocument.createAttribute(name)),ret.value=value+="","value"===name||value===elem.getAttribute(name))return value}},attrHandle.id=attrHandle.name=attrHandle.coords=function(elem,name,isXML){var ret;if(!isXML)return(ret=elem.getAttributeNode(name))&&""!==ret.value?ret.value:null},jQuery.valHooks.button={get:function(elem,name){var ret=elem.getAttributeNode(name);if(ret&&ret.specified)return ret.value},set:nodeHook.set},jQuery.attrHooks.contenteditable={set:function(elem,value,name){nodeHook.set(elem,""!==value&&value,name)}},jQuery.each(["width","height"],function(i,name){jQuery.attrHooks[name]={set:function(elem,value){if(""===value)return elem.setAttribute(name,"auto"),value}}})),support.style||(jQuery.attrHooks.style={get:function(elem){return elem.style.cssText||undefined},set:function(elem,value){return elem.style.cssText=value+""}});var rfocusable=/^(?:input|select|textarea|button|object)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return name=jQuery.propFix[name]||name,this.each(function(){try{this[name]=undefined,delete this[name]}catch(e){}})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),value!==undefined?hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),support.hrefNormalized||jQuery.each(["href","src"],function(i,name){jQuery.propHooks[name]={get:function(elem){return elem.getAttribute(name,4)}}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex),null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),support.enctype||(jQuery.propFix.enctype="encoding");var rclass=/[\t\r\n\f]/g;jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if("string"==typeof value&&value)for(classes=value.match(rnotwhite)||[];elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&(" "+curValue+" ").replace(rclass," ")){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");finalValue=jQuery.trim(cur),curValue!==finalValue&&jQuery.attr(elem,"class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof value&&value)for(classes=value.match(rnotwhite)||[];elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&(" "+curValue+" ").replace(rclass," ")){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");finalValue=jQuery.trim(cur),curValue!==finalValue&&jQuery.attr(elem,"class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value;return"boolean"==typeof stateVal&&"string"===type?stateVal?this.addClass(value):this.removeClass(value):jQuery.isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if("string"===type)for(i=0,self=jQuery(this),classNames=value.match(rnotwhite)||[];className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else value!==undefined&&"boolean"!==type||(className=getClass(this),className&&jQuery._data(this,"__className__",className),jQuery.attr(this,"class",className||!1===value?"":jQuery._data(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+getClass(elem)+" ").replace(rclass," ").indexOf(className)>-1)return!0;return!1}}),jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}});var location=window.location,nonce=jQuery.now(),rquery=/\?/,rvalidtokens=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON=function(data){if(window.JSON&&window.JSON.parse)return window.JSON.parse(data+"");var requireNonComma,depth=null,str=jQuery.trim(data+"");return str&&!jQuery.trim(str.replace(rvalidtokens,function(token,comma,open,close){return requireNonComma&&comma&&(depth=0),0===depth?token:(requireNonComma=open||comma,depth+=!close-!open,"")}))?Function("return "+str)():jQuery.error("Invalid JSON: "+data)},jQuery.parseXML=function(data){var xml,tmp;if(!data||"string"!=typeof data)return null;try{window.DOMParser?(tmp=new window.DOMParser,xml=tmp.parseFromString(data,"text/xml")):(xml=new window.ActiveXObject("Microsoft.XMLDOM"),xml.async="false",xml.loadXML(data))}catch(e){xml=undefined}return xml&&xml.documentElement&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,prefilters={},transports={},allTypes="*/".concat("*"),ajaxLocation=location.href,ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[];jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;2!==state&&(state=2,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=undefined,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=ajaxHandleResponses(s,jqXHR,responses)),response=ajaxConvert(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&(modified=jqXHR.getResponseHeader("Last-Modified"),modified&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)), -204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,error=response.error,isSuccess=!error)):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=undefined,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}"object"==typeof url&&(options=url,url=undefined),options=options||{};var parts,i,cacheURL,responseHeadersString,timeoutTimer,fireGlobals,transport,responseHeaders,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},state=0,strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(2===state){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return 2===state?responseHeadersString:null},setRequestHeader:function(name,value){var lname=name.toLowerCase();return state||(name=requestHeadersNames[lname]=requestHeadersNames[lname]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return state||(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(state<2)for(code in map)statusCode[code]=[statusCode[code],map[code]];else jqXHR.always(map[jqXHR.status]);return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR).complete=completeDeferred.add,jqXHR.success=jqXHR.done,jqXHR.error=jqXHR.fail,s.url=((url||s.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().match(rnotwhite)||[""],null==s.crossDomain&&(parts=rurl.exec(s.url.toLowerCase()),s.crossDomain=!(!parts||parts[1]===ajaxLocParts[1]&&parts[2]===ajaxLocParts[2]&&(parts[3]||("http:"===parts[1]?"80":"443"))===(ajaxLocParts[3]||("http:"===ajaxLocParts[1]?"80":"443")))),s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),2===state)return jqXHR;fireGlobals=jQuery.event&&s.global,fireGlobals&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url,s.hasContent||(s.data&&(cacheURL=s.url+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(s.url=rts.test(cacheURL)?cacheURL.replace(rts,"$1_="+nonce++):cacheURL+(rquery.test(cacheURL)?"&":"?")+"_="+nonce++)),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||2===state))return jqXHR.abort();strAbort="abort";for(i in{success:1,error:1,complete:1})jqXHR[i](s[i]);if(transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),2===state)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{state=1,transport.send(requestHeaders,done)}catch(e){if(!(state<2))throw e;done(-1,e)}}else done(-1,"No Transport");return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return jQuery.isFunction(data)&&(type=type||callback,callback=data,data=undefined),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},jQuery.fn.extend({wrapAll:function(html){if(jQuery.isFunction(html))return this.each(function(i){jQuery(this).wrapAll(html.call(this,i))});if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstChild&&1===elem.firstChild.nodeType;)elem=elem.firstChild;return elem}).append(this)}return this},wrapInner:function(html){return jQuery.isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html)})},unwrap:function(){return this.parent().each(function(){jQuery.nodeName(this,"body")||jQuery(this).replaceWith(this.childNodes)}).end()}}),jQuery.expr.filters.hidden=function(elem){return support.reliableHiddenOffsets()?elem.offsetWidth<=0&&elem.offsetHeight<=0&&!elem.getClientRects().length:filterHidden(elem)},jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem)};var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,value){value=jQuery.isFunction(value)?value():null==value?"":value,s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value)};if(traditional===undefined&&(traditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional),jQuery.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&").replace(r20,"+")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}}),jQuery.ajaxSettings.xhr=window.ActiveXObject!==undefined?function(){return this.isLocal?createActiveXHR():document.documentMode>8?createStandardXHR():/^(get|post|head|put|delete|options)$/i.test(this.type)&&createStandardXHR()||createActiveXHR()}:createStandardXHR;var xhrId=0,xhrCallbacks={},xhrSupported=jQuery.ajaxSettings.xhr();window.attachEvent&&window.attachEvent("onunload",function(){for(var key in xhrCallbacks)xhrCallbacks[key](undefined,!0)}),support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,xhrSupported=support.ajax=!!xhrSupported,xhrSupported&&jQuery.ajaxTransport(function(options){if(!options.crossDomain||support.cors){var callback;return{send:function(headers,complete){var i,xhr=options.xhr(),id=++xhrId;if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest");for(i in headers)headers[i]!==undefined&&xhr.setRequestHeader(i,headers[i]+"");xhr.send(options.hasContent&&options.data||null),callback=function(_,isAbort){var status,statusText,responses;if(callback&&(isAbort||4===xhr.readyState))if(delete xhrCallbacks[id],callback=undefined,xhr.onreadystatechange=jQuery.noop,isAbort)4!==xhr.readyState&&xhr.abort();else{responses={},status=xhr.status,"string"==typeof xhr.responseText&&(responses.text=xhr.responseText);try{statusText=xhr.statusText}catch(e){statusText=""}status||!options.isLocal||options.crossDomain?1223===status&&(status=204):status=responses.text?200:404}responses&&complete(status,statusText,responses,xhr.getAllResponseHeaders())},options.async?4===xhr.readyState?window.setTimeout(callback):xhr.onreadystatechange=xhrCallbacks[id]=callback:callback()},abort:function(){callback&&callback(undefined,!0)}}}}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){s.cache===undefined&&(s.cache=!1),s.crossDomain&&(s.type="GET",s.global=!1)}),jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||jQuery("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script"),script.async=!0,s.scriptCharset&&(script.charset=s.scriptCharset),script.src=s.url,script.onload=script.onreadystatechange=function(_,isAbort){(isAbort||!script.readyState||/loaded|complete/.test(script.readyState))&&(script.onload=script.onreadystatechange=null,script.parentNode&&script.parentNode.removeChild(script),script=null,isAbort||callback(200,"success"))},head.insertBefore(script,head.firstChild)},abort:function(){script&&script.onload(undefined,!0)}}}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){overwritten===undefined?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&jQuery.isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=undefined}),"script"}),jQuery.parseHTML=function(data,context,keepScripts){if(!data||"string"!=typeof data)return null;"boolean"==typeof context&&(keepScripts=context,context=!1),context=context||document;var parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];return parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes))};var _load=jQuery.fn.load;jQuery.fn.load=function(url,params,callback){if("string"!=typeof url&&_load)return _load.apply(this,arguments);var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=jQuery.trim(url.slice(off,url.length)),url=url.slice(0,off)),jQuery.isFunction(params)?(callback=params,params=undefined):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("
").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),calculatePosition=("absolute"===position||"fixed"===position)&&jQuery.inArray("auto",[curCSSTop,curCSSLeft])>-1,calculatePosition?(curPosition=curElem.position(),curTop=curPosition.top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),jQuery.isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var docElem,win,box={top:0,left:0},elem=this[0],doc=elem&&elem.ownerDocument;if(doc)return docElem=doc.documentElement,jQuery.contains(docElem,elem)?("undefined"!=typeof elem.getBoundingClientRect&&(box=elem.getBoundingClientRect()),win=getWindow(doc),{top:box.top+(win.pageYOffset||docElem.scrollTop)-(docElem.clientTop||0),left:box.left+(win.pageXOffset||docElem.scrollLeft)-(docElem.clientLeft||0)}):box},position:function(){if(this[0]){var offsetParent,offset,parentOffset={top:0,left:0},elem=this[0];return"fixed"===jQuery.css(elem,"position")?offset=elem.getBoundingClientRect():(offsetParent=this.offsetParent(),offset=this.offset(),jQuery.nodeName(offsetParent[0],"html")||(parentOffset=offsetParent.offset()),parentOffset.top+=jQuery.css(offsetParent[0],"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent[0],"borderLeftWidth",!0)),{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&!jQuery.nodeName(offsetParent,"html")&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top=/Y/.test(prop);jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);if(val===undefined)return win?prop in win?win[prop]:win.document.documentElement[method]:elem[method];win?win.scrollTo(top?jQuery(win).scrollLeft():val,top?val:jQuery(win).scrollTop()):elem[method]=val},method,val,arguments.length,null)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return jQuery.isWindow(elem)?elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:undefined,chainable,null)}})}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.fn.size=function(){return this.length},jQuery.fn.andSelf=jQuery.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function($,undefined){"use strict";$.rails!==undefined&&$.error("jquery-ujs has already been loaded!");var rails,$document=$(document);$.rails=rails={linkClickSelector:"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]",buttonClickSelector:"button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)",inputChangeSelector:"select[data-remote], input[data-remote], textarea[data-remote]",formSubmitSelector:"form",formInputClickSelector:"form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])",disableSelector:"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled",enableSelector:"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled",requiredInputSelector:"input[name][required]:not([disabled]), textarea[name][required]:not([disabled])",fileInputSelector:"input[name][type=file]:not([disabled])",linkDisableSelector:"a[data-disable-with], a[data-disable]",buttonDisableSelector:"button[data-remote][data-disable-with], button[data-remote][data-disable]",csrfToken:function(){return $("meta[name=csrf-token]").attr("content")},csrfParam:function(){return $("meta[name=csrf-param]").attr("content")},CSRFProtection:function(xhr){var token=rails.csrfToken();token&&xhr.setRequestHeader("X-CSRF-Token",token)},refreshCSRFTokens:function(){$('form input[name="'+rails.csrfParam()+'"]').val(rails.csrfToken())},fire:function(obj,name,data){var event=$.Event(name);return obj.trigger(event,data),!1!==event.result},confirm:function(message){return confirm(message)},ajax:function(options){return $.ajax(options)},href:function(element){return element[0].href},isRemote:function(element){return element.data("remote")!==undefined&&!1!==element.data("remote")},handleRemote:function(element){var method,url,data,withCredentials,dataType,options;if(rails.fire(element,"ajax:before")){if(withCredentials=element.data("with-credentials")||null,dataType=element.data("type")||$.ajaxSettings&&$.ajaxSettings.dataType,element.is("form")){method=element.data("ujs:submit-button-formmethod")||element.attr("method"),url=element.data("ujs:submit-button-formaction")||element.attr("action"),data=$(element[0]).serializeArray();var button=element.data("ujs:submit-button");button&&(data.push(button),element.data("ujs:submit-button",null)),element.data("ujs:submit-button-formmethod",null),element.data("ujs:submit-button-formaction",null)}else element.is(rails.inputChangeSelector)?(method=element.data("method"),url=element.data("url"),data=element.serialize(),element.data("params")&&(data=data+"&"+element.data("params"))):element.is(rails.buttonClickSelector)?(method=element.data("method")||"get",url=element.data("url"),data=element.serialize(),element.data("params")&&(data=data+"&"+element.data("params"))):(method=element.data("method"),url=rails.href(element),data=element.data("params")||null);return options={type:method||"GET",data:data,dataType:dataType,beforeSend:function(xhr,settings){if(settings.dataType===undefined&&xhr.setRequestHeader("accept","*/*;q=0.5, "+settings.accepts.script),!rails.fire(element,"ajax:beforeSend",[xhr,settings]))return!1;element.trigger("ajax:send",xhr)},success:function(data,status,xhr){element.trigger("ajax:success",[data,status,xhr])},complete:function(xhr,status){element.trigger("ajax:complete",[xhr,status])},error:function(xhr,status,error){element.trigger("ajax:error",[xhr,status,error])},crossDomain:rails.isCrossDomain(url)},withCredentials&&(options.xhrFields={withCredentials:withCredentials}),url&&(options.url=url),rails.ajax(options)}return!1},isCrossDomain:function(url){var originAnchor=document.createElement("a");originAnchor.href=location.href;var urlAnchor=document.createElement("a");try{return urlAnchor.href=url,urlAnchor.href=urlAnchor.href,!((!urlAnchor.protocol||":"===urlAnchor.protocol)&&!urlAnchor.host||originAnchor.protocol+"//"+originAnchor.host==urlAnchor.protocol+"//"+urlAnchor.host)}catch(e){return!0}},handleMethod:function(link){var href=rails.href(link),method=link.data("method"),target=link.attr("target"),csrfToken=rails.csrfToken(),csrfParam=rails.csrfParam(),form=$('
'),metadataInput='';csrfParam===undefined||csrfToken===undefined||rails.isCrossDomain(href)||(metadataInput+=''),target&&form.attr("target",target),form.hide().append(metadataInput).appendTo("body"),form.submit()},formElements:function(form,selector){return form.is("form")?$(form[0].elements).filter(selector):form.find(selector)},disableFormElements:function(form){rails.formElements(form,rails.disableSelector).each(function(){rails.disableFormElement($(this))})},disableFormElement:function(element){var method,replacement;method=element.is("button")?"html":"val",replacement=element.data("disable-with"),replacement!==undefined&&(element.data("ujs:enable-with",element[method]()),element[method](replacement)),element.prop("disabled",!0),element.data("ujs:disabled",!0)},enableFormElements:function(form){rails.formElements(form,rails.enableSelector).each(function(){rails.enableFormElement($(this))})},enableFormElement:function(element){var method=element.is("button")?"html":"val";element.data("ujs:enable-with")!==undefined&&(element[method](element.data("ujs:enable-with")),element.removeData("ujs:enable-with")),element.prop("disabled",!1),element.removeData("ujs:disabled")},allowAction:function(element){var callback,message=element.data("confirm"),answer=!1;if(!message)return!0;if(rails.fire(element,"confirm")){try{answer=rails.confirm(message)}catch(e){(console.error||console.log).call(console,e.stack||e)}callback=rails.fire(element,"confirm:complete",[answer])}return answer&&callback},blankInputs:function(form,specifiedSelector,nonBlank){var input,valueToCheck,radiosForNameWithNoneSelected,radioName,foundInputs=$(),selector=specifiedSelector||"input,textarea",requiredInputs=form.find(selector),checkedRadioButtonNames={};return requiredInputs.each(function(){input=$(this),input.is("input[type=radio]")?(radioName=input.attr("name"),checkedRadioButtonNames[radioName]||(0===form.find('input[type=radio]:checked[name="'+radioName+'"]').length&&(radiosForNameWithNoneSelected=form.find('input[type=radio][name="'+radioName+'"]'),foundInputs=foundInputs.add(radiosForNameWithNoneSelected)),checkedRadioButtonNames[radioName]=radioName)):(valueToCheck=input.is("input[type=checkbox],input[type=radio]")?input.is(":checked"):!!input.val())===nonBlank&&(foundInputs=foundInputs.add(input))}),!!foundInputs.length&&foundInputs},nonBlankInputs:function(form,specifiedSelector){return rails.blankInputs(form,specifiedSelector,!0)},stopEverything:function(e){return $(e.target).trigger("ujs:everythingStopped"),e.stopImmediatePropagation(),!1},disableElement:function(element){var replacement=element.data("disable-with");replacement!==undefined&&(element.data("ujs:enable-with",element.html()),element.html(replacement)),element.bind("click.railsDisable",function(e){return rails.stopEverything(e)}),element.data("ujs:disabled",!0)},enableElement:function(element){element.data("ujs:enable-with")!==undefined&&(element.html(element.data("ujs:enable-with")),element.removeData("ujs:enable-with")),element.unbind("click.railsDisable"),element.removeData("ujs:disabled")}},rails.fire($document,"rails:attachBindings")&&($.ajaxPrefilter(function(options,originalOptions,xhr){options.crossDomain||rails.CSRFProtection(xhr)}),$(window).on("pageshow.rails",function(){$($.rails.enableSelector).each(function(){var element=$(this);element.data("ujs:disabled")&&$.rails.enableFormElement(element)}),$($.rails.linkDisableSelector).each(function(){var element=$(this);element.data("ujs:disabled")&&$.rails.enableElement(element)})}),$document.on("ajax:complete",rails.linkDisableSelector,function(){rails.enableElement($(this))}),$document.on("ajax:complete",rails.buttonDisableSelector,function(){rails.enableFormElement($(this))}),$document.on("click.rails",rails.linkClickSelector,function(e){var link=$(this),method=link.data("method"),data=link.data("params"),metaClick=e.metaKey||e.ctrlKey;if(!rails.allowAction(link))return rails.stopEverything(e);if(!metaClick&&link.is(rails.linkDisableSelector)&&rails.disableElement(link),rails.isRemote(link)){if(metaClick&&(!method||"GET"===method)&&!data)return!0;var handleRemote=rails.handleRemote(link);return!1===handleRemote?rails.enableElement(link):handleRemote.fail(function(){rails.enableElement(link)}),!1}return method?(rails.handleMethod(link),!1):void 0}),$document.on("click.rails",rails.buttonClickSelector,function(e){var button=$(this);if(!rails.allowAction(button)||!rails.isRemote(button))return rails.stopEverything(e);button.is(rails.buttonDisableSelector)&&rails.disableFormElement(button);var handleRemote=rails.handleRemote(button);return!1===handleRemote?rails.enableFormElement(button):handleRemote.fail(function(){rails.enableFormElement(button)}),!1}),$document.on("change.rails",rails.inputChangeSelector,function(e){var link=$(this);return rails.allowAction(link)&&rails.isRemote(link)?(rails.handleRemote(link),!1):rails.stopEverything(e)}),$document.on("submit.rails",rails.formSubmitSelector,function(e){var blankRequiredInputs,nonBlankFileInputs,form=$(this),remote=rails.isRemote(form);if(!rails.allowAction(form))return rails.stopEverything(e);if(form.attr("novalidate")===undefined)if(form.data("ujs:formnovalidate-button")===undefined){if((blankRequiredInputs=rails.blankInputs(form,rails.requiredInputSelector,!1))&&rails.fire(form,"ajax:aborted:required",[blankRequiredInputs]))return rails.stopEverything(e)}else form.data("ujs:formnovalidate-button",undefined);if(remote){if(nonBlankFileInputs=rails.nonBlankInputs(form,rails.fileInputSelector)){setTimeout(function(){rails.disableFormElements(form)},13);var aborted=rails.fire(form,"ajax:aborted:file",[nonBlankFileInputs]);return aborted||setTimeout(function(){rails.enableFormElements(form)},13),aborted}return rails.handleRemote(form),!1}setTimeout(function(){rails.disableFormElements(form)},13)}),$document.on("click.rails",rails.formInputClickSelector,function(event){var button=$(this);if(!rails.allowAction(button))return rails.stopEverything(event);var name=button.attr("name"),data=name?{name:name,value:button.val()}:null,form=button.closest("form");0===form.length&&(form=$("#"+button.attr("form"))),form.data("ujs:submit-button",data),form.data("ujs:formnovalidate-button",button.attr("formnovalidate")),form.data("ujs:submit-button-formaction",button.attr("formaction")),form.data("ujs:submit-button-formmethod",button.attr("formmethod"))}),$document.on("ajax:send.rails",rails.formSubmitSelector,function(event){this===event.target&&rails.disableFormElements($(this))}),$document.on("ajax:complete.rails",rails.formSubmitSelector,function(event){this===event.target&&rails.enableFormElements($(this))}),$(function(){rails.refreshCSRFTokens()}))}(jQuery),function($){"use strict";$(function(){$.support.transition=function(){var transitionEnd=function(){var name,el=document.createElement("bootstrap"),transEndEventNames={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(name in transEndEventNames)if(el.style[name]!==undefined)return transEndEventNames[name]}();return transitionEnd&&{end:transitionEnd}}()})}(window.jQuery),function($){"use strict";var Affix=function(element,options){this.options=$.extend({},$.fn.affix.defaults,options),this.$window=$(window).on("scroll.affix.data-api",$.proxy(this.checkPosition,this)).on("click.affix.data-api",$.proxy(function(){setTimeout($.proxy(this.checkPosition,this),1)},this)),this.$element=$(element),this.checkPosition()};Affix.prototype.checkPosition=function(){if(this.$element.is(":visible")){var affix,scrollHeight=$(document).height(),scrollTop=this.$window.scrollTop(),position=this.$element.offset(),offset=this.options.offset,offsetBottom=offset.bottom,offsetTop=offset.top,reset="affix affix-top affix-bottom";"object"!=typeof offset&&(offsetBottom=offsetTop=offset),"function"==typeof offsetTop&&(offsetTop=offset.top()),"function"==typeof offsetBottom&&(offsetBottom=offset.bottom()),affix=!(null!=this.unpin&&scrollTop+this.unpin<=position.top)&&(null!=offsetBottom&&position.top+this.$element.height()>=scrollHeight-offsetBottom?"bottom":null!=offsetTop&&scrollTop<=offsetTop&&"top"),this.affixed!==affix&&(this.affixed=affix,this.unpin="bottom"==affix?position.top-scrollTop:null,this.$element.removeClass(reset).addClass("affix"+(affix?"-"+affix:"")))}};var old=$.fn.affix;$.fn.affix=function(option){return this.each(function(){var $this=$(this),data=$this.data("affix"),options="object"==typeof option&&option;data||$this.data("affix",data=new Affix(this,options)),"string"==typeof option&&data[option]()})},$.fn.affix.Constructor=Affix,$.fn.affix.defaults={offset:0},$.fn.affix.noConflict=function(){return $.fn.affix=old,this},$(window).on("load",function(){$('[data-spy="affix"]').each(function(){var $spy=$(this),data=$spy.data();data.offset=data.offset||{},data.offsetBottom&&(data.offset.bottom=data.offsetBottom),data.offsetTop&&(data.offset.top=data.offsetTop),$spy.affix(data)})})}(window.jQuery),function($){"use strict";var dismiss='[data-dismiss="alert"]',Alert=function(el){$(el).on("click",dismiss,this.close)};Alert.prototype.close=function(e){function removeElement(){$parent.trigger("closed").remove()}var $parent,$this=$(this),selector=$this.attr("data-target");selector||(selector=$this.attr("href"),selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),e&&e.preventDefault(),$parent.length||($parent=$this.hasClass("alert")?$this:$this.parent()),$parent.trigger(e=$.Event("close")),e.isDefaultPrevented()||($parent.removeClass("in"),$.support.transition&&$parent.hasClass("fade")?$parent.on($.support.transition.end,removeElement):removeElement())};var old=$.fn.alert;$.fn.alert=function(option){return this.each(function(){var $this=$(this),data=$this.data("alert");data||$this.data("alert",data=new Alert(this)),"string"==typeof option&&data[option].call($this)})},$.fn.alert.Constructor=Alert, -$.fn.alert.noConflict=function(){return $.fn.alert=old,this},$(document).on("click.alert.data-api",dismiss,Alert.prototype.close)}(window.jQuery),function($){"use strict";var Button=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.button.defaults,options)};Button.prototype.setState=function(state){var d="disabled",$el=this.$element,data=$el.data(),val=$el.is("input")?"val":"html";state+="Text",data.resetText||$el.data("resetText",$el[val]()),$el[val](data[state]||this.options[state]),setTimeout(function(){"loadingText"==state?$el.addClass(d).attr(d,d):$el.removeClass(d).removeAttr(d)},0)},Button.prototype.toggle=function(){var $parent=this.$element.closest('[data-toggle="buttons-radio"]');$parent&&$parent.find(".active").removeClass("active"),this.$element.toggleClass("active")};var old=$.fn.button;$.fn.button=function(option){return this.each(function(){var $this=$(this),data=$this.data("button"),options="object"==typeof option&&option;data||$this.data("button",data=new Button(this,options)),"toggle"==option?data.toggle():option&&data.setState(option)})},$.fn.button.defaults={loadingText:"loading..."},$.fn.button.Constructor=Button,$.fn.button.noConflict=function(){return $.fn.button=old,this},$(document).on("click.button.data-api","[data-toggle^=button]",function(e){var $btn=$(e.target);$btn.hasClass("btn")||($btn=$btn.closest(".btn")),$btn.button("toggle")})}(window.jQuery),function($){"use strict";var Carousel=function(element,options){this.$element=$(element),this.$indicators=this.$element.find(".carousel-indicators"),this.options=options,"hover"==this.options.pause&&this.$element.on("mouseenter",$.proxy(this.pause,this)).on("mouseleave",$.proxy(this.cycle,this))};Carousel.prototype={cycle:function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval($.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(pos){var activeIndex=this.getActiveIndex(),that=this;if(!(pos>this.$items.length-1||pos<0))return this.sliding?this.$element.one("slid",function(){that.to(pos)}):activeIndex==pos?this.pause().cycle():this.slide(pos>activeIndex?"next":"prev",$(this.$items[pos]))},pause:function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&$.support.transition.end&&(this.$element.trigger($.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(type,next){var e,$active=this.$element.find(".item.active"),$next=next||$active[type](),isCycling=this.interval,direction="next"==type?"left":"right",fallback="next"==type?"first":"last",that=this;if(this.sliding=!0,isCycling&&this.pause(),$next=$next.length?$next:this.$element.find(".item")[fallback](),e=$.Event("slide",{relatedTarget:$next[0],direction:direction}),!$next.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var $nextIndicator=$(that.$indicators.children()[that.getActiveIndex()]);$nextIndicator&&$nextIndicator.addClass("active")})),$.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(e),e.isDefaultPrevented())return;$next.addClass(type),$next[0].offsetWidth,$active.addClass(direction),$next.addClass(direction),this.$element.one($.support.transition.end,function(){$next.removeClass([type,direction].join(" ")).addClass("active"),$active.removeClass(["active",direction].join(" ")),that.sliding=!1,setTimeout(function(){that.$element.trigger("slid")},0)})}else{if(this.$element.trigger(e),e.isDefaultPrevented())return;$active.removeClass("active"),$next.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return isCycling&&this.cycle(),this}}};var old=$.fn.carousel;$.fn.carousel=function(option){return this.each(function(){var $this=$(this),data=$this.data("carousel"),options=$.extend({},$.fn.carousel.defaults,"object"==typeof option&&option),action="string"==typeof option?option:options.slide;data||$this.data("carousel",data=new Carousel(this,options)),"number"==typeof option?data.to(option):action?data[action]():options.interval&&data.pause().cycle()})},$.fn.carousel.defaults={interval:5e3,pause:"hover"},$.fn.carousel.Constructor=Carousel,$.fn.carousel.noConflict=function(){return $.fn.carousel=old,this},$(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(e){var href,slideIndex,$this=$(this),$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),options=$.extend({},$target.data(),$this.data());$target.carousel(options),(slideIndex=$this.attr("data-slide-to"))&&$target.data("carousel").pause().to(slideIndex).cycle(),e.preventDefault()})}(window.jQuery),function($){"use strict";var Collapse=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.collapse.defaults,options),this.options.parent&&(this.$parent=$(this.options.parent)),this.options.toggle&&this.toggle()};Collapse.prototype={constructor:Collapse,dimension:function(){return this.$element.hasClass("width")?"width":"height"},show:function(){var dimension,scroll,actives,hasData;if(!this.transitioning&&!this.$element.hasClass("in")){if(dimension=this.dimension(),scroll=$.camelCase(["scroll",dimension].join("-")),(actives=this.$parent&&this.$parent.find("> .accordion-group > .in"))&&actives.length){if((hasData=actives.data("collapse"))&&hasData.transitioning)return;actives.collapse("hide"),hasData||actives.data("collapse",null)}this.$element[dimension](0),this.transition("addClass",$.Event("show"),"shown"),$.support.transition&&this.$element[dimension](this.$element[0][scroll])}},hide:function(){var dimension;!this.transitioning&&this.$element.hasClass("in")&&(dimension=this.dimension(),this.reset(this.$element[dimension]()),this.transition("removeClass",$.Event("hide"),"hidden"),this.$element[dimension](0))},reset:function(size){var dimension=this.dimension();return this.$element.removeClass("collapse")[dimension](size||"auto")[0].offsetWidth,this.$element[null!==size?"addClass":"removeClass"]("collapse"),this},transition:function(method,startEvent,completeEvent){var that=this,complete=function(){"show"==startEvent.type&&that.reset(),that.transitioning=0,that.$element.trigger(completeEvent)};this.$element.trigger(startEvent),startEvent.isDefaultPrevented()||(this.transitioning=1,this.$element[method]("in"),$.support.transition&&this.$element.hasClass("collapse")?this.$element.one($.support.transition.end,complete):complete())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var old=$.fn.collapse;$.fn.collapse=function(option){return this.each(function(){var $this=$(this),data=$this.data("collapse"),options=$.extend({},$.fn.collapse.defaults,$this.data(),"object"==typeof option&&option);data||$this.data("collapse",data=new Collapse(this,options)),"string"==typeof option&&data[option]()})},$.fn.collapse.defaults={toggle:!0},$.fn.collapse.Constructor=Collapse,$.fn.collapse.noConflict=function(){return $.fn.collapse=old,this},$(document).on("click.collapse.data-api","[data-toggle=collapse]",function(e){var href,$this=$(this),target=$this.attr("data-target")||e.preventDefault()||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,""),option=$(target).data("collapse")?"toggle":$this.data();$this[$(target).hasClass("in")?"addClass":"removeClass"]("collapsed"),$(target).collapse(option)})}(window.jQuery),function($){"use strict";function clearMenus(){$(".dropdown-backdrop").remove(),$(toggle).each(function(){getParent($(this)).removeClass("open")})}function getParent($this){var $parent,selector=$this.attr("data-target");return selector||(selector=$this.attr("href"),selector=selector&&/#/.test(selector)&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=selector&&$(selector),$parent&&$parent.length||($parent=$this.parent()),$parent}var toggle="[data-toggle=dropdown]",Dropdown=function(element){var $el=$(element).on("click.dropdown.data-api",this.toggle);$("html").on("click.dropdown.data-api",function(){$el.parent().removeClass("open")})};Dropdown.prototype={constructor:Dropdown,toggle:function(){var $parent,isActive,$this=$(this);if(!$this.is(".disabled, :disabled"))return $parent=getParent($this),isActive=$parent.hasClass("open"),clearMenus(),isActive||("ontouchstart"in document.documentElement&&$('