diff --git a/.eslintignore b/.eslintignore index ed2ae9c3ba..c2d254a5c8 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,3 +8,4 @@ options/* reports/* web/ext/* web/dist/* +web/build/* diff --git a/.eslintrc b/.eslintrc index 82c47742f5..b2d264bc7f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,23 +5,20 @@ }, "parserOptions": { "ecmaVersion": 6, - "sourceType": "script" + "sourceType": "module", + "ecmaFeatures": { + "jsx": false + } }, "extends": "standard", "rules": { "semi": ["error", "always"], - "space-before-function-paren": "off" + "space-before-function-paren": "off", + "object-curly-spacing": ["warn", "always"], }, "overrides": [ { "files": [ "web/**/*.js", "test/**/*.js" ], - "parserOptions": { - "ecmaVersion": 5, - "sourceType": "script", - "ecmaFeatures": { - "jsx": false - } - }, "rules": { "no-octal": "warn", "no-unused-vars": "warn", @@ -56,15 +53,6 @@ "standard/computed-property-even-spacing": "warn", "wrap-iife": "warn", "new-cap": "warn" - }, - "globals": { - "wv": true, - "wvx": true, - "WVC": true, - "buster": true, - "jQuery": true, - "$": true, - "_": true } } ] diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 59% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md index 42b9c38bbf..d47b4bc2bd 100644 --- a/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -2,22 +2,28 @@ Thanks for considering contributing and making our planet easier to explore! -We'd be quite excited if you'd like to contribute to Worldview! Whether you're finding bugs, adding new features, fixing anything broken, or improving documentation, get started by submitting an issue or pull request! +We'd be quite excited if you'd like to contribute to Worldview! Whether you're +finding bugs, adding new features, fixing anything broken, or improving +documentation, get started by submitting an issue or pull request! ## Submitting an Issue -If you have any questions or ideas, or notice any problems or bugs, first [search open issues](https://github.com/nasa-gibs/worldview/issues) to see if the issue has already been submitted. We may already be [working on the issue](#what-were-working-on). If you think your issue is new, you're welcome to [create a new issue](https://github.com/nasa-gibs/worldview/issues/new). +If you have any questions or ideas, or notice any problems or bugs, first +[search open issues](https://github.com/nasa-gibs/worldview/issues) to see if +the issue has already been submitted. We may already be +[working on the issue](#what-were-working-on). If you think your issue is new, +you're welcome to [create a new issue](https://github.com/nasa-gibs/worldview/issues/new). ## Pull Requests If you want to submit your own contributions, follow these steps; * Fork the Worldview repo -* Create a new branch off of the branch you'd like to contribute to -* ** Note: ** If there is not a feature branch already created for you to branch off of, you will want to branch off of `development` to create your own feature branch. We only branch directly off of `master` to resolve urgent bugs. -* If an issue does't already exist, submit one (see above) -* [Create a pull request](https://help.github.com/articles/creating-a-pull-request/) from your fork into the target branch of the nasa-gibs/worldview repo -* Be sure to [mention the corresponding issue number](https://help.github.com/articles/closing-issues-using-keywords/) in the PR description, i.e. "Fixes [#480](https://github.com/nasa-gibs/worldview/issues/480)" +* Create a new branch from the branch you'd like to contribute to +* *Note:* If you're not branching from an existing feature branch, create your branch from `development` for new features or `master` for urgent bug fixes. +* If an issue doesn't already exist, [submit one](#submitting-an-issue) +* [Create a pull request](https://help.github.com/articles/creating-a-pull-request/) from your fork into the target branch of the `nasa-gibs/worldview` repo +* Be sure to [mention the issue number](https://help.github.com/articles/closing-issues-using-keywords/) in the PR description, i.e. "Fixes [#480](https://github.com/nasa-gibs/worldview/issues/480)" * Upon submission of a pull request, the Worldview development team will review the code * The request will then either be merged, declined, or an adjustment to the code will be requested @@ -25,39 +31,32 @@ If you want to submit your own contributions, follow these steps; We ask that you follow these guidelines with your contributions; -### Unit Tests +### Style Guidelines -All of the unit tests for this project need to pass before your submission will be accepted. You can run `npm test` in the command line after making changes to verify that the tests pass. If you add new functionality, please consider adding tests for that functionality as well. +Please lint your code with `npm run lint`. Our style rules are defined in +`.stylelintrc` and `.eslintrc`. We follow a modified version of +[Standard JS Rules](https://github.com/standard/standard#the-rules), with +semi-colons. You can install linting plugins in your editor to check against +our style guides automatically: -### End-to-end Tests +#### Atom -You can run the included end-to-end tests to test the app in Chrome and Firefox. The tests run the Cucumber features in the `./e2e/features` using Nightwatch and Selenium. +* [AtomLinter](https://atomlinter.github.io/) +* [`linter-eslint`](https://atom.io/packages/linter-eslint) +* [`linter-stylelint`](https://atom.io/packages/linter-stylelint) -To run tests in Chrome; +#### Sublime -1) Run `npm run e2e:chrome` +* [SublimeLinter](http://www.sublimelinter.com/en/latest/) +* [`SublimeLinter-eslint`](https://github.com/roadhump/SublimeLinter-eslint) +* [`SublimeLinter-contrib-stylelint`](https://github.com/kungfusheep/SublimeLinter-contrib-stylelint) -To run tests in Firefox; +### Tests -1) [Create a new Firefox profile](https://developer.mozilla.org/en-US/Firefox/Multiple_profiles) called 'nightwatch' -2) Run `npm run e2e:firefox` - -You can run tests for both browsers in sequence by running `npm run e2e`, - -To run tests in Browserstack; - -1) Log into your [Browserstack automation](https://www.browserstack.com/automate) and get your username and access key from the upper left -2) Set these environmental variables in your shell; - - `export BROWSERSTACK_ACCESS_KEY=yourkeyhere` - - `export BROWSERSTACK_USER=yourusernamehere` -3) Configure `./e2e/environments.json` with the browsers you want to test. -4) Run `npm run browserstack` - -#### End-to-end Test Reports - -After running end-to-end tests, reports are generated and saved in `./e2e/reports`. You can convert these to HTML by running `npm run report ` where `` is either the lowercase name of the browser for local tests (`chrome` or `firefox`) or the name of the Browserstack environment, such as `Chrome_61-0_OS_X_El_Capitan-1` (you can get this name from the JSON files in `./e2e/reports`). - -The end-to-end tests are a little bit flaky, so they aren't required to pass before a submission will be accepted, but you should run them and read through the results to make sure that you haven't broken any functionality. Please also consider adding end-to-end tests to cover any functionality you add. +All of the unit tests for this project need to pass before your submission will +be accepted. If you add new functionality, please consider adding tests for that +functionality as well. See [Testing](doc/testing.md) for more information about +testing. ### Commits @@ -74,9 +73,12 @@ Improve contributing docs and consolidate them in the standard location https:// ## What We're Working On -Please see our [Roadmap](https://github.com/nasa-gibs/worldview/projects/7) for an overview of what we're planning. +Please see our [Roadmap](https://github.com/nasa-gibs/worldview/projects/7) for +an overview of what we're planning. We also track the progress of [Worldview](https://github.com/nasa-gibs/worldview), [Worldview-Components](https://github.com/nasa-gibs/worldview-components), and [Worldview-Options-EOSDIS](https://github.com/nasa-gibs/worldview-options-eosdis) +using a public [Waffle.io Board](https://waffle.io/nasa-gibs/worldview). -We use GitHub labels to organize issues we're working on. Here are the labels we use, along with descriptions of what they mean. Click on the headings or badges below to see the GitHub issues tagged with each label. +We use GitHub labels to organize issues we're working on. Here are the labels +we use, along with descriptions of what they mean. Click on the headings or badges below to see the GitHub issues tagged with each label. ### [`bug` ![Issues tagged with 'bug'](https://img.shields.io/github/issues-raw/nasa-gibs/worldview/bug.svg)](https://github.com/nasa-gibs/worldview/issues?q=is%3Aopen+is%3Aissue+label%3Abug) @@ -112,7 +114,7 @@ These are issues that have a PR ready to resolve them, and are just waiting to b ### [`technical` ![Issues tagged with 'technical'](https://img.shields.io/github/issues-raw/nasa-gibs/worldview/technical.svg)](https://github.com/nasa-gibs/worldview/issues?q=is%3Aopen+is%3Aissue+label%3Atechnical) -These issues are related to our technical implementation (refactoring, dependency changes, etc), they're developer focused, and don't directly add new features for end users. +These issues are related to our technical implementation (refactoring, dependency changes, etc.), they're developer focused, and don't directly add new features for end users. ### [`under development` ![Issues tagged with 'under development'](https://img.shields.io/github/issues-raw/nasa-gibs/worldview/%22under%20development%22.svg)](https://github.com/nasa-gibs/worldview/issues?q=is%3Aopen+is%3Aissue+label%3A%22under%20development%22) diff --git a/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from pull_request_template.md rename to .github/PULL_REQUEST_TEMPLATE.md diff --git a/.gitignore b/.gitignore index 561a246c66..d0212959ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ /build +/web/build /dist /node_modules /web/ext/node_modules/* python +.python/ +.node-virtualenv/ +.ropeproject/ *.pyc .project .settings diff --git a/.stylelintrc b/.stylelintrc index 514bccdeac..16c48152d1 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -39,7 +39,7 @@ "selector-max-id": 2, "selector-max-universal": 1, "selector-no-vendor-prefix": true, - "at-rule-whitelist": ["media", "charset", "font-face"], + "at-rule-whitelist": ["media", "charset", "font-face", "import"], "at-rule-no-vendor-prefix": true, "color-hex-case": "lower", "color-hex-length": "short", @@ -110,7 +110,6 @@ "media-query-list-comma-newline-before": "never-multi-line", "media-query-list-comma-space-after": "always-single-line", "media-query-list-comma-space-before": "never", - "at-rule-empty-line-before": "always", "at-rule-name-case": "lower", "at-rule-name-space-after": "always", "at-rule-semicolon-newline-after": "always", diff --git a/.travis.yml b/.travis.yml index 03fd7fa8b2..e3c337a664 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: node_js node_js: -- '6.8.1' +- '8.8.1' before_install: npm install -g grunt-cli install: npm install +before_script: npm run build:tests diff --git a/Gruntfile.js b/Gruntfile.js index 9f14fa7edd..074369b7c1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,35 +2,7 @@ var fs = require('fs'); var moment = require('moment'); -var nodeModuleFiles = [ - 'node_modules/babel-polyfill/dist/polyfill.js', - 'node_modules/babel-polyfill/dist/polyfill.min.js', - 'node_modules/react/dist/react.js', - 'node_modules/react/dist/react.min.js', - 'node_modules/react-dom/dist/react-dom.js', - 'node_modules/react-dom/dist/react-dom.min.js', - 'node_modules/worldview-components/browser/wvc.js', - 'node_modules/worldview-components/browser/wvc.min.js', - 'node_modules/lodash/lodash.js', - 'node_modules/lodash/lodash.min.js', - 'node_modules/bluebird/js/browser/bluebird.js', - 'node_modules/bluebird/js/browser/bluebird.min.js', - 'node_modules/gifshot/build/custom/gifshot.custom.js', - 'node_modules/gifshot/build/custom/gifshot.custom.min.js', - 'node_modules/promise-queue/lib/index.js', - 'node_modules/openlayers/dist/ol-debug.js', - 'node_modules/openlayers/dist/ol.css', - 'node_modules/openlayers/dist/ol-debug.css', - 'node_modules/font-awesome/css/font-awesome.min.css', - 'node_modules/font-awesome/fonts/*', - 'node_modules/isotope-layout/dist/*', - 'node_modules/isotope-packery/packery-mode.pkgd.js', - 'node_modules/isotope-packery/packery-mode.pkgd.min.js', - 'node_modules/perfect-scrollbar/dist/js/*', - 'node_modules/perfect-scrollbar/dist/css/*', - 'node_modules/clipboard/dist/clipboard.js', - 'node_modules/clipboard/dist/clipboard.min.js' -]; +var pkg = require('./package.json'); // Build date shown in the About box var buildTimestamp = moment.utc().format('MMMM DD, YYYY [-] HH:mm [UTC]'); @@ -40,96 +12,22 @@ var buildNonce = moment.utc().format('YYYYMMDDHHmmssSSS'); var buildNumber = moment.utc().format('YYMMDDHHmmss'); module.exports = function(grunt) { - var pkg = require('./package.json'); - var env = grunt.option('env') || 'release'; + grunt.loadNpmTasks('grunt-contrib-clean'); // Used to remove build artifacts + grunt.loadNpmTasks('grunt-contrib-copy'); // Used to move build artifacts around + grunt.loadNpmTasks('grunt-exec'); // Used to run bash scripts + grunt.loadNpmTasks('grunt-markdown'); // Used to convert md files to html + grunt.loadNpmTasks('grunt-mkdir'); // Used to make build directories + grunt.loadNpmTasks('grunt-text-replace'); // Used to replace token strings var hasCustomOptions = fs.existsSync('options'); var optionsPath = hasCustomOptions ? 'options' : 'node_modules/worldview-options-eosdis'; - // Lists of JavaScript and CSS files to include and in the correct - // order - var js = grunt.file.readJSON('deploy/wv.js.json'); - var css = grunt.file.readJSON('deploy/wv.css.json'); - - // Platform specific command for find - var findCmd; - if (process.platform === 'win32') { - findCmd = ';'; // cygwin find doesn't really work in Windows compared to CentOS - } else { - findCmd = 'find build -type d -empty -delete'; - } - - // Platform specific location for Python - var pythonPath; - if (process.platform === 'win32') { - pythonPath = 'python/Scripts'; - } else { - pythonPath = 'python/bin'; - } - grunt.initConfig({ pkg: pkg, optionsPath: optionsPath, - apache_version: grunt.option('apache-version') || '22', - - postcss: { - stylelint: { - options: { - map: false, - processors: [require('stylelint')({ - configFile: '.stylelintrc', - formatter: 'string', - ignoreDisables: false, - failOnError: true, - outputFile: '', - reportNeedlessDisables: false, - syntax: '' - })] - }, - src: 'web/css/*.css' - }, - autoprefix: { - options: { - map: false, - processors: [require('autoprefixer')] - }, - src: 'web/css/*.css' - } - }, - - buster: { - console: {}, - report: { - test: { - reporter: 'xml' - } - } - }, - - concat: { - // Combine all the Worldview JavaScript files into one file. - js: { - src: js['wv.js'], - dest: 'build/worldview-debug/web/js/wv.js' - }, - // Combine all the Openlayers JavaScript files into one file. - oljs: { - src: js['ol.js'], - dest: 'build/worldview-debug/web/js/ol.js' - }, - // Combine all the Worldview CSS files into one file. - css: { - src: css, - dest: 'build/worldview-debug/web/css/wv.css' - } - }, copy: { - apache: { - src: 'etc/dev/worldview-dev.httpd<%=apache_version%>.conf', - dest: 'dist/<%=grunt.option("packageName")%>.conf' - }, brand_info: { files: [ @@ -156,29 +54,6 @@ module.exports = function(grunt) { ] }, - rpm_sources: { - files: [ - { - expand: true, - cwd: 'deploy/sources', - src: ['**'], - dest: 'build/rpmbuild/SOURCES' - }, { - expand: true, - cwd: 'deploy', - src: ['worldview.spec'], - dest: 'build/rpmbuild/SPECS' - }, { - expand: true, - cwd: 'dist', - src: [ - 'site-<%=grunt.option("packageName")%>.tar.bz2', 'site-<%=grunt.option("packageName")%>-debug.tar.bz2', 'worldview-config.tar.bz2' - ], - dest: 'build/rpmbuild/SOURCES' - } - ] - }, - // Copies the source files to the build directory source: { files: [ @@ -204,21 +79,6 @@ module.exports = function(grunt) { } }, - ext: { - files: [ - { - expand: true, - cwd: '.', - overwrite: true, - src: nodeModuleFiles, - dest: 'web/ext' - } - ], - options: { - mode: true - } - }, - release: { files: [ { @@ -235,63 +95,6 @@ module.exports = function(grunt) { } }, - dist_config_versioned: { - files: [ - { - src: 'dist/worldview-config.tar.bz2', - dest: 'dist/worldview-config.git<%= grunt.config.get("config-revision") %>.tar.bz2' - } - ] - }, - - dist_site_debug_versioned: { - files: [ - { - src: 'dist/site-<%=grunt.option("packageName")%>-debug.tar.bz2', - dest: 'dist/site-<%=grunt.option("packageName")%>-debug' + '-<%=pkg.version%>' + '-<%=pkg.release%>' + '.tar.bz2' - } - ] - }, - - dist_site_release_versioned: { - files: [ - { - src: 'dist/site-<%=grunt.option("packageName")%>.tar.bz2', - dest: 'dist/site-<%=grunt.option("packageName")%>' + '-<%=pkg.version%>' + '-<%=pkg.release%>' + '.tar.bz2' - } - ] - }, - - dist_source_debug_versioned: { - files: [ - { - src: 'dist/worldview-debug.tar.bz2', - dest: 'dist/worldview-debug' + '-<%=pkg.version%>' + '-<%=pkg.release%>' + '.git<%= grunt.config.get("source-revision") %>' + '.tar.bz2' - } - ] - }, - - dist_source_release_versioned: { - files: [ - { - src: 'dist/worldview.tar.bz2', - dest: 'dist/worldview' + '-<%=pkg.version%>' + '-<%=pkg.release%>' + '.git<%= grunt.config.get("source-revision") %>' + '.tar.bz2' - } - ] - }, - - rpm: { - files: [ - { - expand: true, - flatten: true, - cwd: 'build/rpmbuild', - src: ['**/*.rpm'], - dest: 'dist' - } - ] - }, - site: { files: [ { @@ -307,7 +110,7 @@ module.exports = function(grunt) { src: ['**'], dest: 'build/site-<%=grunt.option("packageName")%>-debug/web' }, { - src: 'options/bitly.json', + src: 'bitly.json', dest: 'build/site-<%=grunt.option("packageName")%>-debug/etc/bitly.json' }, { expand: true, @@ -322,7 +125,7 @@ module.exports = function(grunt) { src: ['**'], dest: 'build/site-<%=grunt.option("packageName")%>/web' }, { - src: 'options/bitly.json', + src: 'bitly.json', dest: 'build/site-<%=grunt.option("packageName")%>/etc/bitly.json' } ], @@ -332,102 +135,26 @@ module.exports = function(grunt) { } }, - cssmin: { - // Minifiy the concatenated Worldview CSS file. - wv_css: { - options: { - keepSpecialComments: false - }, - files: { - 'build/worldview/web/css/wv.css': ['build/worldview/web/css/wv.css'] - } - } - }, - - eslint: { - options: { - configFile: '.eslintrc', - format: 'stylish' - }, - src: ['**/*.js', '!node_modules/**/*', '!build/**/*', '!dist/**/*', '!lib/**/*', '!options/**/*', '!web/dist/**/*', '!web/ext/**/*', '!etc/**/*'] - }, - exec: { - config: { - command: 'bash -c "PATH=' + pythonPath + ':"${PATH}" bin/wv-options-build "' + env - }, - - // After removing JavaScript and CSS files that are no longer - // need in a release build, there are a lot of empty directories. - // Remove all of them. - empty: { - command: findCmd - }, - - fetch: { - command: 'bash -c "PATH=' + pythonPath + ':"${PATH}" FETCH_GC=1 bin/wv-options-build "' + env - }, - node_packages: { - command: 'npm update' - }, - - python_packages: { - command: 'virtualenv python && bash -c "PATH=' + pythonPath + ':${PATH} pip install xmltodict isodate"' - }, - - rpmbuild: { - command: 'rpmbuild --define "_topdir $PWD/build/rpmbuild" ' + '-ba build/rpmbuild/SPECS/worldview.spec' - }, tar_config: { - command: 'tar -C build -cjf dist/worldview-config.tar.bz2 ' + 'options' + command: 'tar -C build -cjf dist/worldview-config.tar.bz2 options' }, tar_site_debug: { - command: 'tar cjCf build dist/site-<%=grunt.option("packageName")%>-debug.tar.bz2 ' + 'site-<%=grunt.option("packageName")%>-debug' + command: 'tar cjCf build dist/site-<%=grunt.option("packageName")%>-debug.tar.bz2 site-<%=grunt.option("packageName")%>-debug' }, tar_site_release: { - command: 'tar cjCf build dist/site-<%=grunt.option("packageName")%>.tar.bz2 ' + 'site-<%=grunt.option("packageName")%>' + command: 'tar cjCf build dist/site-<%=grunt.option("packageName")%>.tar.bz2 site-<%=grunt.option("packageName")%>' }, tar_source_debug: { - command: 'tar cjCf build dist/worldview-debug.tar.bz2 ' + 'worldview-debug' + command: 'tar cjCf build dist/worldview-debug.tar.bz2 worldview-debug' }, tar_source_release: { - command: 'tar cjCf build dist/worldview.tar.bz2 ' + 'worldview' - } - }, - - 'git-rev-parse': { - source: { - options: { - prop: 'source-revision', - number: 6 - } - }, - config: { - options: { - prop: 'config-revision', - cwd: '<%= optionsPath %>', - number: 6 - } - } - }, - - lineremover: { - // After removing all the references, there - // are a lot of blank lines in index.html. Remove them - release: { - files: [ - { - expand: true, - cwd: 'build', - src: ['**/web/**/*.html'], - dest: 'build' - } - ] + command: 'tar cjCf build dist/worldview.tar.bz2 worldview' } }, @@ -443,7 +170,7 @@ module.exports = function(grunt) { } ], options: { - template: 'deploy/metadata.template.html' + template: 'templates/metadata.html' } }, new: { @@ -457,7 +184,7 @@ module.exports = function(grunt) { } ], options: { - template: 'deploy/new.template.html' + template: 'templates/page.html' } } }, @@ -467,15 +194,10 @@ module.exports = function(grunt) { options: { create: ['dist'] } - }, - rpmbuild: { - options: { - create: ['build/rpmbuild'] - } } }, - remove: { + clean: { build: ['build'], dist: ['dist'], // Removes all JavaScript, CSS, and auxillary files not necessary @@ -488,9 +210,9 @@ module.exports = function(grunt) { '!build/worldview-debug/web/js/wv.js', '!build/worldview-debug/web/js/ol.js', '!build/worldview-debug/web/css/bulkDownload.css', - '!build/worldview-debug/web/ext/**/*' + '!build/worldview-debug/web/ext/**/*', + '!build/worldview-debug/web/build/**/*' ], - modules: ['web/ext/node_modules/**'], config_src: ['web/config/**/*'], build_source: [ 'build/worldview', 'build/worldview-debug' @@ -500,48 +222,13 @@ module.exports = function(grunt) { ], build_site: [ 'build/site-<%=grunt.option("packageName")%>-debug', 'build/site-<%=grunt.option("packageName")%>' - ], - dist_rpm: ['dist/*.rpm'], - rpmbuild: ['build/rpmbuild'] + ] }, replace: { - apache: { - src: ['dist/<%=grunt.option("packageName")%>.conf'], - overwrite: true, - replacements: [ - { - from: '@WORLDVIEW@', - to: '<%=grunt.option("packageName")%>' - }, { - from: '@ROOT@', - to: process.cwd() - } - ] - }, - // Remove all development links and uncomment - // all the release links - links: { - src: [ - 'build/**/web/index.html', 'build/**/web/pages/*.html' - ], - overwrite: true, - replacements: [ - { - from: /.*link.dev.*/g, - to: '' - }, { - from: /.*link.prod.*(!--|\/\*)(.*)(--|\*\/).*/g, - to: '$2' - } - ] - }, - - rpm_sources: { - src: [ - 'build/rpmbuild/SOURCES/*', 'build/rpmbuild/SPECS/*', '!**/*.tar.bz2' - ], + rpm_placeholders: { + src: ['build/rpm/SPECS/worldview.spec', 'build/rpm/SOURCES/*.conf'], overwrite: true, replacements: [ { @@ -590,71 +277,9 @@ module.exports = function(grunt) { } ] } - }, - - stylefmt: { - format: { - files: [ - { - expand: true, - src: 'web/css/*.css', - dest: './' - } - ] - } - }, - - watch: { - scripts: { - files: nodeModuleFiles, - tasks: ['update'] - } - }, - - uglify: { - // Minifiy the concatenated Worldview JavaScript file. - options: { - compress: { - // drop_console: true, - // drop_debugger: true, - unused: true - } - }, - wv_js: { - files: { - 'build/worldview/web/js/wv.js': ['build/worldview/web/js/wv.js'] - } - }, - ol_js: { - files: { - 'build/worldview/web/js/ol.js': ['build/worldview/web/js/ol.js'] - } - } } - }); - grunt.loadNpmTasks('grunt-buster'); - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-compress'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-contrib-cssmin'); - grunt.loadNpmTasks('gruntify-eslint'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-line-remover'); - grunt.loadNpmTasks('grunt-exec'); - grunt.loadNpmTasks('grunt-git-rev-parse'); - grunt.loadNpmTasks('grunt-markdown'); - grunt.loadNpmTasks('grunt-minjson'); - grunt.loadNpmTasks('grunt-mkdir'); - grunt.loadNpmTasks('grunt-postcss'); - grunt.loadNpmTasks('grunt-stylefmt'); - grunt.loadNpmTasks('grunt-text-replace'); - grunt.loadNpmTasks('grunt-rename'); - - // Lets use 'clean' as a target instead of the name of the task - grunt.renameTask('clean', 'remove'); + }); grunt.registerTask('load_branding', 'Load branding', function () { var brand = grunt.file.readJSON('build/options/brand.json'); @@ -671,83 +296,40 @@ module.exports = function(grunt) { grunt.option('email', brand.email); }); - grunt.registerTask('autoprefix', ['postcss:autoprefix']); - grunt.registerTask('build', [ - 'remove:build_source', - 'git-rev-parse:source', - 'copy:source', - 'concat', - 'remove:source', - 'exec:empty', - 'copy:release', - 'uglify', - 'cssmin', - 'replace:links', - 'lineremover', - 'mkdir:dist', - 'exec:tar_source_debug', - 'copy:dist_source_debug_versioned', - 'exec:tar_source_release', - 'copy:dist_source_release_versioned' + 'copy:source', // Copy source files into build/worldview-debug + 'clean:source', // Removes unneccesary assets from build directory + 'copy:release', // Copy build/worldview-debug into build/worldview + 'mkdir:dist', // Make dist directory + 'exec:tar_source_debug', // Make worldview-debug tar from /build + 'exec:tar_source_release' // Make worldview-debug tar from /build ]); grunt.registerTask('config', [ - 'remove:build_config', - 'git-rev-parse:config', - 'remove:config_src', - 'exec:config', - 'markdown', - 'copy:config_src', - 'copy:brand_info', - 'mkdir:dist', - 'exec:tar_config', - 'copy:dist_config_versioned' + 'markdown', // Parse metadata and pages md files into html + 'copy:config_src', // Copy build results to web/config and web/brand + 'copy:brand_info', // Copy brand config file to build directory + 'mkdir:dist', // Make dist directory + 'exec:tar_config' // Create worldview-config tar from options directory ]); - grunt.registerTask('fetch', ['exec:fetch']); - grunt.registerTask('site', [ - 'load_branding', - 'remove:build_site', - 'copy:site', - 'replace:tokens', - 'exec:tar_site_debug', - 'copy:dist_site_debug_versioned', - 'exec:tar_site_release', - 'copy:dist_site_release_versioned' + 'load_branding', // Set grunt variables from built options file + 'clean:build_site', // Remove some build directories + 'copy:site', // Copy /worldview and /worldview-config builds to /build/site + 'replace:tokens', // Replace string placeholders in JS and HTML (no CSS) + 'exec:tar_site_debug', // Create debug tar + 'exec:tar_site_release' // Create release tar ]); - grunt.registerTask('stylelint', ['postcss:stylelint']); - - grunt.registerTask('rpm-only', [ - 'load_branding', - 'git-rev-parse:source', - 'remove:rpmbuild', - 'mkdir:rpmbuild', - 'copy:rpm_sources', - 'replace:rpm_sources', - 'remove:dist_rpm', - 'exec:rpmbuild', - 'copy:rpm' + grunt.registerTask('rpm-placeholders', [ + 'load_branding', // Set grunt variables from built options file + 'replace:rpm_placeholders' // Replace strings in rpm sources ]); - grunt.registerTask('apache-config', ['load_branding', 'copy:apache', 'replace:apache']); - - grunt.registerTask('update', ['remove:modules', 'copy:ext']); - grunt.registerTask('update-packages', ['exec:python_packages', 'exec:node_packages', 'update']); - grunt.registerTask('check', ['lint', 'test']); - grunt.registerTask('clean', ['remove:build']); - grunt.registerTask('distclean', ['remove:build', 'remove:dist']); - grunt.registerTask('lint', ['eslint', 'stylelint']); - grunt.registerTask('test', ['buster:console']); - grunt.registerTask('default', [ - 'update-packages', - 'fetch', - 'update', - 'build', - 'config', - 'site' + 'build', // Copy assets to build directories and generate tar files + 'config', // Build options artifacts and put them in build, dist, web + 'site' // Combine /build/worldview and /build/options to create final build ]); }; diff --git a/LICENSE.md b/LICENSE.md index f9508a9bb1..0d0360a24d 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -3,7 +3,7 @@ This code was originally developed at NASA/Goddard Space Flight Center for the Earth Science Data and Information System (ESDIS) project. -Copyright © 2013 - 2017 United States Government as represented by the +Copyright © 2013 - 2018 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. @@ -131,7 +131,7 @@ customarily used for software exchange. **B.** Each Recipient must ensure that the following copyright notice appears prominently in the Subject Software: - Copyright (C) 2012-2017 United States Government + Copyright © 2012-2018 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. diff --git a/README.md b/README.md index 924f5e0481..30b60fc2a4 100644 --- a/README.md +++ b/README.md @@ -1,141 +1,98 @@ # [Worldview](https://worldview.earthdata.nasa.gov) -[![Build Status](https://api.travis-ci.org/nasa-gibs/worldview.svg?branch=master)](https://travis-ci.org/nasa-gibs/worldview) +![Worldview Screenshot](screenshot.png) -Visit Worldview at -[https://worldview.earthdata.nasa.gov](https://worldview.earthdata.nasa.gov) +[![Build Status](https://api.travis-ci.org/nasa-gibs/worldview.svg?branch=master)](https://travis-ci.org/nasa-gibs/worldview) +> Interactive interface for browsing full-resolution, global, near real-time satellite imagery -## About +## Background -This tool from [NASA's](http://nasa.gov) [EOSDIS](https://earthdata.nasa.gov) +This app from [NASA's](http://nasa.gov) [EOSDIS](https://earthdata.nasa.gov) provides the capability to interactively browse global, full-resolution -satellite imagery and then download the underlying data. Most of the 600+ -available products are updated within three hours of observation, essentially -showing the entire Earth as it looks "right now". This supports time-critical -application areas such as wildfire management, air quality measurements, and -flood monitoring. Arctic and Antarctic views of several products are also -available for a "full globe" perspective. Browsing on mobile devices is -generally supported for portable access to the imagery. - -Worldview uses the -[Global Imagery Browse Services (GIBS)](https://earthdata.nasa.gov/gibs) to -rapidly retrieve its imagery for an interactive browsing experience. While -Worldview uses [OpenLayers](http://openlayers.org/) as its mapping library, -GIBS imagery can also be accessed from Leaflet, Cesium, and several other -clients as well as [scripts](https://wiki.earthdata.nasa.gov/display/GIBS/Map+Library+Usage#expand-GDALBasics). -We encourage interested developers to build their own clients or integrate -NASA imagery into their existing ones using these services. +satellite imagery on desktop and mobile devices. Most of the 600+ products +are updated within three hours of observation, showing the entire Earth as it +is "right now". This supports time-critical applications such as wildfire +management, air quality measurements, and flood monitoring. Underlying data is +available for download in several formats, and Arctic and Antarctic views of +several products are available. + +Worldview uses [OpenLayers](http://openlayers.org/) to display imagery from +[Global Imagery Browse Services (GIBS)](https://earthdata.nasa.gov/gibs). +This imagery [can also be used with libraries such as Leaflet, Cesium, Google Maps or custom GDAL scripts](https://wiki.earthdata.nasa.gov/display/GIBS/Map+Library+Usage#expand-GDALBasics). +We encourage interested developers to fork Worldview or build their own clients +for GIBS imagery. Check out our [roadmap](https://github.com/nasa-gibs/worldview/projects/7) -to see where we're going or follow our [blog](https://wiki.earthdata.nasa.gov/pages/viewrecentblogposts.action?key=GIBS) -to find out the latest features and imagery available! - - -## Installation - -These instructions install a development version of Worldview using [Node.js](https://nodejs.org/) -to serve the app locally. If you prefer to use Apache, follow the directions in [Setup Using Apache](doc/apache_setup.md). - -*Note:* This has been demonstrated to work on Windows 7 and 10 (as tested with [mingw-w64](http://mingw-w64.org/)), Mac OS X, and Ubuntu. - -Prerequisites: -- [Node.js](https://nodejs.org/) - - *Note to Ubuntu users:* After installing Node.js, ensure that it is available as `node` on the command line. If not, [see here](https://github.com/nasa-gibs/worldview/issues/249#issuecomment-302172817) for more information. - - A later version of Node (>v6) is required and is not available on some distributions. To make sure you have a later version, [visit the Node download page](https://nodejs.org/en/download/) -- Windows users: - - Git Bash, mingw-w64 bash, or a similar shell must be used in order to run bash commands. - - .NET Framework 2.0 or Visual Studio 2005 or newer installed with Visual C++ compilers. - It is HIGHLY recommended you install the Windows Build Tools npm package to ensure the correct compilers have been installed. - To install this package: - ``` - # run in administrator privileged command prompt window - npm install --global --production windows-build-tools - ``` - - Python 2.7.x (included with Windows Build Tools) - - Python path added to Windows environmental variables (to use within cmd.exe and powershell) - To add environmental variables: - - Right-click the Windows icon in bottom-left corner of the screen. - - Click System, click Advanced System Settings, click Environmental Variables. - - Highlight the Path row and click edit. - - Each path is seperated with a semicolon ";" - - Add your python directory path here.\* - \*Windows Build Tools includes python, the included python path is: - `%USERPROFILE%\.windows-build-tools\python27` - Otherwise the path is most likely: - `C:\Python27` - - -Clone this repository: +to see what we're working on and follow our [blog](https://wiki.earthdata.nasa.gov/pages/viewrecentblogposts.action?key=GIBS) +to find out the latest features and imagery available. + +## Install + +This project uses Node and Python. See the [dependencies](#dependencies) section for more information. ```bash git clone https://github.com/nasa-gibs/worldview.git cd worldview +npm install ``` -Install dependencies (NOTE for Windows users: omit the "sudo" part of the following commands as it [isn't available](https://stackoverflow.com/questions/22527668/sudo-command-not-found-on-cygwin)): -```bash -# install local version of grunt -sudo npm install --global grunt-cli -``` +### Dependencies -```bash -# install virtualenv to keep additional libraries installed in a local directory: -sudo easy_install virtualenv==1.10.1 -``` +The following are required to install and run Worldview; + +- [Node v8.8.1 or Later](https://nodejs.org/en/download/) + - **Note:** Ubuntu users may run into issues with the `node` command not being available. See [this question on StackOverflow](https://stackoverflow.com/q/18130164/417629) for possible solutions. +- [Python v2.7.14 or Later](https://www.python.org/) + - **Note:** It is recommended that Windows users install Python with [Windows Build Tools](https://www.npmjs.com/package/windows-build-tools). + +Windows users will also need the following; + + - [Git Bash](https://git-scm.com/downloads), or [MinGW-w64](https://sourceforge.net/projects/mingw-w64/files/External%20binary%20packages%20%28Win64%20hosted%29/MSYS%20%2832-bit%29/) + - [.NET Framework](https://www.microsoft.com/net/download/dotnet-framework-runtime) or [Visual Studio Team Services](https://www.visualstudio.com/) + - [Add `python` to the path](https://docs.python.org/2/using/windows.html#excursus-setting-environment-variables) + +## Usage -Run local node server: ```bash -npm install -grunt +npm run build npm start ``` -Worldview should be available at -```bash +Navigate to [`http://localhost:3000`](http://localhost:3000) in a browser. To stop Worldview, press Control+C in the terminal. -http://localhost:3000 -``` -A node server will continue running until you end the session. -You can end the session by pressing `control-C` +See [Developing](doc/developing.md) for more usage details. +## Updates -### Additional Configuration Options +To update Worldview, pull down any branch or tag from GitHub. From the `master` branch (default), to update to the latest stable version of Worldview, run `git pull`. -The [Official EOSDIS configurations](https://github.com/nasa-gibs/worldview-options-eosdis) are installed by default in the `node_modules` directory. -To use custom options, clone the template repository into a new `options` directory in the root using the following git command. - -```bash -# A blank repository with only Corrected Reflectance and no branding -git clone https://github.com/nasa-gibs/worldview-options-template.git options -``` -Optionally, you can clone the official options and make changes as needed. -```bash -# or the Official EOSDIS configurations -git clone https://github.com/nasa-gibs/worldview-options-eosdis.git options -``` +**Note:** This project uses [Semantic Versioning](https://semver.org/). Updates to the major version number in [package.json](package.json) indicate a breaking change; _update with caution_. ## Other Information -* [Alternate Installation using Apache](doc/apache_setup.md) -* [Branding](doc/branding.md) -* [Optional Features](doc/features.md) -* [Configuration](doc/config.md) -* [Development Notes](doc/developing.md) -* [Coding Style Guide](doc/style_guide.md) +* [Developing](doc/developing.md) * [Testing](doc/testing.md) -* [Project Roadmap](https://github.com/nasa-gibs/worldview/projects/7) -* [Third-Party Library Use](THIRD_PARTY.md) +* [Configuration](doc/configuration.md) +* [Custom Branding](doc/branding.md) +* [Data Download](doc/data_download.md) +* [Optional Features](doc/features.md) +* [Deployment](doc/deployment.md) +* [Using Apache (deprecated)](doc/apache_setup.md) -## Contributing +## Contact -See [CONTRIBUTING.md](CONTRIBUTING.md). +Contact us via GitHub or by sending an email to +[support@earthdata.nasa.gov](mailto:support@earthdata.nasa.gov). -## License +## Contribute -See [LICENSE.md](LICENSE.md) +We welcome your contributions! Feel free to [open an issue](https://github.com/nasa-gibs/worldview/issues/new) or [submit a PR](https://github.com/nasa-gibs/worldview/compare). -## Contact +See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more contribution guidelines. + +Worldview and NASA follow the [Contributor Covenant Code of Conduct](.github/CODE_OF_CONDUCT.md). + +## License -Contact us by sending an email to -[support@earthdata.nasa.gov](mailto:support@earthdata.nasa.gov) +NASA-1.3 (See [LICENSE.md](LICENSE.md)) diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md deleted file mode 100644 index 7464a28d7d..0000000000 --- a/THIRD_PARTY.md +++ /dev/null @@ -1,137 +0,0 @@ -# Acknowledgement of Open Source Libraries - -## jQuery: A fast, small, and feature-rich JavaScript library - -* [http://jquery.com/](http://jquery.com/) -* [http://jqueryui.com/](http://jqueryui.com/) -* [https://github.com/jquery/jquery](https://github.com/jquery/jquery) -* [https://github.com/jquery/jquery-ui](https://github.com/jquery/jquery-ui) - -You may use any jQuery project under the terms of the MIT License. -Copyright © 2013 jQuery Foundation and other contributors - -## OpenLayers: Free Maps for the Web - -* [http://openlayers.org/](http://openlayers.org/) -* [https://github.com/openlayers/openlayers](https://github.com/openlayers/openlayers) - -OpenLayers is a JavaScript library for building map applications on the web. -OpenLayers is made available under a BSD-license. -Copyright © 2005-2013 OpenLayers Contributors. - -## Proj4js - -* [http://trac.osgeo.org/proj4js](http://trac.osgeo.org/proj4js) -* [https://github.com/proj4js/proj4js](https://github.com/proj4js/proj4js) - -Licensed under an MIT style license. -Copyright © 2012, Mike Adair, Richard Greenwood, Didier Richard, Stephen -Irons and Olivier Terral - -## MobiScroll: the date scroller on mobile - -[http://mobiscroll.com](http://mobiscroll.com) - -Licensed under MIT license. Copyright © 2013 Acid Media - -"The Date & Time Scroller, Select, Image & Text and Treelist Scrollers are -under the MIT License and are free to use." - -## Jcrop: The jQuery Image Cropping Plugin - -* [http://deepliquid.com/content/Jcrop.html](http://deepliquid.com/content/Jcrop.html) -* [http://github.com/tapmodo/Jcrop](http://github.com/tapmodo/Jcrop) - -Jcrop is free software under MIT License. -Copyright © 2008-2012 Tapmodo Interactive LLC. - -## jScrollPane: Cross browser styleable scrollbars with jQuery and CSS - -* [http://jscrollpane.kelvinluck.com/](http://jscrollpane.kelvinluck.com/) -* [https://github.com/vitch/jScrollPane](https://github.com/vitch/jScrollPane) - -"jScrollPane is a personal project that is open source for anybody to use as -they want to." - - -## JoyRide: Create jQuery Feature Tours in a Breeze - -* [http://www.zurb.com/playground/jquery-joyride-feature-tour-plugin](http://www.zurb.com/playground/jquery-joyride-feature-tour-plugin) -* [https://github.com/zurb/joyride](https://github.com/zurb/joyride) - -Joyride is MIT-licensed and absolutely free to use. - -## Perceptually Balanced Rainbow Palette (cube YF) from MyCarta / Matteo Niccoli - -[http://mycarta.wordpress.com/2013/02/21/perceptual-rainbow-palette-the-method/](http://mycarta.wordpress.com/2013/02/21/perceptual-rainbow-palette-the-method/) - -"Go ahead if you want to use my code, modify it, improve it, for non-commercial -AND for commercial use." - -## Lo-Dash - -* [http://lodash.com](http://lodash.com) -* [https://github.com/lodash/lodash](https://github.com/lodash/lodash) - -Licensed under the MIT license. -Copyright © 2012-2014 The Dojo Foundation -[http://dojofoundation.org](http://dojofoundation.org) - -## JavaScript LRU Cache - -[https://github.com/monsur/jscache](https://github.com/monsur/jscache) - -Licensed under the MIT license. -Copyright © 2007 Monsur Hossain - -# Licenses - -## MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -## OpenLayers BSD License - -Copyright © 2005-2013 OpenLayers Contributors. All rights reserved. -See authors.txt for full list. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY OPENLAYERS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are -those of the authors and should not be interpreted as representing official -policies, either expressed or implied, of OpenLayers Contributors. diff --git a/app.js b/app.js deleted file mode 100644 index cb1dac38e3..0000000000 --- a/app.js +++ /dev/null @@ -1,5 +0,0 @@ -var express = require('express'); -var path = require('path'); -var app = express(); -app.use(express.static(path.join(__dirname, 'web'))); -module.exports = app; diff --git a/bin/act2wv b/bin/act2wv deleted file mode 100755 index 0c43aa4759..0000000000 --- a/bin/act2wv +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env python - -import os -from optparse import OptionParser -import sys -import json - -prog = os.path.basename(__file__) -basedir = os.path.dirname(__file__) -version = "1.2.0" -help_description = """\ -Using a json index file, this converts ACT (Adobe Color Table) files into -paletttes suitable for Worldview. Each color table is written out to -a separate file. -""" - -default_index = os.path.join(basedir, "act", "index.json") -default_act_dir = os.path.join(basedir, "act") - -parser = OptionParser(usage="Usage: %s [options] " % prog, - version="%s version %s" % (prog, version), - epilog=help_description) -parser.add_option("-a", "--act-dir", default=default_act_dir, - help="use this as the base directory for ACT files " - "instead of %s" % default_act_dir) -parser.add_option("-i", "--index", default=default_index, - help="use this index file instead of %s" % default_index) -parser.add_option("-v", "--verbose", action="store_true", - help="prints information about tasks being performed") - -(options, args) = parser.parse_args() - -def notify(message): - if options.verbose: - print "%s: %s" % (prog, message) - -def error(message): - sys.stderr.write("%s: ERROR: %s\n" % (prog, message)) - -def fatal(message): - error(message) - sys.exit(1) - - -if len(args) != 1: - parser.error("Invalid number of arguments") -output_dir = args[0] - -if not os.path.exists(options.index): - fatal("Index file %s does not exist" % options.index) -if not os.path.exists(options.act_dir): - fatal("ACT base directory %s does not exist" % options.act_dir) -if not os.path.exists(output_dir): - fatal("Output directory %s does not exist" % output_dir) - -notify("Index file: %s" % options.index) -notify("ACT base directory: %s" % options.act_dir) -notify("Output directory: %s" % output_dir) - -try: - with open(options.index) as fp: - index = json.load(fp) -except Exception as e: - sys.stderr.write("%s: Unable to load index %s\n%s" % (prog, options.index, - str(e))) - sys.exit(1) - -return_code = 0 -for act in index: - act_file = os.path.join(options.act_dir, act["input"]) - notify("Reading ACT: %s" % act_file) - try: - with open(act_file) as fp: - data = fp.read() - except Exception as e: - sys.stderr.write("%s: Unable to load %s\n%s" % (prog, act_file, - str(e))) - return_code = 1 - stops = [] - for i in xrange(0, 255 * 3, 3): - entry = { - "at": str(i / 3.0 / 256.0), - "r": ord(data[i]), - "g": ord(data[i+1]), - "b": ord(data[i+2]), - "a": 255 - } - stops += [entry] - palette = { - act["id"]: { - "id": act["id"], - "name": act["name"], - "stops": stops - } - } - palette_file = os.path.join(output_dir, "%s.json" % act["id"]) - notify("Writing palette: %s" % palette_file) - with open(palette_file, "w") as fp: - json.dump(palette, fp, sort_keys=True, indent=4, - separators=(',', ': ')) - - -sys.exit(return_code) diff --git a/bin/eventsGeoRssParser.py b/bin/eventsGeoRssParser.py deleted file mode 100755 index cd7390c46c..0000000000 --- a/bin/eventsGeoRssParser.py +++ /dev/null @@ -1,341 +0,0 @@ -#!/usr/bin/python - -import feedparser, logging, logging.config -import urllib2, urllib, shutil, urlparse, os, zipfile, os.path, re, json -# CentOS uses 2.6, argparse starts with 2.7 -from optparse import OptionParser -import sys -from zipfile import ZipFile as zip -from zipfile import BadZipfile -from bs4 import BeautifulSoup -from osgeo import gdal - -baseDir = os.path.join(os.path.dirname(__file__), '..') - -parser = OptionParser() -parser.add_option("-d", "--development", action="store_true", - help="Use the source tree instead of the system directories") -parser.add_option("-f", "--feed", - help="Use file as feed instead of Earth Observatory") -(options, args) = parser.parse_args() - -mockFeed = None -imgURI = "var/images" -if options.feed: - # Read in the entire feed before changing directories - with open(options.feed) as fp: - mockFeed = fp.read() -if options.development: - print 'Development mode' - # Log configuration assume working from this directory - os.chdir(baseDir) - confDir = 'etc/config' - libDir = 'src/var' - imgDir = 'src/var/images' -else: - confDir = '/etc/worldview' - libDir = '/var/lib/worldview' - imgDir = '/var/lib/worldview/images' - os.chdir('/tmp') - -# =================================================================== -# Log Configuration -# =================================================================== -logConfFile = os.path.join(confDir, 'events_log.conf') -if not os.path.exists(logConfFile): - sys.stderr.write('No such file: %s\n' % logConfFile) - sys.exit(1) -logging.config.fileConfig(logConfFile) -accessLog = logging.getLogger('eventsAccess') -errorLog = logging.getLogger('eventsErrors') -debugLog = logging.getLogger('eventsDebug') - -# =================================================================== -# GeoRSS Processing -# =================================================================== - -# Pulls the GeoRSS feed and returns a list of entries. -# @param url - the URL of the GeoRSS feed -# @return - an array of GeoRSS entries -def pullRss(url): - feed = feedparser.parse(url) - if feed: - accessLog.info('Successful pull: %s', url) - return feed["items"] - else: - accessLog.info('Failed pull: %s', url) - return None - -# Find the link to the first tif image (if present). -# @param soup - the content of the entry's story -# @return - the link to the GeoTif image (if present) -def findTiff(soup): - t = soup.find(href=re.compile("tif")) - if t: - return t.get("href") - else: - return None - -# Find the link to the first kmz image (if present). -# @param soup - the content of the entry's story -# @return - the link to the KMZ image (if present) -def findKmz(soup): - k = soup.find(href=re.compile("kmz")) - if k: - return k.get("href") - else: - return None - -# Extract the KMZ file with the given file name. -# @param zipname - the name of the zip file -# @return - the relative path to the KML file -def extractKmz(zipname): - try: - z = zip(zipname) - f = z.namelist()[0] - if f.endswith('/'): - os.makedirs(f) - else: - z.extract(f) - return f - except BadZipfile as e: - errorLog.error('(extractKmz) Bad Zipfile: %s', zipname) - return None - except OSError as e: - errorLog.error('(extractKmz) %s: %s', e.strerror, e.filename) - return None - except IOError as e: - errorLog.error('(extractKmz) %s: %s', e.strerror, e.filename) - return None - -# Download a file from the given link. -# @param url - the link to the file (KMZ or GeoTiff) -# @param fileName - the filename -# @return - the filename -def download(url, fileName=None): - def getFileName(url, openUrl): - if 'Content-Disposition' in openUrl.info(): - # If the response has Content-Disposition, try to get the - # filename from it - cd = dict(map( - lambda x: x.strip().split('=') if '=' in x else (x.strip(),''), - openUrl.info()['Content-Disposition'].split(';'))) - if 'filename' in cd: - filename = cd['filename'].strip("\"'") - if filename: return filename - - # if no filename was found above, parse it out of the final URL - filename = os.path.basename(urlparse.urlsplit(openUrl.url)[2]) - return filename - - r = urllib2.urlopen(urllib2.Request(url)) - try: - fileName = fileName or getFileName(url, r) - with open(fileName, 'wb') as f: - shutil.copyfileobj(r,f) - - finally: - r.close() - - -# Parse the entry and return a JSON representation -# @param entry - a GeoRSS entry -# @return - a JSON description of the GeoRss entry -def processEntry(entry): - - title = entry["title"] - - # check satellite/instrument - if not MODIS, skip - if not any("tags" in n for n in entry): - debugLog.debug('skipping because no tags') - return None - - tags = entry["tags"] - if len(tags) < 2: - debugLog.debug('skipping because too few tags: %s' % title) - return None - - parts = tags[1].term.split("/") - sat = parts[0] - instrument = parts[1] - if instrument != "MODIS": - debugLog.debug('skipping because of instrument') - return None - - coords = True - - # check for KMZ or GeoTiff - if not present, skip - story = entry["link"] - page = urllib2.urlopen(story) - # Use external parser because the default one doesn't seem to work - # with Python on OS X. - content = BeautifulSoup(page, "lxml") - north = "" - south = "" - east = "" - west = "" - - # check for KMZ - kmzLink = findKmz(content) - kmzSuccess = True - if kmzLink: - temp_kmz = "temp_kmz" - download(kmzLink, temp_kmz) - kmlFileName = extractKmz(temp_kmz) - if kmlFileName: - kmlFile = open(kmlFileName, 'r') - content = BeautifulSoup(kmlFile) - box = content.find('latlonbox') - north = box.find('north').getText() - south = box.find('south').getText() - east = box.find('east').getText() - west = box.find('west').getText() - - # cleanup temp directory - try: - kmlDir = kmlFileName.rpartition('/')[0] - os.remove(kmlFileName) - os.removedirs(kmlDir) - except OSError as e: - errorLog.error('(processEntry) %s: %s', e.strerror, e.filename) - - else: - kmzSuccess = False - - try: - os.remove(temp_kmz) - except OSError as e: - errorLog.error('(processEntry) %s: %s', e.strerror, e.filename) - - else: - kmzSuccess = False - - # check for GeoTiff - if kmzSuccess == False: - tiffLink = findTiff(content) - if tiffLink: - temp_tiff = "temp_tiff" - download(tiffLink, temp_tiff) - ds = gdal.Open(temp_tiff) - width = ds.RasterXSize - height = ds.RasterYSize - gt = ds.GetGeoTransform() - west = gt[0] - south = gt[3] + width*gt[4] + height*gt[5] - east = gt[0] + width*gt[1] + height*gt[2] - north = gt[3] - - # cleanup temp file - try: - os.remove(temp_tiff) - except OSError as e: - errorLog.error('(processEntry) %s: %s', e.strerror, e.filename) - - else: - coords = False - - # if the entry is kept, parse the rest of the fields - date = entry["date"].split("T")[0] - title = entry["title"] - description = entry["summary_detail"].value - - # save the thumbnail - thumbnailLink = entry["media_thumbnail"][0].get("url") - thumbnailName = thumbnailLink.split('/')[-1] - if not os.path.exists(imgDir): - os.mkdir(imgDir) - thumbnail = os.path.join(imgDir, thumbnailName) - worldviewThumbnailURI = os.path.join(imgURI, thumbnailName) - urllib.urlretrieve(thumbnailLink, thumbnail) - - pubData = entry["published"] - point = entry["georss_point"] - keyword = '' - - # if the category is a fire or flood, look for keywords - # about the base layer and overlay - category = entry["tags"][0].term - lowerContent = content.getText().lower() - if category == 'Floods': - if lowerContent.count('natural-color') > 0: - keyword = 'natural-color' - if lowerContent.count('natural color') > 0: - keyword = 'natural-color' - if category == 'Fires': - if lowerContent.count('red outlines') > 0: - keyword = 'outlines' - - retobj = { - 'title':title, - 'date':date, - 'description':description, - 'category':category, - 'satellite':sat, - 'instrument':instrument, - 'thumbnail':worldviewThumbnailURI, - 'link':story, - 'north':north, - 'south':south, - 'east':east, - 'west':west, - 'keyword':keyword, - 'pubDate':pubData, - 'point':point, - 'coords':coords} - - return retobj - -# Driver -def main(): - if not mockFeed: - entries = pullRss("http://www.earthobservatory.nasa.gov/Feeds/rss/nh.rss") - else: - entries = pullRss(mockFeed) - num = 0 - recent_titles = [] - data = [] - - outFileName = os.path.join(libDir, 'events_data.json') - # get existing data to make sure we aren't adding duplicates - if os.path.exists(outFileName): - outfile = open(outFileName, 'r+w') - try: - data = json.load(outfile) - last_len = 0 - if len(data) < len(entries): - last_len = len(data) * -1 - else: - last_len = len(entries) * -1 - recent_entries = data[last_len:] - - for r in recent_entries: - recent_titles.append(r["title"]) - - except ValueError: - pass - - else: - outfile = open(outFileName, 'w+'); - - for e in entries: - obj = processEntry(e) - if obj: - if not obj["title"] in recent_titles: - debugLog.debug("selected: %s" % obj["title"]) - data.append(obj) - num = num + 1 - else: - debugLog.debug("already seen: %s" % obj["title"]) - - outfile.seek(0) - if len(data) < 100: - json.dump(data, outfile) - else: - json.dump(data[-100:], outfile) - outfile.truncate() - outfile.close() - -try: - main() -except Exception as e: - errorLog.error("Unhandled exception: %s" % str(e)) diff --git a/bin/filter-test-report b/bin/filter-test-report deleted file mode 100755 index 1970bfab04..0000000000 --- a/bin/filter-test-report +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import sys - -filtered = True -for line in sys.stdin: - if line.startswith("") or line.startswith(""): - filtered = True diff --git a/buster.js b/buster.js index 3bc2b9dbf2..42c9e20b2e 100644 --- a/buster.js +++ b/buster.js @@ -3,29 +3,8 @@ var config = module.exports; config['wv'] = { rootPath: './', environment: 'browser', - libs: [ - 'web/ext/main/lodash-2.4.1/lodash.js', - 'web/ext/main/jquery-2.1.4/jquery.js', - 'web/ext/main/jquery.migrate-1.2.1/jquery-migrate.min.js', - 'web/ext/main/jscache-gitba01cdc/cache.js', - 'web/ext/proj/proj4js-2.3.3-1/proj4.js', - 'node_modules/openlayers/dist/ol-debug.js', - 'test/fixtures.js' - ], src: [ - 'web/js/util/wv.*.js', - 'web/js/wv.*.js', - '!web/js/wv.main.js', - 'web/js/ui/wv.ui.js', - 'web/js/ui/wv.ui.mouse.js', - 'web/js/ui/wv.ui.indicator.js', - 'web/js/date/wv.*.js', - 'web/js/layers/wv.*.js', - 'web/js/link/wv.*.js', - 'web/js/palettes/wv.*.js', - 'web/js/proj/wv.*.js', - 'web/js/data/wv.*.js', - 'web/js/map/wv.*.js' + 'web/build/wv-test-bundle.js' ], - tests: ['test/**/*.js'] + tests: ['test/**/*-spec.js'] }; diff --git a/config.sh b/config.sh deleted file mode 100644 index 42d73e6b14..0000000000 --- a/config.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - echo "installing npm dependencies" - if ! npm install ; then - echo "ERROR: \"npm install\" failed" &>2 - exit 1 - fi - echo "setting up Python environment" - if ! ./wv-python ; then - echo "ERROR: \"./wv-python\" failed" &>2 - exit 1 - fi - echo "Cleaning dist" - if ! grunt distclean ; then - echo "ERROR: \"grunt distclean\" failed" &>2 - exit 1 - fi - echo "relocation node_module dependencies" - if ! grunt update ; then - echo "ERROR: \"grunt update\" failed" &>2 - exit 1 - fi - echo "Fetching GetCapabilities" - if ! grunt fetch ; then - echo "ERROR: \"grunt fetch\" failed" &>2 - exit 1 - fi - echo "Generating Configuration" - if ! grunt config ; then - echo "ERROR: \"grunt config\" failed" &>2 - exit 1 - fi diff --git a/deploy/mock_install.sh b/deploy/mock_install.sh deleted file mode 100755 index 46ac40530f..0000000000 --- a/deploy/mock_install.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -BASEDIR=$(dirname "$0")/../.. - -sudo /etc/init.d/httpd stop -mock --init -mock --install yum -mock --copyin $BASEDIR/dist/worldview-*.noarch.rpm / -mock --shell 'yum install *.rpm' -mock --shell '/etc/init.d/httpd start' diff --git a/deploy/mock_uninstall.sh b/deploy/mock_uninstall.sh deleted file mode 100755 index e2f2d38ffe..0000000000 --- a/deploy/mock_uninstall.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -mock --shell '/etc/init.d/httpd stop' -mock --clean diff --git a/deploy/sources/cron.worldview b/deploy/sources/cron.worldview deleted file mode 100644 index ecced583d8..0000000000 --- a/deploy/sources/cron.worldview +++ /dev/null @@ -1 +0,0 @@ -0 * * * * apache /usr/share/@WORLDVIEW@/bin/eventsGeoRssParser.py 2>&1 >/dev/null diff --git a/deploy/sources/cron.worldview-debug b/deploy/sources/cron.worldview-debug deleted file mode 100644 index ccb793c8e6..0000000000 --- a/deploy/sources/cron.worldview-debug +++ /dev/null @@ -1 +0,0 @@ -0 * * * * apache /usr/share/@WORLDVIEW@-debug/bin/eventsGeoRssParser.py 2>&1 >/dev/null diff --git a/deploy/sources/events_log-debug.conf b/deploy/sources/events_log-debug.conf deleted file mode 100644 index 35aa82c40c..0000000000 --- a/deploy/sources/events_log-debug.conf +++ /dev/null @@ -1,51 +0,0 @@ -[loggers] -keys=root,access,error,debug - -[handlers] -keys=access,error,debug - -[formatters] -keys=basicFormatter - -[logger_root] -level=DEBUG -handlers="" - -[logger_access] -level=DEBUG -handlers=access -qualname=eventsAccess -propagate=0 - -[logger_error] -level=DEBUG -handlers=error -qualname=eventsErrors -propagate=0 - -[logger_debug] -level=DEBUG -handlers=debug -qualname=eventsDebug -propagate=0 - -[handler_access] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@-debug/events_access.log','a+') - -[handler_error] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@-debug/events_errors.log', 'a+') - -[handler_debug] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@-debug/events_messages.log', 'a+') - -[formatter_basicFormatter] -format=%(asctime)s %(message)s diff --git a/deploy/sources/events_log.conf b/deploy/sources/events_log.conf deleted file mode 100644 index 0564ee697a..0000000000 --- a/deploy/sources/events_log.conf +++ /dev/null @@ -1,51 +0,0 @@ -[loggers] -keys=root,access,error,debug - -[handlers] -keys=access,error,debug - -[formatters] -keys=basicFormatter - -[logger_root] -level=DEBUG -handlers="" - -[logger_access] -level=DEBUG -handlers=access -qualname=eventsAccess -propagate=0 - -[logger_error] -level=DEBUG -handlers=error -qualname=eventsErrors -propagate=0 - -[logger_debug] -level=DEBUG -handlers=debug -qualname=eventsDebug -propagate=0 - -[handler_access] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@/events_access.log','a+') - -[handler_error] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@/events_errors.log', 'a+') - -[handler_debug] -class=FileHandler -level=DEBUG -formatter=basicFormatter -args=('/var/log/@WORLDVIEW@/events_messages.log', 'a+') - -[formatter_basicFormatter] -format=%(asctime)s %(message)s diff --git a/deploy/sources/logrotate.worldview b/deploy/sources/logrotate.worldview deleted file mode 100644 index 7929e63bb0..0000000000 --- a/deploy/sources/logrotate.worldview +++ /dev/null @@ -1,8 +0,0 @@ -/var/log/@WORLDVIEW@/*.log { - copytruncate - weekly - rotate 4 - compress - missingok - create 0664 apache apache -} diff --git a/deploy/sources/logrotate.worldview-debug b/deploy/sources/logrotate.worldview-debug deleted file mode 100644 index 14f5de4f17..0000000000 --- a/deploy/sources/logrotate.worldview-debug +++ /dev/null @@ -1,8 +0,0 @@ -/var/log/@WORLDVIEW@-debug/*.log { - copytruncate - weekly - rotate 4 - compress - missingok - create 0664 apache apache -} diff --git a/deploy/system_purge.sh b/deploy/system_purge.sh deleted file mode 100755 index 8c28848e85..0000000000 --- a/deploy/system_purge.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -sudo rm -rf /var/lib/worldview -sudo rm -rf /var/log/worldview diff --git a/deploy/worldview.spec b/deploy/worldview.spec deleted file mode 100644 index 0d5273e762..0000000000 --- a/deploy/worldview.spec +++ /dev/null @@ -1,183 +0,0 @@ -# Note: This does not do a "proper" build. It is assumed that the distribution -# package has already been made. - -# Turn off the brp-python-bytecompile script -%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') - -Name: @WORLDVIEW@ -Version: @BUILD_VERSION@ -Release: @BUILD_RELEASE@.@BUILD_NUMBER@%{?dist} -Summary: Browse full-resolution, near real-time satellite imagery. - -License: Copyright NASA -URL: http://earthdata.nasa.gov -Source0: site-@WORLDVIEW@.tar.bz2 -Source1: site-@WORLDVIEW@-debug.tar.bz2 -Source3: httpd.conf -Source4: httpd-debug.conf -#Source4: events_log.conf -#Source4: events_log-debug.conf -#Source5: cron.worldview -#Source6: cron.worldview-debug -#Source7: logrotate.worldview -#Source8: logrotate.worldview-debug - -BuildArch: noarch -Requires: httpd -#Requires: python-feedparser -#Requires: python-beautifulsoup4 -#Requires: gdal -#Requires: gdal-python - -%description -In essence, Worldview shows the entire Earth as it looks "right now", -or at least as it has looked within the past few hours. Worldview -supports time-critical application areas such as wildfire management, -air quality measurements, and weather forecasting. - -The imagery is generally available within three hours of observation -and can easily be compared to observations from the past - just click -or drag the time sliders at the bottom of the page. Imagery is -available from May 2012 onward and we are working to provide access to -earlier dates. Arctic and Antarctic polar stereographic views of -several products are also available for a "full globe" perspective. - - -%package debug -Summary: Non-minified version of Worldview for debugging - - -%description debug -Non-minified version of Worldview for debugging - - -%global httpdconfdir %{_sysconfdir}/httpd/conf.d - -%prep -%setup -c -T -tar xf %{SOURCE0} -tar xf %{SOURCE1} -cp %{SOURCE3} . -cp %{SOURCE4} . -#cp %{SOURCE4} . -#cp %{SOURCE5} . -#cp %{SOURCE6} . -#cp %{SOURCE7} . -#cp %{SOURCE8} . - - -%build - - -%install -rm -rf %{buildroot} - -#chmod 755 @WORLDVIEW@/bin/* -#chmod 755 @WORLDVIEW@-debug/bin/* - -# Apache configuration for release -install -m 755 -d %{buildroot}/%{httpdconfdir} -install -m 644 httpd.conf \ - %{buildroot}/%{httpdconfdir}/@WORLDVIEW@.conf -rm httpd.conf - -# Apache configuration for debug -install -m 644 httpd-debug.conf \ - %{buildroot}/%{httpdconfdir}/@WORLDVIEW@-debug.conf -rm httpd-debug.conf - -# Release application -install -m 755 -d %{buildroot}/%{_datadir}/@WORLDVIEW@ -cp -r site-@WORLDVIEW@/* %{buildroot}/%{_datadir}/@WORLDVIEW@ - -# Debug application -install -m 755 -d %{buildroot}/%{_datadir}/@WORLDVIEW@-debug -cp -r site-@WORLDVIEW@-debug/* %{buildroot}/%{_datadir}/@WORLDVIEW@-debug - -#install -m 755 -d %{buildroot}/%{_sysconfdir}/@WORLDVIEW@ -#install -m 644 events_log.conf \ -# %{buildroot}/%{_sysconfdir}/@WORLDVIEW@/events_log.conf -#install -m 755 -d %{buildroot}/%{_sysconfdir}/@WORLDVIEW@-debug -#install -m 644 events_log-debug.conf \ -# %{buildroot}/%{_sysconfdir}/@WORLDVIEW@-debug/events_log-debug.conf - -#install -m 755 -d %{buildroot}/%{_sharedstatedir}/@WORLDVIEW@ -#install -m 755 -d %{buildroot}/%{_sharedstatedir}/@WORLDVIEW@-debug -#install -m 755 -d %{buildroot}/%{_localstatedir}/log/@WORLDVIEW@ -#install -m 755 -d %{buildroot}/%{_localstatedir}/log/@WORLDVIEW@-debug - -#install -m 755 -d %{buildroot}/%{_sysconfdir}/cron.d -#install -m 600 cron.worldview %{buildroot}/%{_sysconfdir}/cron.d/@WORLDVIEW@ -#install -m 600 cron.worldview-debug %{buildroot}/%{_sysconfdir}/cron.d/@WORLDVIEW@-debug - -#install -m 755 -d %{buildroot}/%{_sysconfdir}/logrotate.d -#install -m 600 logrotate.worldview \ -# %{buildroot}/%{_sysconfdir}/logrotate.d/@WORLDVIEW@ -#install -m 600 logrotate.worldview-debug \ -# %{buildroot}/%{_sysconfdir}/logrotate.d/@WORLDVIEW@-debug - - -%clean -rm -rf %{buildroot} - - -%files -%defattr(-,root,root,-) -%{_datadir}/@WORLDVIEW@ -%config(noreplace) %{httpdconfdir}/@WORLDVIEW@.conf -#%config(noreplace) %{_sysconfdir}/@WORLDVIEW@/events_log.conf -#%config(noreplace) %{_sysconfdir}/cron.d/@WORLDVIEW@ -#%config(noreplace) %{_sysconfdir}/logrotate.d/@WORLDVIEW@ - -#%defattr(600,apache,apache,700) -#%dir %{_sharedstatedir}/@WORLDVIEW@ -#%dir %{_localstatedir}/log/@WORLDVIEW@ - - -%files debug -%{_datadir}/@WORLDVIEW@-debug -%config(noreplace) %{httpdconfdir}/@WORLDVIEW@-debug.conf -#%config(noreplace) %{_sysconfdir}/@WORLDVIEW@-debug/events_log-debug.conf -#%config(noreplace) %{_sysconfdir}/cron.d/@WORLDVIEW@-debug -#%config(noreplace) %{_sysconfdir}/logrotate.d/@WORLDVIEW@-debug - -#%defattr(600,apache,apache,700) -#%dir %{_sharedstatedir}/@WORLDVIEW@-debug -#%dir %{_localstatedir}/log/@WORLDVIEW@-debug - - -%post -if [ $1 -gt 0 ] ; then - if /sbin/service httpd status >/dev/null ; then - /sbin/service httpd reload - fi -fi - -%post debug -if [ $1 -gt 0 ] ; then - if /sbin/service httpd status >/dev/null ; then - /sbin/service httpd reload - fi -fi - -%postun -if [ $1 -eq 0 ] ; then - if /sbin/service httpd status >/dev/null ; then - /sbin/service httpd reload - fi -fi - -%postun debug -if [ $1 -eq 0 ] ; then - if /sbin/service httpd status >/dev/null ; then - /sbin/service httpd reload - fi -fi - - -%changelog -* Wed Oct 30 2013 Mike McGann - 0.6.0-1 -- Worldview 0.6.0 release - -* Thu May 9 2013 Mike McGann - 0.4.5-1 -- Initial package diff --git a/deploy/wv.css.json b/deploy/wv.css.json deleted file mode 100644 index 1aa6ad9e01..0000000000 --- a/deploy/wv.css.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - "web/css/wv.fonts.css", - "web/css/wv.main.css", - "web/css/util.css", - "web/css/wv.alert.css", - "web/css/bank.css", - "web/css/wv.map.css", - "web/css/wv.link.css", - "web/css/wv.palettes.css", - "web/css/wv.image.css", - "web/css/wv.debug.css", - "web/css/projection.css", - "web/css/wv.date.css", - "web/css/menuPicker.css", - "web/css/wv.tour.css", - "web/css/products.css", - "web/css/indicator.css", - "web/css/wv.events.css", - "web/css/dataDownload.css", - "web/css/wv.sidebar.css", - "web/css/wv.layers.modal.css", - "web/css/wv.scrollbar.css", - "web/css/wv.layers.options.css", - "web/css/wv.layers.info.css", - "web/css/wv.timeline.css", - "web/css/wv.anim.widget.css", - "web/css/wv.dateselector.css", - "web/css/wv.tooltip.css", - "web/css/wv.mobile.css" -] diff --git a/deploy/wv.js.json b/deploy/wv.js.json deleted file mode 100644 index 51c2236ad6..0000000000 --- a/deploy/wv.js.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "wv.js": [ - - "node_modules/promise-queue/lib/index.js", - - "web/js/edsc.js", - "web/js/edsc/coordinate.js", - "web/js/edsc/arc.js", - "web/js/edsc/geoutil.js", - "web/js/edsc/interpolation.js", - "web/js/edsc/spherical_polygon.js", - - "web/js/wv.brand.js", - - "web/js/util/wv.util.browser.js", - "web/js/util/wv.util.js", - "web/js/util/wv.util.load.js", - "web/js/util/wv.util.events.js", - - "web/js/ui/wv.ui.js", - "web/js/ui/wv.ui.mouse.js", - "web/js/ui/wv.ui.indicator.js", - "web/js/ui/wv.ui.info.js", - "web/js/map/wv.map.ui.js", - - "web/js/proj/wv.proj.js", - "web/js/proj/wv.proj.change.js", - "web/js/proj/wv.proj.model.js", - "web/js/proj/wv.proj.ui.js", - - "web/js/animation/wv.anim.js", - "web/js/animation/wv.anim.gif.js", - "web/js/animation/wv.anim.model.js", - "web/js/animation/wv.anim.rangeselect.js", - "web/js/animation/wv.anim.widget.js", - "web/js/animation/wv.anim.ui.js", - - - "web/js/date/wv.date.js", - "web/js/date/wv.date.model.js", - "web/js/date/wv.date.sliders.js", - "web/js/date/wv.date.label.js", - "web/js/date/wv.date.timeline.js", - "web/js/date/wv.date.timeline.data.js", - "web/js/date/wv.date.timeline.ticks.js", - "web/js/date/wv.date.timeline.zoom.js", - "web/js/date/wv.date.timeline.pick.js", - "web/js/date/wv.date.timeline.pan.js", - "web/js/date/wv.date.timeline.input.js", - "web/js/date/wv.date.timeline.config.js", - "web/js/date/wv.date.wheels.js", - - "web/js/layers/wv.layers.js", - "web/js/layers/wv.layers.metadata.js", - "web/js/layers/wv.layers.model.js", - "web/js/layers/wv.layers.sidebar.js", - "web/js/layers/wv.layers.active.js", - "web/js/layers/wv.layers.modal.js", - "web/js/layers/wv.layers.options.js", - "web/js/layers/wv.layers.info.js", - - "web/js/image/wv.image.rubberband.js", - "web/js/image/wv.image.panel.js", - - "web/js/notifications/wv.notifications.ui.js", - - "web/js/palettes/wv.palettes.js", - "web/js/palettes/wv.palettes.legend.js", - "web/js/palettes/wv.palettes.model.js", - - "web/js/data/wv.data.js", - "web/js/data/wv.data.cmr.js", - "web/js/data/wv.data.handler.js", - "web/js/data/wv.data.map.js", - "web/js/data/wv.data.model.js", - "web/js/data/wv.data.rotate.js", - "web/js/data/wv.data.results.js", - "web/js/data/wv.data.ui.js", - - "web/js/map/wv.map.js", - "web/js/map/wv.map.model.js", - - "web/js/map/wv.map.animate.js", - "web/js/map/wv.map.runningdata.js", - "web/js/map/wv.map.rotate.js", - "web/js/map/wv.map.layerbuilder.js", - "web/js/map/wv.map.precachetile.js", - "web/js/map/wv.map.datelinebuilder.js", - "web/js/map/wv.map.ui.js", - - "web/js/link/wv.link.model.js", - "web/js/link/wv.link.ui.js", - - "web/js/naturalEvents/wv.naturalEvents.request.js", - "web/js/naturalEvents/wv.naturalEvents.model.js", - "web/js/naturalEvents/wv.naturalEvents.ui.js", - "web/js/naturalEvents/wv.naturalEvents.markers.js", - - "web/js/wv.feedback.js", - "web/js/wv.tour.js", - "web/js/wv.debug.js", - "web/js/wv.main.js" - ], - "ol.js": [ - "node_modules/openlayers/dist/ol-debug.js", - "web/js/ol.wv/ol.wv.lookupimagetile.js" - ] -} diff --git a/doc/apache_setup.md b/doc/apache_setup.md index 2dda11a681..ce90f44e43 100644 --- a/doc/apache_setup.md +++ b/doc/apache_setup.md @@ -1,106 +1,17 @@ -# Worldview installation using Apache +# How to Setup Worldview Using Apache -Download and install [Node.js](http://nodejs.org/) using the instructions on -their site. +> Note: Using Worldview with Apache is deprecated and will not be supported in the future. We recommended using Worldview with Node/[Express](https://expressjs.com/) instead. To use Apache, choose one of the setup methods below. -Clone this repository: +## Manual Setup -```bash -git clone https://github.com/nasa-gibs/worldview.git -cd worldview -``` +* [Install Apache](http://httpd.apache.org/docs/2.4/install.html) +* Follow [the instructions in the README](https://github.com/nasa-gibs/worldview#install) to install and build Worldview +* [Configure Apache](http://httpd.apache.org/docs/2.4/configuring.html) to serve the contents of the `build/` directory (or extract `dist/site-worldview.tar.bz2` and configure Apache to serve that) +* [Enable execution of CGI scripts in Apache](https://httpd.apache.org/docs/2.4/mod/mod_cgi.html) +* [Start](http://httpd.apache.org/docs/2.4/invoking.html) or [Restart Apache](http://httpd.apache.org/docs/2.4/stopping.html) -Select one of the following configuration repositories: +## RPM Setup -```bash -# Official EOSDIS configurations -git clone https://github.com/nasa-gibs/worldview-options-eosdis.git options - -# Or a blank repository with only Corrected Reflectance and no branding -git clone https://github.com/nasa-gibs/worldview-options-template.git options -``` - -Now install a global version of [grunt](http://gruntjs.com/) using the -following command: - -```bash -sudo npm install --global grunt-cli -``` - -Install the packages required for building: - -```bash -npm install -``` - -Some python libraries are required. Install virtualenv to keep additional -libraries installed in a local directory: - -```bash -sudo easy_install virtualenv==1.10.1 -``` - -Start the build with: - -```bash -grunt -``` - -The ``dist`` directory now contains ``site`` tar files that can be -can be uploaded and unpacked to a web server. - -## Mac OS X -### Apache Server Configuration -*These instructions work with OS X El Capitan. Directories and steps may differ with other OS X versions* - -Open httpd.conf -```bash -sudo vi /etc/apache2/httpd.conf -``` -Make sure the following modules are enabled: -```bash -LoadModule expires_module libexec/mod_expires.so -LoadModule php5_module modules/libphp5.so -LoadModule deflate_module libexec/apache2/mod_deflate.so -``` -For data download to function, CGI scripts must be executable. To do that, enable the mod_cgid module in the httpd.conf file. -```bash -LoadModule cgid_module modules/mod_cgid.so -``` - -### Example Apache User Configuration -To access apache user config: -```bash -sudo vi /etc/apache2/users/Your-User-Name.conf -``` -```bash -Adjust the configuration: - - AllowOverride All - Options Indexes MultiViews FollowSymLinks Includes ExecCGI - Require all granted - -``` -Restart Apache: -```bash -sudo apachectl restart -``` - -## Windows -### Settings for a Worldview development environment -Worldview may be setup on Windows with XAMPP. First install XAMPP, the default location is at C:\xampp. Clone the Worldview repo at C:\xampp\htdocs and then the configuration repo in Worldview. - -Edit the httpd.conf file at <xampp root>\apache\conf to uncomment: - -```bash -"LoadModule expires_module modules/mod_expires.so" -"LoadModule filter_module modules/mod_filter.so" -"LoadModule deflate_module modules/mod_deflate.so" -``` - -Turn on xampp, and Worldview should be ready at "localhost/worldview/web"! If you encounter any code 500 errors, check the error log at <xampp root>\apache\logs - -## Troubleshooting -If the steps above were not enough to get your environment set up, don't give up -* Open apache logs to see if any obvious errors are being thrown -* Open the console of your web browser to see if any recognizable errors are present +* Run `bash ./tasks/buildAll.sh` to generate an `.rpm` file in `/build/rpm`. +* Deploy the `.rpm` file to your server. +* **Note:** you may have to modify `httpd.conf` and `worldview.spec` to match your environment before running these steps. diff --git a/doc/branding.md b/doc/branding.md index 5cf302cbf5..d09fbe5327 100644 --- a/doc/branding.md +++ b/doc/branding.md @@ -1,50 +1,29 @@ # Branding -By default, the build process will: - -* Name the application "Example Map" -* Not provide a logo in the upper left hand corner -* Contain an "About" page with only the version and name of the application. -* Have a default support email address of support@example.com +To add custom branding to Worldview, +[create a custom configuration](configuration.md) and modify it; ## Customizing -Customization is easy as modifying or changing some files in the ``options`` -directory. - -*Please Note*: The ``options`` directory is contained in the ``.gitignore`` file -so that you can make a separate repository for the customizations. - -Edit the ``options/brand.json`` file and make changes as necessary using the -guidance below: +Update the following fields in `options/common/brand.json` with custom branding; -* ``packageName``: Name used to create tar files, base directories and web -roots (e.g., supermap) -* ``name``: Name of the application presented to the end users (e.g., -Super Map of the World) -* ``email``: Email address that should be presented to the end user for -support requests. +* `packageName`: Application name used to create builds, (i.e. `worldview`). +* `name`: Application name shown to end users (i.e. `EOSDIS Worldview`). +* `email`: Email address for support requests. -Naming can be more specific by omitting the ``name`` property and using +Naming can be more specific by omitting the `name` field and using the following instead: -* ``officalName``: Name of the application when used in a formal setting -(e.g, TLA's Super Map of the World) -* ``longName``: Full, but not official, name of the application (e.g. Super -Map of the World) -* ``shortName``: Abbreviated, short name of the application (e.g. Super Map) +* `officalName`: Full name of the application (i.e. `EOSDIS Worldview`). +* `shortName`: Short name of the application (i.e. `Worldview`). -To add a logo, replace the following file with an image that is 247 pixels by -45 pixels: +To add a logo, replace `options/common/brand/images/wv-logo.png` with an image +that is 247x45 pixels. - options/brand/images/wv-logo.png - -To create an "About" page, edit the following file: - - options/brands/pages/about.html +To create an "About" page, edit `options/common/brand/pages/about.md`. Add other +Markdown files in this directory to add more pages. ## Rebuilding -Build again and the customizations should now be included: - - grunt +After making changes to a custom configuration, run `npm run build` again to +rebuild the app. diff --git a/doc/build.md b/doc/build.md deleted file mode 100644 index 7151059480..0000000000 --- a/doc/build.md +++ /dev/null @@ -1,15 +0,0 @@ -# Build - -There are three build major processes involved prior to deployment. - -## Worldview Master - -Master build is run on updates to the worldview master codebase. The core tasks that are run during this build can be found/edited in `master.sh` - -## Worldview Options - -The Worldview Options build is run when updates to the worldview options repository have been made. The core tasks that are run during this build can be found/edited in `config.sh` - -## Site Build - -The Site-Build build is run after either the completion of the Worldview Options or Master builds. The core tasks that are run during this build can be found/edited in `site_build.sh` diff --git a/doc/config.md b/doc/configuration.md similarity index 50% rename from doc/config.md rename to doc/configuration.md index 06e869d1bb..7e3f2db904 100644 --- a/doc/config.md +++ b/doc/configuration.md @@ -1,43 +1,53 @@ # Configuration -The configuration used by the official NASA EOSDIS Worldview application can be found here: +By default, Worldview uses [the official EOSDIS configuration](https://github.com/nasa-gibs/worldview-options-eosdis). +To create a custom configuration, clone the default configuration repo or +[the configuration template repo](https://github.com/nasa-gibs/worldview-options-template.git) +into the `options/` directory and modify it; - - -A basic configuration that only includes three starting layers can be found here: - - - -To customize the configuration of the application, use either repository above as a starting point. +```bash +git clone https://github.com/nasa-gibs/worldview-options-template.git options +``` -## General Notes +## Updating the Configuration -Information here is incomplete and can be flushed out on an as-needed basis. +After making any changes to a custom configuration, rebuild the app for the +changes to take effect. Instead of running the entire build process, use the +`npm run getcapabilities` command to make a request to [the GIBS `GetCapabilities` API](https://wiki.earthdata.nasa.gov/display/GIBS/GIBS+API+for+Developers) +and update layer configurations, and then `npm run build:config` to rebuild the +configuration for use by the application. Run these commands separately +as needed or use `npm run updateconfig` as a shortcut to run both. -All paths in the document are relative to the options repository root unless specified otherwise. +### Subdirectories -After making any changes to the configuration, run ``grunt config`` from the command line to rebuild the configuration for use by the application. +If you have a custom configuration in a subdirectory of `options/` other than +`options/release/`, pass in the name of the subdirectory to use with +`npm run build:config -- subdirectory_name`. To build an incomplete configuration, +prefix the command like this; `IGNORE_ERRORS=true npm run build:config`. ## New Layers -Create a new JSON document in ``config/wv.json/layers`` named ``X.json`` where ``X`` is the layer identifier used in the WMTS or WMS call. This file can be placed in any subdirectory as needed for organizational purposes. +Create a new JSON document in `config/wv.json/layers` named `X.json` where `X` +is the layer identifier used in the WMTS or WMS API call. This file can be +placed in any subdirectory as needed for organizational purposes. -The following is the minimum configuration needed for the Aerosol Optical Depth layer: +Here's an example of a minimum configuration for the Aerosol Optical Depth layer: ```json { - "layers": { - "MODIS_Aqua_Aerosol": { - "id": "MODIS_Aqua_Aerosol", - "title": "Aerosol Optical Depth", - "subtitle": "Aqua / MODIS", - "group": "overlays" - } + "layers": { + "MODIS_Aqua_Aerosol": { + "id": "MODIS_Aqua_Aerosol", + "title": "Aerosol Optical Depth", + "subtitle": "Aqua / MODIS", + "group": "overlays" } + } } ``` -All properties should be in an object keyed by the layer identifier used in the WMTS of WMS call. +All properties should be in an object keyed by the layer identifier used in the +WMTS of WMS API call. ### Required Properties @@ -46,7 +56,8 @@ The minimum set of required properties are as follows: - **id**: The layer identifier used in the WMTS or WMS call - **title**: Title of the layer displayed to the end user. This is the first line displayed in the active layers list. - **subtitle**: Subtitle of the layer displayed to the end user. This is the second line displayed in the active layers list and usually includes platform, sensor, and/or attribution information. -- **group**: The group this layer should be found in, either *baselayers* or *overlays* +- **group**: The group this layer is found in, either *baselayers* or *overlays* +- **layergroup**: A reference to the layer group the layer belongs to (usually the folder name it's contained in; i.e. airs, modis, reference_orbits). The following properties are required if this information is not available via the GIBS WMTS GetCapabilities document: @@ -54,34 +65,33 @@ The following properties are required if this information is not available via t - **format**: Image format type, either *image/png* or *image/jpeg*. - **tileSize**: For WMS layers only, an array of pixel dimensions used to tile the requests. For example, *[512, 512]* - **period**: Use *daily* for layers that have new content each day, otherwise use *static*. -- **startDate**: For daily layers, the first day in ``YYYY-MM-DD`` format that data is available +- **startDate**: For daily layers, the first day in `YYYY-MM-DD` format that data is available - **inactive**: If the daily layer is no longer being produced, this should be present with a *true* value. Otherwise, this property can be omitted. -- **endDate**: If the daily layer is no longer being produced, the last day in ``YYYY-MM-DD`` format that data was available. +- **endDate**: If the daily layer is no longer being produced, the last day in `YYYY-MM-DD` format that data was available. -A *projections* object must exist which contains an object for each projection supported by this layer. Projection information is keyed by the projection identifier (found in ``config/wv.json/projections``). Example: +A *projections* object must exist which contains an object for each projection supported by this layer. Projection information is keyed by the projection identifier (found in `config/wv.json/projections`). Example: ```json "projections": { - "antarctic": { - "source": "GIBS:antarctic", - "matrixSet": "EPSG3031_250m" - }, - "arctic": { - "source": "GIBS:arctic", - "matrixSet": "EPSG3413_250m" - } + "antarctic": { + "source": "GIBS:antarctic", + "matrixSet": "EPSG3031_250m" + }, + "arctic": { + "source": "GIBS:arctic", + "matrixSet": "EPSG3413_250m" + } } ``` The projection parameters are as follows: -- **source**: Identifier that indicates which endpoint contains this layer (see ``config/wv.json/sources.json``) +- **source**: Identifier that indicates which endpoint contains this layer (see `config/wv.json/sources.json`) - **matrixSet**: For WMTS layers only, the name of the matrix set as defined in the endpoint's GetCapabilities document. ### Layer Order -The ``config/wv.json/layerOrder.json`` file must be updated to include the new layer identifier. This file determines the order that layers are displayed in the add layers tab. - +The `config/wv.json/layerOrder.json` file must be updated to include the new layer identifier. This file determines the order that layers are displayed in the add layers tab. ### Optional Properties @@ -91,51 +101,58 @@ The ``config/wv.json/layerOrder.json`` file must be updated to include the new l - **product**: Identifier of the product to use when searching the Common Metadata Repository (CMR) to download data. See the [Data Download documentation](data_download.md) for more information. - **style**: For WMTS layers only, this sets the WMTS `style` parameter accordingly; defaults to `default` if not set. - **matrixIds**: For WMTS layers only, this is an array of labels used for the `TileMatrix` parameter at each zoom level; defaults to `[0, 1, 2, ...]` if not set. +- **daynight**: Classify a layer as day or night. This information will be displayed within the title of the layer in the Measurement / Sources add modal view if provided. +- **track**: Classify a layer's track direction. This will usually be either ascending or descending and will be displayed within the title of the layer in the Measurement / Sources add modal view if provided. +- **description**: Point to a markdown file within the metadata folder to provide a layer description. To display a color palette legend, a *palette* object should exist with the following properties: - **id**: Identifier of the palette. This should match the name of the colormap file without the extension. -- **recommended**: Array of custom palette identifiers that are recommended for use with this layer (see ``config/palettes-custom.json``). Example, *["orange_1", "red_1"]* +- **recommended**: Array of custom palette identifiers that are recommended for use with this layer (see `config/palettes-custom.json`). Example, *["orange_1", "red_1"]* +- **immutable**(optional): When this flag is set to true, the options to adjust thresholds and colormaps are removed. ### Full Example ```json { - "layers": { - "AIRS_RelativeHumidity_400hPa_Day": { - "id": "AIRS_RelativeHumidity_400hPa_Day", - "title": "Relative Humidity (400 hPa, Day)", - "subtitle": "Aqua / AIRS", - "tags": "rh", - "group": "overlays", - "product": "AIRX2RET_DAY", - - "format": "image/png", - "type": "wmts", - - "period": "daily", - "startDate": "2013-07-16", - - "projections": { - "geographic": { - "source": "GIBS:geographic", - "matrixSet": "EPSG4326_2km" - } - }, - - "palette": { - "id": "AIRS_RH400_A" - } + "layers": { + "AIRS_RelativeHumidity_400hPa_Day": { + "id": "AIRS_RelativeHumidity_400hPa_Day", + "title": "Relative Humidity (400 hPa, Day)", + "subtitle": "Aqua / AIRS", + "tags": "rh", + "group": "overlays", + "product": "AIRX2RET_DAY", + "format": "image/png", + "type": "wmts", + "period": "daily", + "startDate": "2013-07-16", + "projections": { + "geographic": { + "source": "GIBS:geographic", + "matrixSet": "EPSG4326_2km" } + }, + "layergroup": [ + "airs" + ], + "daynight": "day", + "track": "descending", + "palette": { + "id": "AIRS_RH400_A" + } } + } } ``` + ## Adding Layers to Worldview and the Product Picker + New layers in the Global Imagery Browse Services (GIBS) can be added to Worldview via the options repository using the following instructions. First, layers must be added to `config/wv.json/layers` and `config/wv.json/layerOrder.json`. Then they must be added to the `config/wv.json/measurements` and `config/wv.json/categories` folders so that they will be categorized in the Product Picker. Lastly, if the layers have descriptions these can be added in `config/metadata` and if they are available in the Common Metadata Repository (CMR), data download may be enabled for those layers. -- Fetch GIBS GetCapabilities with `grunt fetch`. This gets the latest layer information and colormaps from GIBS. +- Fetch GIBS GetCapabilities with `npm run getcapabilities`. This gets the latest layer information and colormaps from GIBS. - Add new layer(s) - Follow [New Layers](https://github.com/nasa-gibs/worldview/blob/master/doc/config.md#new-layers) above to create JSON file in `config/wv.json/layers`. - Add to Measurements @@ -150,76 +167,85 @@ First, layers must be added to `config/wv.json/layers` and `config/wv.json/layer - Create .md file in `config/metadata`. The *description* (i.e. layer description/metadata) identifier has to be added to the corresponding measurement JSON file. - Add Data Download for product, if it exists - Refer to [Data Download](https://github.com/nasa-gibs/worldview/blob/master/doc/data_download.md) and create JSON file in `config/wv.json/products`. The *product* identifier has to be added to the corresponding layer JSON file. +- Rebuild the configuration with `npm run build:config` for use by the application. ## New Map Sources -Modify the JSON document, ``config/wv.json/sources.json``. There is a *sources* object that contains an object for each map source keyed by the source identifier. For layers that can be configured via a GIBS WMTS GetCapabilities document or for WMS layers, the only property required is: +Modify the JSON document, `config/wv.json/sources.json`. There is a *sources* +object that contains an object for each map source keyed by the source identifier. +For layers that can be configured via a GIBS WMTS GetCapabilities document or +for WMS layers, the only property required is: - **url**: Either a string or array of strings where the map service is found. -For WMTS layers that cannot be configured with a GetCapabilities document, a *matrixSets* object must exist that contains an object for each matrix set, keyed by the matrix set identifier. +For WMTS layers that cannot be configured with a GetCapabilities document, a +*matrixSets* object must exist that contains an object for each matrix set, +keyed by the matrix set identifier. - **id**: The identifier for this matrix set. - **maxResolution**: The maximum resolution of this of this matrix tile set as defined in the [OpenLayers 2 documentation](http://dev.openlayers.org/docs/files/OpenLayers/Layer-js.html#OpenLayers.Layer.maxResolution). This property might be deprecated in the future as it can be obtained from the *resolutions* property. - **resolutions**: Array of resolutions for each zoom level as defined in the [OpenLayers 2 documentation](http://dev.openlayers.org/docs/files/OpenLayers/Layer-js.html#OpenLayers.Layer.maxResolution). -- **tileSize**: Array of pixel dimensions for each tile. Example *[512, 512]* +- **tileSize**: Array of pixel dimensions for each tile. Example; `[512, 512]` ### Full Example + ```json { - "sources": { - "GIBS:arctic": { - "url": [ - "//map1a.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi", - "//map1b.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi", - "//map1c.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi" - ], - "matrixSets": { - "EPSG3413_250m": { - "id": "EPSG3413_250m", - "maxResolution": 8192, - "resolutions": [8192, 4096, 2048, 1024, 512], - "tileSize": [512, 512] - } - } + "sources": { + "GIBS:arctic": { + "url": [ + "//map1a.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi", + "//map1b.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi", + "//map1c.vis.earthdata.nasa.gov/wmts-arctic/wmts.cgi" + ], + "matrixSets": { + "EPSG3413_250m": { + "id": "EPSG3413_250m", + "maxResolution": 8192, + "resolutions": [8192, 4096, 2048, 1024, 512], + "tileSize": [512, 512] } + } } + } } ``` ### GetCapabilities -To automatically fetch configuration information from the GetCapabilities document, modify the ``config.json`` file and add an object to the *wv-options-fetch* object with the following properties: +To automatically fetch configuration information from the GetCapabilities +document, modify the `config.json` file and add an object to the +`wv-options-fetch` object with the following properties: - **from**: The URL to fetch the GetCapabilities document - **to**: Name of the temporary file used to store the GetCapabilities document. -Now add an object to the *wv-options-wmts* object with the following properties: +Now add an object to the `wv-options-wmts` object with the following properties: - **source**: The identifier of the source that corresponds to this endpoint. -- **from**: The name of the temporary file used int he *wv-options-fetch* object. +- **from**: The name of the temporary file used int he `wv-options-fetch` object. - **to**: The name of the temporary output JSON file. -- **projection**: The identifier of the projection used in this endpoint (see ``config/wv.json/projections``) +- **projection**: The identifier of the projection used in this endpoint (see `config/wv.json/projections`) - **maxResolution**: The resolution of first tile matrix entry. ### config.json Example ```json { - "wv-options-fetch": [ - { - "from": "https://map1.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi?request=GetCapabilities", - "to": "gibs-geographic.xml" - }, - ], - "wv-options-wmts": [ - { - "source": "GIBS:geographic", - "from": "gibs-geographic.xml", - "to": "gibs-geographic.json", - "projection": "geographic", - "maxResolution": 0.5625 - } - ] + "wv-options-fetch": [ + { + "from": "https://map1.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi?request=GetCapabilities", + "to": "gibs-geographic.xml" + }, + ], + "wv-options-wmts": [ + { + "source": "GIBS:geographic", + "from": "gibs-geographic.xml", + "to": "gibs-geographic.json", + "projection": "geographic", + "maxResolution": 0.5625 + } + ] } ``` diff --git a/doc/data_download.md b/doc/data_download.md index e17b2e1f51..2b1ef13431 100644 --- a/doc/data_download.md +++ b/doc/data_download.md @@ -1,34 +1,35 @@ # Data Download -*Note*: This feature exclusively uses the Common Metadata Repository and is -of no use for datasets stored elsewhere. +**Note**: This feature uses the Common Metadata Repository (CMR) and does not +work for data sets stored elsewhere. -Each layer in Worldview can be mapped to a data product found in the CMR. In the layer configuration, use the *product* attribute and provide the identifier that will be used for the downloadable product. +Each layer in Worldview can be mapped to a data product in the CMR. In the layer +configuration, use the *product* attribute and provide the identifier for the +downloadable product. -Each *product* is defined in the *products* section, keyed by identifier. An -example follows below: +Each *product* is defined in the *products* section, keyed by identifier: ```json { - "products": { - "MYD04_L2": { - "name": "MODIS/Aqua Aerosol 5-Min L2 Swath 10km", - "handler": "AquaSwathMultiDay", - "query": { - "shortName": "MYD04_L2" - }, - "nrt": { - "by": "value", - "field": "data_center", - "value": "LANCEMODIS" - }, - "urs": { - "by": "value", - "field": "data_center", - "value": "LANCEMODIS" - } - } + "products": { + "MYD04_L2": { + "name": "MODIS/Aqua Aerosol 5-Min L2 Swath 10km", + "handler": "AquaSwathMultiDay", + "query": { + "shortName": "MYD04_L2" + }, + "nrt": { + "by": "value", + "field": "data_center", + "value": "LANCEMODIS" + }, + "urs": { + "by": "value", + "field": "data_center", + "value": "LANCEMODIS" + } } + } } ``` @@ -43,12 +44,12 @@ yesterday, and tomorrow appear together on the same map. list. Use this for collections that do not have granules and only have a collection level entry. * `CollectionMix`: Handles layers which only have collection-level metadata -and have different collections based on the currently-selected date. Uses +and have different collections based on the selected date. Uses "science" and "nrt" query flags to distinguish between "old" and "new" collections, respectively. * `DailyAMSRE`: Displays a single entry for a daily AMSR-E product. Since the -metadata is too exact, this omits granules that happen to contain on a very -small fraction of the day. +metadata is too exact, this omits granules that happen to contain a small +fraction of the day. * `DailyGranuleList`: Similar to `List` but also obtains granules three hours from yesterday and tomorrow. This handler is only used for MODIS Combined Value Added AOD and granules appear to be in six hour chunks. It isn't apparent @@ -90,89 +91,89 @@ using the `MODISMix` handler, the query is specified in the following manner: ```json "query": { - "science": { - "shortName": "MYD09GA", - "dataCenterId": "LPDAAC_ECS" - }, - "nrt": { - "shortName": "MYD09", - "dataCenterId": "LANCEMODIS" - } + "science": { + "shortName": "MYD09GA", + "dataCenterId": "LPDAAC_ECS" + }, + "nrt": { + "shortName": "MYD09", + "dataCenterId": "LANCEMODIS" + } } ``` ## Result Processing and Filtering -Each handler has a series of processors that may change or filter each result. +Each handler has a series of processors that change or filter each result. The result processors and configurations are as follows: -##### AntiMeridianMulti +### AntiMeridianMulti If a granule splits the anti-meridian, this processor creates two polygons, one on each side of the map. The constructor takes a `maxDistance` argument -that specifies a distance, in degrees. If a line segemnt in the polygon is -greater than `maxDistance`, it is assumed to be crossing the anti-meridian. +that specifies a distance, in degrees. If a line segment in the polygon is +greater than `maxDistance`, it's assumed to be crossing the anti-meridian. -##### CollectPreferred +### CollectPreferred -If multiple granlues exist for a given acquisition time, this attempts to +If multiple granules exist for a given acquisition time, this attempts to group the granule as either near-real time or science quality. The granule should already be tagged for NRT before using this processor. One of the granules will be marked as preferred as indicated by the `prefer` variable in the data download model. Use `PreferredFilter` to select only one of these. -##### CollectVersions +### CollectVersions If multiple granules exist for a given acquisition time, this attempts to group the granule by its version string. Use `VersionFilter` to select only one of these. -##### ConnectSwaths +### ConnectSwaths Uses the acquisition times to create connector lines to show the swath ground track. -##### DateTimeLabel +### DateTimeLabel Creates a label for this granule based on its acquisition date and time. -##### Densify +### Densify Not used at the moment. -##### DividePolygon +### DividePolygon -For polygons that cross the anti-meridian, normalize and create a mutlipolygon +For polygons that cross the anti-meridian, normalize and create a mutli-polygon with a polygon on each side. Uses code provided by the Earthdata Search client. -##### ExtentFilter +### ExtentFilter Excludes granules that do not intersect the `extent` provided in the constructor. -##### GeometryFromCMR +### GeometryFromCMR Converts a CMR geometry to an OpenLayers 3 geometry. -##### GeometryFromMODISGrid +### GeometryFromMODISGrid Creates a polygon footprint given a MODIS H and V tile number. -##### MODISGridIndex +### MODISGridIndex Creates a index value by combining the MODIS H and V tile numbers. -##### MODISGridLabel +### MODISGridLabel Creates a label for this granule based on the MODIS H and V tile numbers. -##### OrbitFilter +### OrbitFilter Filter by ascending or descending orbit. Configure with `orbit` with the following parameters: * `type`: Always `regex_group` -* `field`: The field to inspect to determine the orbit +* `field`: The field to inspect to find the orbit * `regex`: The regular expression to match against, should have one group. * `match`: Keep the granule if it matches this value. @@ -180,27 +181,27 @@ Example: ```json "orbit": { - "type": "regex_group", - "field": "producer_granule_id", - "regex": ".*([AD])\\.hdf$", - "match": "A" + "type": "regex_group", + "field": "producer_granule_id", + "regex": ".*([AD])\\.hdf$", + "match": "A" } ``` -##### PreferredFilter +### PreferredFilter Only keeps near-real time granules if the `prefer` value passed in is `nrt`, otherwise keeps science-quality granules if `science`. -##### ProductLabel +### ProductLabel Sets the label of the granule to the `name` provided in the constructor. -##### TagList +### TagList Forces the results to display in a dialog box list instead of on the map. -##### TagNRT +### TagNRT Mark granules as near-real time depending on the following `nrt` configuration parameters: @@ -209,42 +210,40 @@ parameters: * `field`: The field value to check against * `value`: Field value must equal this exactly. * `regex`: Field value must match this regular expression. -* `handler`: If the handler for this product is `MODISMix` or `CollectionMix`, the -handler that should be used for the NRT query, for example, `TerraSwathMultiDay`. +* `handler`: If the handler for this product is `MODISMix` or `CollectionMix`, +the handler to use for the NRT query, for example, `TerraSwathMultiDay`. Example: ```json "nrt": { - "handler": "TerraSwathMultiDay", - "by": "value", - "field": "data_center", - "value": "LANCEMODIS" + "handler": "TerraSwathMultiDay", + "by": "value", + "field": "data_center", + "value": "LANCEMODIS" }, ``` -##### TagProduct +### TagProduct Add a field to the granule result with the name of the product. -##### TagURS +### TagURS -Mark granules as requring URS access depending on the following `urs` +Mark granules as requiring URS access depending on the following `urs` configuration parameters. -*FIXME*: Code an almost copy-and-paste from TagNRT, maybe consolidate this? - * `by`: Determine if this requires URS by `value`, `regex`, or `constant` * `field`: The field value to check against * `value`: Field value must equal this exactly or the constant to set as. * `regex`: Field value must match this regular expression. -##### TagVersion +### TagVersion Parse out the version field into a numeric value that can used for comparison operations. -##### TimeFilter +### TimeFilter Keep granules that meet the following values passed into the `spec` constructor: @@ -256,34 +255,21 @@ day. * `maxDistance`: Any line segment in a polygon that exceeds this distance, in degrees, is considered to have crossed the anti-meridian. -##### TimeLabel +### TimeLabel Creates a label for this granule based on its acquisition time only. Times that are not from the selected day are indicated with + or - day indicators. -##### Transform +### Transform Convert the EPSG:4326 coordinates into the other projections required for display. -##### VersionFilter +### VersionFilter Given a set of granules with different versions, only select the latest. -##### VersionFilterExact +### VersionFilterExact Only select granules with the exact version specified in the `version` configuration item. - - - - - - - - - - - - - diff --git a/doc/deployment.md b/doc/deployment.md new file mode 100644 index 0000000000..09f18a0e18 --- /dev/null +++ b/doc/deployment.md @@ -0,0 +1,6 @@ +# Deployment + +To build the app for deployment, run the included `tasks/buildAll.sh`. This +script installs dependencies. builds the app in the `build/` directory and +creates `.tar.bz2` files and an `.rpm` file which can be used to deploy the +app to an Apache environment. diff --git a/doc/developing.md b/doc/developing.md index ab582aca03..42b485c5ed 100644 --- a/doc/developing.md +++ b/doc/developing.md @@ -1,156 +1,55 @@ -## Development +# Developing -*Please Note*: There is little to no documentation at this time and any -comments in the code may be out of date. +## Building -### Minification of CSS and JavaScript files +This project uses `npm` to run build scripts and other tasks. The scripts are a +combination of JavaScript, Bash and Python scripts. -The build script needs to know which files to minify and the correct order used -to concatenate. Anytime a CSS or JavaScript file is added. renamed, or removed, -the following files must be updated: +**`npm run build`**: Runs all the `build:x` scripts below and generates a build +in `build/` and `dist/site-worldview.tar.bz2`. If you have a custom configuration +subdirectory, pass it to the command with `npm run build -- subdirectory_name`. +To build the app with an incomplete configuration, prefix the command like this; +`IGNORE_ERRORS=true npm run build`. -* ``etc/deploy/wv.css.json`` -* ``etc/deploy/wv.js.json`` +**`npm run build:js`**: Builds the JavaScript bundle for the app and writes it +to `web/build/wv.js`. -To ensure that references to the unminified value are removed in the production -version, prefix all CSS or JavaScript link tags with +**`npm run build:css`**: Builds the CSS bundle for the app and writes it to +`web/build/wv.css`. - +**`npm run build:config`**: Builds the configuration (options) for the app in +`build/options/` and `dist/worldview-config.tar.bz2`. -If there are some CSS or JavaScript files that must be available in -non-concatenated form, add exceptions in the ``remove:source`` task in -``Gruntfile.js`` +**`npm run build:tests`**: Builds a JavaScript bundle in `web/build/wv-test-bundle.js` +for running tests. -## Syncing with remote branch -Update packages that may have been adjusted since your last pull +**`npm watch`**: Runs all the build scripts necessary for local development in watch +mode. JS and CSS bundles are updated automatically when source files change. +This does not create any assets in `build/`, and is only for local development. +You must run `npm run build` or `npm run build:config` first to make a request +to [the GIBS `GetCapabilities` API](https://wiki.earthdata.nasa.gov/display/GIBS/GIBS+API+for+Developers) and +build the configuration files. - grunt update-packages +### Grunt tasks -## Naming and Versioning +Grunt tasks are deprecated, but the following are used by the build scripts +under the hood and available to use if you know what you're doing; -The ``options.json`` file contains the name, version, and release number -that is used when building the deployment packages. The name can be changed -to allow side-by-side deployments of different branches. Executing: +**`grunt`**: This is a shortcut for `grunt build config site`. - grunt +**`grunt config`**: Compiles branding and configuration options and puts the results +in `build/`, `dist/`, and `web/`. -also creates distribution tarballs in the dist directory. Three "unversioned" -files are generated: +**`grunt build`**: Copies assets to build directories and create intermediate `tar` files. -* ``dist/worldview.tar.bz2`` -* ``dist/worldview-debug.tar.bz2`` -* ``dist/worldview-doc.tar.bz2`` +**`grunt site`**: Combines the results of `grunt config` and `grunt build` into final +`build/` and `dist/` directories and creates `tar` files of the final build. -Three "versioned" files are also generated in the form of: +**`grunt rpm-placeholders`**: Replaces placeholder strings in rpm source files. -* ``dist/--.git.tar.bz2`` +## Starting -Where ``name``, ``version``, ``release`` are the values found in the -``package.json`` file and ``revision`` is the value from: - - git rev-parse --short HEAD - -The ``options.json`` file in the repository root is copied from the -active brand directory. To make changes, edit the official copy in the -brand directory. - - -## Grunt Targets - -These additional grunt targets are available. - -### Sync runtime node modules - -Any new update to runtime npm modules, by such means as 'npm install', 'npm update', or a version change in package.json will need to be synced to the web directory: - - grunt update - -### Branding - -Any changes to the brading directories need to be applied to the source -tree to take effect: - - grunt brand - -### Edit Libraries and sync changes on save - -Make edits to node_modules that are [npm linked](https://docs.npmjs.com/cli/link) and have them relocate to the web directory automatically. - - grunt watch - -### Configuration - -The Worldivew configuration file is generated by concatenating all files -in ``conf/web`` - -To regenerate the master configuration file in the source tree after making -an edit, issue the following command: - - grunt config - - -### Autoprefix CSS - -Parse all CSS files and automatically add vendor prefixes to CSS rules using values from Can I Use. - -Run autoprefix with the following: - - grunt autoprefix - - -### Linting - -Check for common errors in the JavaScript and CSS files with: - - grunt lint - -[eslint](http://eslint.org) is used for JavaScript linting. -Run the following to check only check Javascript errors: - - grunt eslint - -[stylelint](https://stylelint.io) is used for CSS linting. -Run the following to checkout only CSS errors: - - grunt stylelint - -Run the following to automatically fix stylelint errors: - - grunt stylefmt - -### Documentation - -Documentation can be built separately with: - - grunt doc - -### Unit Tests - -Run unit test with the following: - - grunt test - -This uses BusterJS with PhantomJS for headless browser testing. To test in an -actual browser which is quicker, install the Buster command line tools -with: - - sudo npm install --global buster-cli - -For static testing like QUnit, run the following and navigate the web browser -to the address shown: - - buster-static - -For browser capturing, run the following and navigate the web browser to -the address shown: - - buster-server - - -### RPM - -To create an RPM on CentOS 6, issue the following: - - grunt rpm-only - -Built RPMs will be found in the ``dist`` directory. +**`npm start`**: Starts the app for local development. Express serves the +contents of the `web/` directory. For advanced usage, edit `tasks/start.js` to +serve the `build/site-worldview/` directory instead, which includes string +placeholder replacements. diff --git a/doc/features.md b/doc/features.md index 304544a4c6..024b3c322b 100644 --- a/doc/features.md +++ b/doc/features.md @@ -1,44 +1,28 @@ # Optional Features -These features are not enabled by default. See each section below on how -to enable the feature if desired. +These features require CGI scripts to execute on your server. In order for them +to function, make sure your server is configured to allow the execution of +CGI files. Next, enable these features in your configuration file. ## Data Download -The data download feature requires a CGI script to execute queries to CMR -on behalf of Worldview. For this reason, it is not enabled by default. -If you understand the implications of this feature and wish to enable it, -edit the ``options/features.json`` file and change to: - - "dataDownload": true - -Rebuild Worldview and the CGI script should be included in the -``service`` directory. If your system administrator has disabled -``.htaccess`` files, configure apache to allow the execution of this -CGI script. +This feature uses CGI scripts to query the CMR API on the server. To enable, +edit `options/common/features.json` and set `"dataDownload": true`. ## URL Shortening -The URL shortening feature uses the service provided by -[bit.ly](http://bit.ly). You will need to obtain an API key to use this -service. Once you have obtained a key, create a ``options/bitly.json`` -file using the following as a template: +This feature uses +[bit.ly](http://bit.ly) to shorten links. Follow these steps to enable it; + +* Edit `options/common/features.json` and set `"urlShortening": true`. +* Get a login and API key from [bit.ly](http://bit.ly). +* Create `build/options/bitly.json` with the following contents (replacing `your_login` and `your_key` with the appropriate values); ```json { - "login": "my_login", - "key": "xh367ahdfjwna" + "login": "your_login", + "key": "your_key" } ``` -This feature also requires a CGI script to execute queries to bit.ly -on behalf of Worldview. For this reason, it is not enabled by default. -If you understand the implications of this feature and wish to enable it, -edit the ``options/features.json`` file and change to: - - "urlShortening": true - -Rebuild Worldview and the CGI script should be included in the -``service`` directory. If your system administrator has disabled -``.htaccess`` files, configure apache to allow the execution of this -CGI script. +> Caution: Do not commit this file to a public repo, and make sure the `build/options` directory is not publicly accessible on your web server to protect the privacy of your API key. diff --git a/doc/style_guide.md b/doc/style_guide.md deleted file mode 100644 index 04312a03dc..0000000000 --- a/doc/style_guide.md +++ /dev/null @@ -1,151 +0,0 @@ -# Developer Guide - -This document is an attempt to normalize the code. - -## Writing code - -### CSS - -We use stylelint to enforce our CSS code standards. You can run `grunt stylelint` to check your CSS code. CSS that does not adhere to our standards will not pass the Travis CI build. Please use a linter while developing to catch any issues as they occur. We provide a style format development tool via `grunt stylefmt` to auto-correct CSS issues. All css lint rules are located in a [.stylelintrc](https://github.com/nasa-gibs/worldview/blob/development/.stylelintrc) file in the project root. - -#### Main Focus -* CSS should be written in a clean, consistent, cascading manner with equal spaced rules and properties. -* **Class based cascading specificity.** ID and chained type selectors (i.e. span.icon) are highly discouraged and will be forbidden in the future. -* Do no over comment the code; comments are not allowed in rules - -#### Syntax -* Always use 2 space indenting -* Always use a newline for multiple selectors -* Always use 1 space before the opening bracket -* Always use a newline after the opening bracket -* Always use a newline after closing bracket -* Never use spaces between function brackets (i.e. url('here.gif');) -* Never use spaces before semicolons or commas -* Always use 1 space after commas -* Operators must use spaces (i.e. `this + that`) -* Single or double quotations can be used for strings -* Never use a newline between strings -* Always use lowercase -* Never leave end of line whitespace -* Always include an end of file newline - -#### Rules -* Rules must be followed by a newline -* Only 1 newline between rules -* No empty rules allowed - -#### At rules -* Only the following at-rules are allowed: "media", "charset", "font-face" -* **No import rules.** If you want to add a css file, include it via a def link in the [index.html](https://github.com/nasa-gibs/worldview/blob/development/web/index.html), then add it to the [wv.css.json](https://github.com/nasa-gibs/worldview/blob/master/deploy/wv.css.json) file. -* At media rules should always be on a single line and should not contain spaces between parentheses - -#### Selectors -* Use class selectors. ID and type chained selectors will be forbidden in the future. (i.e. `#foo, div.bar`) -* Selectors can be 5 levels deep max: (i.e. `div .bar[data-val] > a.baz + .boom > #lorem {}`) - Universal selectors should be avoided. Only 1 universal selector is allowed per rule. -* No duplicate selectors allowed. i.e (`.foo {} .bar {} .foo {}`) -* Selector pseudo classes use a single colon (i.e. `.foo:focus`), pseudo elements use a double colon (i.e. `.foo::before`) -* A maximum of 2 selectors can be used (i.e. [type="text"][disabled]) - -#### Properties -* Only use [known properties](https://github.com/betit/known-css-properties#source) -* No duplicate properties (except beside each other for fallbacks) -* No redundant values when using shorthand properties (i.e. `margin: 1px 1px 1px 1px;` should be `margin: 1px;`) -* If a combination of properties have a shorthand, the shorthand version must be used (i.e. `.foo { padding-top: 1px; padding-right: 2px; padding-bottom: 3px; padding-left: 4px; }` should be `.foo { padding: 1px 2px 3px 4px; }`) -* Always use shorthand properties first. (i.e. `background: #000; background-repeat: repeat;` _the reverse would be incorrect_) - -#### Fonts -* Only use font-families defined in `fonts.css`. Currently this includes `"Open Sans"` and `"Roboto Mono"` -* Use proper font fallbacks (i.e. a sans-serif font like `"Open Sans"` would fall back to `sans-serif`) -* Don't declare duplicate font-family names in properties. -* Always use quotes around fonts unless it is a keyword font (i.e. font-family: "Times New Roman", "Times", serif;). Single or double quotes can be used. -* Font weights must always be specified in numeric format. (i.e. `font-weight: 700;` instead of `font-weight: bold;` / `font-weight: 400;` instead of `font-weight: normal;`) - -#### Colors -* Never use named colors. Use only valid hexadecimal or rgb / rgba colors instead. -* A shorthand hexadecimal value must be used if applicable (i.e. #000000 should be #000). - -#### Units -* Always use `px` units -* Units not allowed: `c`, `ex`, `in`, `mm`, `pc`, `pt`, `rem`, `vh`, `vmin`, `vw` -* Avoid using `em` units as these will be forbidden in the future. -* `0px` zero units must be `0` -* `%` units can have a max precision of 6 (i.e. 0.666667%); all other units, must be a precision of 1. (i.e. 9.5px) -* Always include leading zeros. (i.e. `.5%` should be `0.5%`) -* Never include trailing zeros (i.e. `1.0px` should be `1px`) - -#### Comments -* An empty line must always come before a comment, except on the first line of a file. -* Multiline comments are acceptable -* js style (//) comments are forbidden -* Comments must include a space at the beginning -* Comments cannot be inside rules -* Comments must come directly before a rule with no newlines in between - -#### Example -```css -/* There must always be an empty line before a comment, except on the first line of a file. */ - -/* Rules must be followed by a newline */ -h1, -.h1 { - font-size: 16px; /* Only use px units */ - line-height: 0; /* When a zero unit is present you must use 0, not 0px */ -} - - -/* Only 1 newline after rules; the above would be incorrect */ -.main { /* No empty rules allowed */ -} - -.main .subclass { - background: #fff; /* shorthand color, hex only no color names */ -} - -.main .subclass::before { /* pseudo elements use 2 colons */ - content: url('smiley.gif'); /* no spacing in url (either quote type is fine) */ -} - -.main .subclass:hover { /* pseudo classes use 1 colon */ - background: #ccc; -} - -.main .subclass:hover::before { - content: ''; -} - -.main .subclass .title { - font-family: "Open Sans", sans-serif; - font-weight: 400; -} - -@media only screen and (min-width: 740px) { - .main .subclass { - display: none; - } -} - -``` - -### JavaScript - -* Functions should be pure when possible; pass parameters that are used to return a result - -```js -function getWordArray(str) { - return str.split(' '); -} -``` -* Keep variable declaration at the top of the scope to be a more literal representation of where variables are declared - -```js -function varDeclare() { - var all, variables, here; - - // then do something with vars -} -``` -* If a variable is a jQuery object use a $ at the start of the variable -` var $element = $('#some_element');` -* Use camelback notation -` var camelBack = 'First world lowercase, following words uppercase';` diff --git a/doc/testing.md b/doc/testing.md index 0608101513..211318210f 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -1,214 +1,96 @@ # Testing -Note: Some of the parameters below may no longer be functional. Please contact us if you have any issues at support@earthdata.nasa.gov. -To run unit tests using Grunt, see the [Grunt Targets](https://github.com/nasa-gibs/worldview/blob/9781bcc3c177338bf3043f59c1ebe1a9d8ae4355/doc/developing.md#unit-tests) documentation +## Linting -Append the following parameters to the URL to test using mock data. +To check code against the project's style guides, use `npm run lint`. +Use `npm run lint:css` or `npm run lint:js` to check CSS or JS files separately. -## Permalinks +## Unit Tests + +Unit tests are run using the BusterJS test runner. To run unit tests, run +`npm test`. Make sure to run `npm run build` or `npm run build:tests` first to +build a testable version of Worldview. + +*Note for Windows users:* `npm test` may fail unless you [install PhantomJS manually](http://phantomjs.org/download.html). + +## End-to-end Tests + +Run the included end-to-end tests to test the app in Chrome and Firefox. The +tests run the Cucumber features in `./e2e/features` using Nightwatch and Selenium. + +To run tests on your machine in Chrome; `npm run e2e:chrome`. + +To run tests on your machine in Firefox; + +1) [Create a new Firefox profile](https://developer.mozilla.org/en-US/Firefox/Multiple_profiles) called 'nightwatch'. +2) Run `npm run e2e:firefox`. + +To run tests for both browsers in sequence; `npm run e2e`. + +To run tests in BrowserStack; + +1) Log into [BrowserStack](https://www.browserstack.com/automate) and get your username and access key from the upper left. +2) Add the following to your shell configuration (`.bashrc` or `.profile`); + +```bash +export BROWSERSTACK_ACCESS_KEY=yourkeyhere +export BROWSERSTACK_USER=yourusernamehere +``` + +3) Configure `./e2e/environments.json` with the browsers to test. +4) Run `npm run browserstack`. + +### Reports + +After running end-to-end tests, reports are generated and saved in +`./e2e/reports`. To convert these to HTML, use `npm run report ` +where `` is either the lowercase name of the browser for local +tests (`chrome` or `firefox`) or the name of the BrowserStack environment, such +as `Chrome_61-0_OS_X_El_Capitan-1` (get the name from the JSON files in +`./e2e/reports`). + +The end-to-end tests are a little bit flaky, so they aren't required to pass +before a submission will be accepted. But, please run them and check the results +to make sure you haven't broken any functionality. And add end-to-end tests to +cover any new functionality you add. + +## Mocking Data + +Append the following parameters to the URL to test using mock data; ### External - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterValueDescription
map -

minX,minY,maxX,maxY

-
-

-

Extent of the map view port in units are based on the projection selected (degrees for EPSG:4326, meters for others)

-

-
products -

baselayers,layer1,layer2~overlays,layer3,layer4

-
-

Active layer list where layerX is the identifier of the layer as defined in the configuration file. Any number of layers may be specified in baselayers or overlays. Hidden layers are prefixed with a “!”. Delimiting layers with a “.” is supported - but deprecated.

-
time -

YYYY-MM-DD

-
-

Selected UTC day.

-
pXThe selected projection. The value X may be either “geographic”, “arctic”, or “antarctic”
palettes -

layer1,palette1~layer2,palette2

-
-

If present, assigns a custom palette to a layer where layerX is the identifier of the layer and paletteX is the identifier of the palette as defined in the configuration file. Any number of layer to palette mappings may be specified.

-
opacity -

layer1,value1~layer2,value2

-
-

(Not officially supported at this time) If present, assigns an opacity value to a layer where layerX is the identifier of the layer as defined in the configuration file, and valueX is a real number in the range of 0 to 1 where 0 is fully - transparent and 1 is fully opaque. Any number of layer to opacity value mappings may be specified.

-
dataDownloadX -

If preset, activates the data download tab and selects the product X where X is the product identifier as defined in the configuration file.

-
+| Parameter | Value | Description | +| --------- | ----- | ----------- | +| `map` | `minX`,`minY`,`maxX`,`maxY` | Extent of the map view port in units are based on the projection selected (degrees for EPSG:4326, meters for others) | +| `products` | `baselayers`,`layer1`,`layer2~overlays`,`layer3`,`layer4` | Active layer list where layerX is the identifier of the layer as defined in the configuration file. Any number of layers may be specified in baselayers or overlays. Hidden layers are prefixed with a “!”. Delimiting layers with a “.” is supported but deprecated. | +| `time` | `YYYY-MM-DD` | Selected UTC day. | +| `p` | `geographic`,`arctic`,`antarctic` | Selected projection. | +| `palettes` | `layer1`,`palette1~layer2`,`palette2` | If present, assigns a custom palette to a layer where layerX is the identifier of the layer and paletteX is the identifier of the palette as defined in the configuration file. Any number of layer to palette mappings may be specified. | +| `opacity` | `layer1`,`value1~layer2`,`value2` | (Not officially supported at this time) If present, assigns an opacity value to a layer where layerX is the identifier of the layer as defined in the configuration file, and valueX is a real number in the range of 0 to 1 where 0 is fully transparent and 1 is fully opaque. Any number of layer to opacity value mappings may be specified. | +| `dataDownload` | product identifier | If set, activates the data download tab and selects the product. | ### Internal - - - - - - - - - - - - - - - - - - - - -
ParameterValueDescription
epsgX -

The current EPSG code for the selected projection where X is either:

-
    -
  • 4326: Geographic
  • -
  • 3413: Arctic
  • -
  • 3995: Arctic (older data)
  • -
  • 3031: Antarctic
  • -
-
+| Parameter | Value | Description | +| --------- | ----- | ----------- | +| epsg | `4326` (geographic), `3413` (arctic), `3995` (arctic - old), `3031` (antarctic) | EPSG code for the selected projection | ### Debugging - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterValueDescription
mockCMRXDo not query CMR and fetch the static JSON file found at mock/cmr.cgi-X
timeoutCMRXOverride the CMR timeout value to X milliseconds
mockMaptrueIf any value is specified, do not fetch tiles from remote sources and display a blank map
mockEventsXUse the static JSON file with event feeds found at mock/events\_data.json-X
mockCategoriesXUse the static JSON file with categories feeds found at mock/categories\_data.json-X
mockSourcesXUse the static JSON file with sources feeds found at mock/sources\_data.json-X
modalView - categories, - measurements, - layers - Forces the 'Add Layers' modal to display categories, measurements or layers. - By default Artic/Antarctic shows measurements and Geographic shows categories.
imagegenXUse the endpoint - http://map2.vis.earthdata.nasa.gov/imagegen/index-X.php for image download -
loadDelayXAfter loading all resources, wait X milliseconds before starting to simulate loading Worldview over a slow connection.
nowYYYY-MM-DDTHH:MMOverride the value the Worldview uses for the current date and time. This only works when using the Worldview.now() function.
markPalettestrueIf any value is specified, layers with an assigned palette will be marked in red in the Add Layers tab
markDownloadstrueIf any value is specified, layers that can be downloaded will be marked in red in the Add Layers tab
debugPalettetrueIf any value is specified, a black debugging custom palette will be added to assist in finding invalid lookup table mappings.
showErrortrueIf any value is specified, an error dialog will be shown on startup.
webmercIf found in the query string, a menu item for Web Mercator becomes available.
+| Parameter | Value | Description | +| --------- | ----- | ----------- | +| mockCMR | boolean | Do not query CMR and fetch the static JSON file found at mock/cmr.cgi-X | +| timeoutCMR | ms | Override the CMR timeout value in milliseconds | +| mockMap | boolean | If any value is specified, do not fetch tiles from remote sources and display a blank map | +| mockEvents | boolean | Use the static JSON file with event feeds found at mock/events\_data.json-X | +| mockCategories | boolean | Use the static JSON file with categories feeds found at mock/categories\_data.json-X | +| mockSources | boolean | Use the static JSON file with sources feeds found at mock/sources\_data.json-X | +| modalView | `categories`, `measurements`, `layers` | Forces the 'Add Layers' modal to display categories, measurements or layers. By default Artic/Antarctic shows measurements and Geographic shows categories. | +| imagegen | boolean | Use the endpoint http://map2.vis.earthdata.nasa.gov/imagegen/index-X.php for image download | +| loadDelay | ms | After loading all resources, wait X milliseconds before starting. | +| now | `YYYY-MM-DDTHH:MM` | Override the value the Worldview uses for the current date and time. This only works when using the `now()` function from `js/util/util.js`. | +| markPalettes | boolean | If any value is specified, layers with an assigned palette will be marked in red in the Add Layers . | +| markDownloads | boolean | If any value is specified, layers that can be downloaded will be marked in red in the Add Layers tab. | +| debugPalette | boolean | If any value is specified, a black debugging custom palette will be added to assist in finding invalid lookup table mappings. | +| showError | boolean | If any value is specified, an error dialog will be shown on startup. | diff --git a/etc/dev/worldview-dev.httpd22.conf b/etc/dev/worldview-dev.httpd22.conf deleted file mode 100644 index 56ba20a25b..0000000000 --- a/etc/dev/worldview-dev.httpd22.conf +++ /dev/null @@ -1,10 +0,0 @@ -Alias /@WORLDVIEW@ @ROOT@/web -Alias /@WORLDVIEW@-release @ROOT@/build/@WORLDVIEW@/web -Alias /@WORLDVIEW@-debug @ROOT@/build/@WORLDVIEW@-debug/web - - - Options Indexes FollowSymLinks ExecCGI - AllowOverride All - Order allow,deny - Allow from all - diff --git a/etc/dev/worldview-dev.httpd24.conf b/etc/dev/worldview-dev.httpd24.conf deleted file mode 100644 index f382155c39..0000000000 --- a/etc/dev/worldview-dev.httpd24.conf +++ /dev/null @@ -1,9 +0,0 @@ -Alias /@WORLDVIEW@ @ROOT@/web -Alias /@WORLDVIEW@-release @ROOT@/build/site-@WORLDVIEW@/web -Alias /@WORLDVIEW@-debug @ROOT@/build/site-@WORLDVIEW@-debug/web - - - Options Indexes FollowSymLinks ExecCGI - AllowOverride All - Require all granted - diff --git a/etc/images/data-download-minus-button-blue.graffle b/etc/images/data-download-minus-button-blue.graffle deleted file mode 100644 index d6020b2190..0000000000 --- a/etc/images/data-download-minus-button-blue.graffle +++ /dev/null @@ -1,315 +0,0 @@ - - - - - ActiveLayerIndex - 0 - ApplicationVersion - - com.omnigroup.OmniGrafflePro - 139.17.0.185490 - - AutoAdjust - - BackgroundGraphic - - Bounds - {{0, 0}, {48, 48}} - Class - SolidGraphic - ID - 2 - Style - - shadow - - Draws - NO - - stroke - - Draws - NO - - - - BaseZoom - 0 - CanvasOrigin - {0, 0} - CanvasSize - {48, 48} - ColumnAlign - 1 - ColumnSpacing - 36 - CreationDate - 2013-06-13 11:43:49 +0000 - Creator - Mike McGann - DisplayScale - 1 pt = 1 pt - GraphDocumentVersion - 8 - GraphicsList - - - Bounds - {{22, 13}, {4, 22}} - Class - ShapedGraphic - ID - 30 - Layer - 0 - Rotation - 90 - Shape - Rectangle - Style - - stroke - - Draws - NO - Width - 0.5 - - - - - Bounds - {{2, 2}, {44, 44}} - Class - ShapedGraphic - ID - 28 - Layer - 1 - Shape - Circle - Style - - fill - - Color - - b - 1 - g - 0.501961 - r - 0 - - FillType - 2 - GradientAngle - 90 - GradientColor - - b - 1 - g - 0 - r - 0 - - - shadow - - Color - - b - 0 - g - 0 - r - 0 - - - stroke - - Color - - b - 1 - g - 1 - r - 1 - - - - Text - - VerticalPad - 0 - - - - GridInfo - - GridSpacing - 1 - ShowsGrid - YES - SnapsToGrid - YES - - GuidesLocked - NO - GuidesVisible - YES - HPages - 1 - ImageCounter - 1 - KeepToScale - - Layers - - - Lock - NO - Name - Plus Fill - Print - YES - View - YES - - - Lock - NO - Name - Base - Print - YES - View - YES - - - LayoutInfo - - Animate - NO - circoMinDist - 18 - circoSeparation - 0.0 - layoutEngine - dot - neatoSeparation - 0.0 - twopiSeparation - 0.0 - - LinksVisible - NO - MagnetsVisible - NO - MasterSheets - - ModificationDate - 2013-06-14 18:46:47 +0000 - Modifier - Mike McGann - NotesVisible - NO - Orientation - 2 - OriginVisible - NO - PageBreaks - YES - PrintInfo - - NSBottomMargin - - float - 41 - - NSHorizonalPagination - - coded - BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG - - NSLeftMargin - - float - 18 - - NSPaperSize - - size - {612, 792} - - NSPrintReverseOrientation - - int - 0 - - NSRightMargin - - float - 18 - - NSTopMargin - - float - 18 - - - PrintOnePage - - ReadOnly - NO - RowAlign - 1 - RowSpacing - 36 - SheetTitle - Canvas 1 - SmartAlignmentGuidesActive - NO - SmartDistanceGuidesActive - NO - UniqueID - 1 - UseEntirePage - - VPages - 1 - WindowInfo - - CurrentSheet - 0 - ExpandedCanvases - - Frame - {{572, 476}, {656, 620}} - ListView - - OutlineWidth - 142 - RightSidebar - - Sidebar - - SidebarWidth - 173 - VisibleRegion - {{-5.875, -7.875}, {60.375, 65.75}} - Zoom - 8 - ZoomValues - - - Canvas 1 - 8 - 1 - - - - - diff --git a/etc/images/data-download-plus-button-cyan.graffle b/etc/images/data-download-plus-button-cyan.graffle deleted file mode 100644 index e25908c368..0000000000 --- a/etc/images/data-download-plus-button-cyan.graffle +++ /dev/null @@ -1,342 +0,0 @@ - - - - - ActiveLayerIndex - 0 - ApplicationVersion - - com.omnigroup.OmniGrafflePro - 139.17.0.185490 - - AutoAdjust - - BackgroundGraphic - - Bounds - {{0, 0}, {48, 48}} - Class - SolidGraphic - ID - 2 - Style - - shadow - - Draws - NO - - stroke - - Draws - NO - - - - BaseZoom - 0 - CanvasOrigin - {0, 0} - CanvasSize - {48, 48} - ColumnAlign - 1 - ColumnSpacing - 36 - CreationDate - 2013-06-13 11:43:49 +0000 - Creator - Mike McGann - DisplayScale - 1 pt = 1 pt - GraphDocumentVersion - 8 - GraphicsList - - - Bounds - {{22, 13}, {4, 22}} - Class - ShapedGraphic - ID - 30 - Layer - 0 - Rotation - 90 - Shape - Rectangle - Style - - fill - - Color - - b - 0 - g - 0 - r - 0 - - - stroke - - Draws - NO - Width - 0.5 - - - - - Bounds - {{22, 13}, {4, 22}} - Class - ShapedGraphic - ID - 1 - Layer - 0 - Shape - Rectangle - Style - - fill - - Color - - b - 0 - g - 0 - r - 0 - - - stroke - - Draws - NO - Width - 0.5 - - - - - Bounds - {{2, 2}, {44, 44}} - Class - ShapedGraphic - ID - 28 - Layer - 1 - Shape - Circle - Style - - fill - - Color - - b - 1 - g - 1 - r - 0 - - FillType - 2 - GradientAngle - 90 - GradientColor - - b - 1 - g - 0.8 - r - 0.4 - - - - Text - - VerticalPad - 0 - - - - GridInfo - - GridSpacing - 1 - ShowsGrid - YES - SnapsToGrid - YES - - GuidesLocked - NO - GuidesVisible - YES - HPages - 1 - ImageCounter - 1 - KeepToScale - - Layers - - - Lock - NO - Name - Plus Fill - Print - YES - View - YES - - - Lock - NO - Name - Base - Print - YES - View - YES - - - LayoutInfo - - Animate - NO - circoMinDist - 18 - circoSeparation - 0.0 - layoutEngine - dot - neatoSeparation - 0.0 - twopiSeparation - 0.0 - - LinksVisible - NO - MagnetsVisible - NO - MasterSheets - - ModificationDate - 2013-06-17 13:25:03 +0000 - Modifier - Mike McGann - NotesVisible - NO - Orientation - 2 - OriginVisible - NO - PageBreaks - YES - PrintInfo - - NSBottomMargin - - float - 41 - - NSHorizonalPagination - - coded - BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG - - NSLeftMargin - - float - 18 - - NSPaperSize - - size - {612, 792} - - NSPrintReverseOrientation - - int - 0 - - NSRightMargin - - float - 18 - - NSTopMargin - - float - 18 - - - PrintOnePage - - ReadOnly - NO - RowAlign - 1 - RowSpacing - 36 - SheetTitle - Canvas 1 - SmartAlignmentGuidesActive - NO - SmartDistanceGuidesActive - NO - UniqueID - 1 - UseEntirePage - - VPages - 1 - WindowInfo - - CurrentSheet - 0 - ExpandedCanvases - - - name - Canvas 1 - - - Frame - {{313, 261}, {656, 620}} - ListView - - OutlineWidth - 142 - RightSidebar - - Sidebar - - SidebarWidth - 173 - VisibleRegion - {{-5.875, -7.875}, {60.375, 65.75}} - Zoom - 8 - ZoomValues - - - Canvas 1 - 8 - 1 - - - - - diff --git a/etc/images/date-mini.png b/etc/images/date-mini.png deleted file mode 100644 index 69723bc395..0000000000 Binary files a/etc/images/date-mini.png and /dev/null differ diff --git a/etc/images/fire-location.png b/etc/images/fire-location.png deleted file mode 100644 index 3e2900f136..0000000000 Binary files a/etc/images/fire-location.png and /dev/null differ diff --git a/etc/images/map-mini.png b/etc/images/map-mini.png deleted file mode 100644 index 7f81b79eae..0000000000 Binary files a/etc/images/map-mini.png and /dev/null differ diff --git a/etc/images/picker-mini.png b/etc/images/picker-mini.png deleted file mode 100644 index ce5256e379..0000000000 Binary files a/etc/images/picker-mini.png and /dev/null differ diff --git a/etc/images/toolbar-mini.png b/etc/images/toolbar-mini.png deleted file mode 100644 index 2a7f6d6602..0000000000 Binary files a/etc/images/toolbar-mini.png and /dev/null differ diff --git a/etc/ol3.build.json b/etc/ol3.build.json deleted file mode 100644 index d31bcffac1..0000000000 --- a/etc/ol3.build.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "exports": ["*"], - "compile": { - "externs": [ - "externs/geojson.js", - "externs/oli.js", - "externs/olx.js", - "externs/proj4js.js" - ], - "define": [ - "goog.dom.ASSUME_STANDARDS_MODE=true", - "goog.DEBUG=false" - ], - "compilation_level": "ADVANCED", - "output_wrapper": "(function(){%output%})();", - "use_types_for_optimization": true, - "manage_closure_dependencies": true - } -} diff --git a/etc/palettes/neo/amsre_sst.act b/etc/palettes/neo/amsre_sst.act deleted file mode 100644 index 03a95f378c..0000000000 Binary files a/etc/palettes/neo/amsre_sst.act and /dev/null differ diff --git a/etc/palettes/neo/amsre_sst_anom.act b/etc/palettes/neo/amsre_sst_anom.act deleted file mode 100644 index ecce2576d5..0000000000 Binary files a/etc/palettes/neo/amsre_sst_anom.act and /dev/null differ diff --git a/etc/palettes/neo/ceres_insol.act b/etc/palettes/neo/ceres_insol.act deleted file mode 100644 index 7ea58a82ba..0000000000 Binary files a/etc/palettes/neo/ceres_insol.act and /dev/null differ diff --git a/etc/palettes/neo/ceres_lw.act b/etc/palettes/neo/ceres_lw.act deleted file mode 100644 index 8804dc9027..0000000000 Binary files a/etc/palettes/neo/ceres_lw.act and /dev/null differ diff --git a/etc/palettes/neo/ceres_net.act b/etc/palettes/neo/ceres_net.act deleted file mode 100644 index 856b306c86..0000000000 Binary files a/etc/palettes/neo/ceres_net.act and /dev/null differ diff --git a/etc/palettes/neo/ceres_sw.act b/etc/palettes/neo/ceres_sw.act deleted file mode 100644 index b55e84952c..0000000000 Binary files a/etc/palettes/neo/ceres_sw.act and /dev/null differ diff --git a/etc/palettes/neo/giss_temp_anom.act b/etc/palettes/neo/giss_temp_anom.act deleted file mode 100644 index 296fbfbfd9..0000000000 Binary files a/etc/palettes/neo/giss_temp_anom.act and /dev/null differ diff --git a/etc/palettes/neo/grace_lwe_anom.act b/etc/palettes/neo/grace_lwe_anom.act deleted file mode 100644 index ce8e127e6e..0000000000 Binary files a/etc/palettes/neo/grace_lwe_anom.act and /dev/null differ diff --git a/etc/palettes/neo/index.json b/etc/palettes/neo/index.json deleted file mode 100644 index 164802f68e..0000000000 --- a/etc/palettes/neo/index.json +++ /dev/null @@ -1,99 +0,0 @@ -[ -{ - "id": "orange_1", - "name": "Orange 1", - "from": "NEO_Aerosol_Depth", - "input": "modis_aer_od.act" -}, -{ - "id": "blue_2", - "name": "Blue 2", - "from": "NEO_Cloud_Particle_Radius", - "input": "modis_cld_rd.act" -}, -{ - "id": "red_1", - "name": "Red 1", - "from": "NEO_Carbon_Monoxide", - "input": "mopitt_co.act" - -}, -{ - "id": "purple_1", - "name": "Purple 1", - "from": "NEO_Cirrus_Reflectance", - "input": "modis_cld_ci.act" -}, -{ - "id": "blue_9", - "name": "Blue 9", - "from": "NEO_Chlorophyll_Concentration", - "input": "modis_chlor.act" -}, -{ - "id": "blue_6", - "name": "Blue 6", - "from": "NEO_Cloud_Fraction", - "input": "modis_cld_fr.act" -}, -{ - "id": "blue_8", - "name": "Blue 8", - "from": "NEO_Cloud_Optical_Thickness", - "input": "modis_cld_ot.act" -}, -{ - "id": "blue_7", - "name": "Blue 7", - "from": "NEO_Cloud_Water_Content", - "input": "modis_cld_wp.act" -}, -{ - "id": "rainbow_1", - "name": "Rainbow 1", - "from": "NEO_Land_Surface_Temperature", - "input": "modis_lst.act" -}, -{ - "id": "blue_3", - "name": "Blue 3", - "from": "NEO_Ozone", - "input": "omi_ozone_to3.act" -}, -{ - "id": "blue_4", - "name": "Blue 4", - "from": "NEO_Rainfall", - "input": "trmm_rainfall.act" -}, -{ - "id": "purple_2", - "name": "Purple 2", - "from": "NEO_Sea_Temperature", - "input": "amsre_sst.act" -}, -{ - "id": "blue_5", - "name": "Blue 5", - "from": "NEO_Snow_Cover", - "input": "modis_snow.act" -}, -{ - "id": "red_2", - "name": "Red 2", - "from": "NEO_Solar_Insolation", - "input": "ceres_insol.act" -}, -{ - "id": "green_1", - "name": "Green 1", - "from": "NEO_Vegetation_Index", - "input": "modis_ndvi.act" -}, -{ - "id": "blue_1", - "name": "Blue 1", - "from": "NEO_Water_Vapor", - "input": "modis_sky_wv.act" -} -] diff --git a/etc/palettes/neo/modis_aer_od.act b/etc/palettes/neo/modis_aer_od.act deleted file mode 100644 index 70e5dd766f..0000000000 Binary files a/etc/palettes/neo/modis_aer_od.act and /dev/null differ diff --git a/etc/palettes/neo/modis_aer_ra.act b/etc/palettes/neo/modis_aer_ra.act deleted file mode 100644 index b439960b44..0000000000 Binary files a/etc/palettes/neo/modis_aer_ra.act and /dev/null differ diff --git a/etc/palettes/neo/modis_chlor.act b/etc/palettes/neo/modis_chlor.act deleted file mode 100644 index e4a691a8f5..0000000000 Binary files a/etc/palettes/neo/modis_chlor.act and /dev/null differ diff --git a/etc/palettes/neo/modis_cld_ci.act b/etc/palettes/neo/modis_cld_ci.act deleted file mode 100644 index 34e11886a6..0000000000 Binary files a/etc/palettes/neo/modis_cld_ci.act and /dev/null differ diff --git a/etc/palettes/neo/modis_cld_fr.act b/etc/palettes/neo/modis_cld_fr.act deleted file mode 100644 index fbe7e47524..0000000000 Binary files a/etc/palettes/neo/modis_cld_fr.act and /dev/null differ diff --git a/etc/palettes/neo/modis_cld_ot.act b/etc/palettes/neo/modis_cld_ot.act deleted file mode 100644 index 33a6d15d34..0000000000 Binary files a/etc/palettes/neo/modis_cld_ot.act and /dev/null differ diff --git a/etc/palettes/neo/modis_cld_rd.act b/etc/palettes/neo/modis_cld_rd.act deleted file mode 100644 index a266a464d7..0000000000 Binary files a/etc/palettes/neo/modis_cld_rd.act and /dev/null differ diff --git a/etc/palettes/neo/modis_cld_wp.act b/etc/palettes/neo/modis_cld_wp.act deleted file mode 100644 index 773738bc97..0000000000 Binary files a/etc/palettes/neo/modis_cld_wp.act and /dev/null differ diff --git a/etc/palettes/neo/modis_lai.act b/etc/palettes/neo/modis_lai.act deleted file mode 100644 index 6ebe80d0bc..0000000000 Binary files a/etc/palettes/neo/modis_lai.act and /dev/null differ diff --git a/etc/palettes/neo/modis_lst.act b/etc/palettes/neo/modis_lst.act deleted file mode 100644 index de034ee73a..0000000000 Binary files a/etc/palettes/neo/modis_lst.act and /dev/null differ diff --git a/etc/palettes/neo/modis_lst_anom.act b/etc/palettes/neo/modis_lst_anom.act deleted file mode 100644 index 828f3f7d8d..0000000000 Binary files a/etc/palettes/neo/modis_lst_anom.act and /dev/null differ diff --git a/etc/palettes/neo/modis_ndvi.act b/etc/palettes/neo/modis_ndvi.act deleted file mode 100644 index b7ae1aa4e1..0000000000 Binary files a/etc/palettes/neo/modis_ndvi.act and /dev/null differ diff --git a/etc/palettes/neo/modis_npp.act b/etc/palettes/neo/modis_npp.act deleted file mode 100644 index b7ae1aa4e1..0000000000 Binary files a/etc/palettes/neo/modis_npp.act and /dev/null differ diff --git a/etc/palettes/neo/modis_sky_wv.act b/etc/palettes/neo/modis_sky_wv.act deleted file mode 100644 index eb9fe2a963..0000000000 Binary files a/etc/palettes/neo/modis_sky_wv.act and /dev/null differ diff --git a/etc/palettes/neo/modis_snow.act b/etc/palettes/neo/modis_snow.act deleted file mode 100644 index 4760e0fc84..0000000000 Binary files a/etc/palettes/neo/modis_snow.act and /dev/null differ diff --git a/etc/palettes/neo/mopitt_co.act b/etc/palettes/neo/mopitt_co.act deleted file mode 100644 index 04fe989698..0000000000 Binary files a/etc/palettes/neo/mopitt_co.act and /dev/null differ diff --git a/etc/palettes/neo/omi_ozone_to3.act b/etc/palettes/neo/omi_ozone_to3.act deleted file mode 100644 index 297aae5a55..0000000000 Binary files a/etc/palettes/neo/omi_ozone_to3.act and /dev/null differ diff --git a/etc/palettes/neo/trmm_rainfall.act b/etc/palettes/neo/trmm_rainfall.act deleted file mode 100644 index a1117e7f18..0000000000 Binary files a/etc/palettes/neo/trmm_rainfall.act and /dev/null differ diff --git a/deploy/sources/httpd-debug.conf b/httpd-debug.conf similarity index 100% rename from deploy/sources/httpd-debug.conf rename to httpd-debug.conf diff --git a/deploy/sources/httpd.conf b/httpd.conf similarity index 100% rename from deploy/sources/httpd.conf rename to httpd.conf diff --git a/lib/joyride-2.0.3-3/Gruntfile.js b/lib/joyride-2.0.3-3/Gruntfile.js deleted file mode 100644 index e9909c4cd9..0000000000 --- a/lib/joyride-2.0.3-3/Gruntfile.js +++ /dev/null @@ -1,62 +0,0 @@ -module.exports = function(grunt) { - - var name = "joyride"; - var version = "2.0.3-3"; - var base = "tour"; - - var lib = "lib/" + name + "-" + version + "/"; - var ext = "web/ext/" + base + "/" + name + "-" + version + "/"; - var debug_js = ext + name + ".js"; - var debug_css = ext + name + ".css"; - var min_js = ext + name + ".min.js"; - var min_css = ext + name + ".min.css"; - - var css = [ - lib + "joyride.css" - ]; - - var js = [ - lib + "jquery.cookie.js", - lib + "jquery.joyride.js", - lib + "modernizr.mq.js" - ]; - - var uglifyFiles = {}; - uglifyFiles[min_js] = [debug_js]; - - var cssminFiles = {}; - cssminFiles[min_css] = [debug_css]; - - grunt.initConfig({ - concat: { - js: { - src: js, - dest: debug_js - }, - css: { - src: css, - dest: debug_css - } - }, - - uglify: { - js: { - files: uglifyFiles - } - }, - - cssmin: { - css: { - files: cssminFiles - } - } - }); - - grunt.file.setBase("../.."); - grunt.loadNpmTasks("grunt-contrib-concat"); - grunt.loadNpmTasks("grunt-contrib-cssmin"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - - grunt.registerTask("default", ["concat", "uglify", "cssmin"]); - -}; diff --git a/lib/joyride-2.0.3-3/demo-style.css b/lib/joyride-2.0.3-3/demo-style.css deleted file mode 100644 index f3141ce0c9..0000000000 --- a/lib/joyride-2.0.3-3/demo-style.css +++ /dev/null @@ -1,115 +0,0 @@ -/* These are just the demo styles and these can be removed and Orbit -will still work like a champ (except any content block needs a background which -our demo gets from this sheet) */ - -/* -------------------------------------------------- - Global Reset & Standards - -------------------------------------------------- */ - html, body { margin: 0; padding: 0; } - h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, img, small, strike, strong, em, sub, sup, tt, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td, section { margin: 0; padding: 0; border: 0; font-weight: normal; font-style: normal; font-size: 100%; line-height: 1; font-family: inherit; text-align: left; } - table { border-collapse: collapse; border-spacing: 0; } - ol, ul { list-style: none; } - - - -/* -------------------------------------------------- - :: Grid - -------------------------------------------------- */ - - .container { padding: 40px 20px 0 20px; } - - .row { width: 100%; max-width: 940px; min-width: 727px; margin: 0 auto; } - /* To fix the grid into a certain size, set max-width to width */ - .row .row { min-width: 0px; } - - .column, .columns { margin-left: 4.4%; float: left; min-height: 1px; position: relative; } - .column:first-child, .columns:first-child { margin-left: 0px; } - - .row .one.columns { width: 4.3%; } - .row .two.columns { width: 13%; } - .row .three.columns { width: 21.7%; } - .row .four.columns { width: 30.4%; } - .row .five.columns { width: 39.1%; } - .row .six.columns { width: 47.8%; } - .row .seven.columns { width: 56.5%; } - .row .eight.columns { width: 65.2%; } - .row .nine.columns { width: 73.9%; } - .row .ten.columns { width: 82.6%; } - .row .eleven.columns { width: 91.3%; } - .row .twelve.columns { width: 100%; } - - .row .offset-by-one { margin-left: 8.7%; } - .row .offset-by-two { margin-left: 17.4%; } - .row .offset-by-three { margin-left: 26.1%; } - .row .offset-by-four { margin-left: 34.8%; } - .row .offset-by-five { margin-left: 43.5%; } - .row .offset-by-six { margin-left: 52.2%; } - .row .offset-by-seven { margin-left: 60.9%; } - .row .offset-by-eight { margin-left: 69.6%; } - .row .offset-by-nine { margin-left: 78.3%; } - .row .offset-by-ten { margin-left: 87%; } - .row .offset-by-eleven { margin-left: 95.7%; } - - img, object, embed { max-width: 100%; } - img { -ms-interpolation-mode: bicubic; } - - - /* Clear the columns automagically */ - .row:after, .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } - .row:last-child:after { content: ""; } - * html .row, * html .clearfix { height: 1%; } - .row, .clearfix { display: inline-block; } - .row, .clearfix { display: block; } - - - - body { background: #fff; font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 13px; line-height: 18px; text-shadow: 0 0 1px rgba(0,0,0,0.01); color: #555; } - - p { - line-height: 1.25; - } - - h1 { - font-weight: bold; - color: #222; - font-size: 36px; - line-height: 1.5; - } - - h2 { - font-weight: bold; - color: #222; - font-size: 28px; - line-height: 1.25; - } - - h3 { - font-weight: bold; - color: #222; - font-size: 22px; - line-height: 1.25; - } - - h4 { - font-weight: bold; - color: #222; - font-size: 18px; - line-height: 1.25; - } - - h1 + a { - color: #00baff; - text-decoration: none; - font-weight: normal; - font-size: 20px; - } - - a:hover { text-decoration: underline; } - - hr { - margin: 20px 0; - border: solid 1px #ccc; - border-width: 1px 0 0 0; - } - - \ No newline at end of file diff --git a/lib/joyride-2.0.3-3/joyride.css b/lib/joyride-2.0.3-3/joyride.css deleted file mode 100644 index 2b313c5670..0000000000 --- a/lib/joyride-2.0.3-3/joyride.css +++ /dev/null @@ -1,320 +0,0 @@ -/* Artfully masterminded by ZURB */ -body { - position: relative; -} - -#joyRideTipContent { display: none; } - -/* Default styles for the container */ -.joyride-tip-guide { - position: absolute; - background: #000; - background: rgba(175, 181, 196, 1); - display: none; - color: rgb(38, 43, 49); - width: 350px; - z-index: 1050; - top: 0; /* keeps the page from scrolling when calculating position */ - left: 0; - font-family: "Gill Sans", sans-serif; - font-weight: normal; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} - -.joyride-content-wrapper { - padding: 10px 10px 15px 15px; -} - -.bordered { - border: #808080 solid 1px; -} - -.wide { - width:450px; -} - -/* Mobile */ -/* @media only screen and (max-width: 767px) */ -.joyride-tip-guide.mobile { - width: 95% !important; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - left: 2.5% !important; -} - -.joyride-tip-guide-wrapper.mobile { - width: 100%; -} - -/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ -.joyride-tip-guide span.joyride-nub { - display: block; - position: absolute; - left: 22px; - width: 0; - height: 0; - border: solid 14px; -} - -.joyride-tip-guide span.joyride-nub-border { - display: block; - position: absolute; - left: 22px; - width: 0; - height: 0; - border: solid #808080 15px; -} - -.joyride-tip-guide span.joyride-nub.top { - /* - IE7/IE8 Don't support rgba so we set the fallback - border color here. However, IE7/IE8 are also buggy - in that the fallback color doesn't work for - border-bottom-color so here we set the border-color - and override the top,left,right colors below. - */ - border-color: #000; - border-color: rgba(175, 181, 196, 1); - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - top: -28px; - left: 250px; - bottom: none; -} - -.joyride-tip-guide span.joyride-nub-border.top { - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - left: 249px; - top: -30px; -} - -.joyride-tip-guide span.joyride-nub.bottom { - /* - IE7/IE8 Don't support rgba so we set the fallback - border color here. However, IE7/IE8 are also buggy - in that the fallback color doesn't work for - border-top-color so here we set the border-color - and override the bottom,left,right colors below. - */ - border-color: #000; - border-color: rgba(175, 181, 196, 1) !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - left: 22px; - bottom: -28px; - bottom: none; -} - -.joyride-tip-guide span.joyride-nub-border.bottom { - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - left: 21px; - bottom: -30px; -} - -.joyride-tip-guide span.joyride-nub.right { - border-color: #000; - border-color: rgba(175, 181, 196, 1) !important; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - bottom: none; - left: auto; - right: -28px; -} - -.joyride-tip-guide span.joyride-nub-border.right { - border-top-color: transparent !important; - border-bottom-color: transparent !important; - border-right-color: transparent !important; - left: auto; - right: -30px; - top: 21px; - bottom: none; -} - -.joyride-tip-guide span.joyride-nub.left { - border-color: #000; - border-color: rgba(175, 181, 196, 1) !important; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: -28px; - right: auto; - bottom: none; -} - -.joyride-tip-guide span.joyride-nub-border.left { - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-top-color: transparent !important; - top: 21px; - left: -30px; - right: auto; - bottom: none; -} - -/* Typography */ -.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6 { - line-height: 1.25; - margin: 0; - font-weight: bold; - color: rgb(38, 43, 49); -} -.joyride-tip-guide h1 { font-size: 30px; } -.joyride-tip-guide h2 { font-size: 26px; } -.joyride-tip-guide h3 { color:rgb(38, 43, 49); font: 18px "Gill Sans", sans-serif; font-weight:400; text-decoration:none; } -.joyride-tip-guide h4 { font-size: 18px; } -.joyride-tip-guide h5 { font-size: 16px; } -.joyride-tip-guide h6 { font-size: 14px; } -.joyride-tip-guide p { - margin: 0 0 14px 0; - font-size: 12px; - line-height: 1; -} - -.joyride-tip-guide ul { - margin: 0 0 14px 0; - font-size: 12px; - line-height: 1; -} - -.joyride-tip-guide a { - color: rgb(0, 0, 0); - text-decoration: none; - border-bottom: dotted 1px rgba(255,255,255,0.6); -} - -.joyride-tip-guide a:hover { - color: rgb(0, 0, 0); - border-bottom: none; -} - -/* Button Style */ -.joyride-tip-guide .joyride-next-tip { - width: auto; - float: right; - padding: 6px 18px 4px; - font-size: 13px; - border:1px solid #d7dada; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - text-align: center; - color: #000000; - background-color: #f4f5f5; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f5f5), color-stop(100%, #dfdddd)); - background-image: -webkit-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -moz-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -ms-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -o-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: linear-gradient(top, #f4f5f5, #dfdddd);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#f4f5f5, endColorstr=#dfdddd); -} - - -.joyride-next-tip:hover { - border:1px solid #bfc4c4; - background-color: #d9dddd; - color: #000000; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d9dddd), color-stop(100%, #c6c3c3)); - background-image: -webkit-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -moz-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -ms-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -o-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: linear-gradient(top, #d9dddd, #c6c3c3);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#d9dddd, endColorstr=#c6c3c3); -} - - -/*BETH*/ -.joyride-tip-guide .joyride-prev-tip { - width: auto; - float: left; - padding: 6px 18px 4px; - font-size: 13px; - border:1px solid #d7dada; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; - text-align: center; - color: #000000; - background-color: #f4f5f5; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f5f5), color-stop(100%, #dfdddd)); - background-image: -webkit-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -moz-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -ms-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: -o-linear-gradient(top, #f4f5f5, #dfdddd); - background-image: linear-gradient(top, #f4f5f5, #dfdddd);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#f4f5f5, endColorstr=#dfdddd); -} - -/*BETH*/ - -.joyride-prev-tip:hover { - border:1px solid #bfc4c4; - background-color: #d9dddd; - color: #000000; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d9dddd), color-stop(100%, #c6c3c3)); - background-image: -webkit-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -moz-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -ms-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: -o-linear-gradient(top, #d9dddd, #c6c3c3); - background-image: linear-gradient(top, #d9dddd, #c6c3c3);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#d9dddd, endColorstr=#c6c3c3); -} - -.joyride-timer-indicator-wrap { - width: 50px; - height: 3px; - border: solid 1px rgba(255,255,255,0.1); - position: absolute; - right: 17px; - bottom: 16px; -} - -.joyride-timer-indicator { - display: block; - width: 0; - height: inherit; - background: rgba(255,255,255,0.25); -} - -.joyride-close-tip { - position: absolute; - right: 10px; - top: 10px; - color: rgba(38, 43, 49, 0.4) !important; - text-decoration: none; - font-family: Verdana, sans-serif; - font-size: 10px; - font-weight: bold; - border-bottom: none !important; -} - -.joyride-close-tip:hover { - color: rgba(38, 43, 49, 0.9) !important; -} - -.joyride-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: rgb(0,0,0); - background: transparent; - background: rgba(0,0,0, 0.5); - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; - filter: alpha(opacity=50); - opacity: 0.5; - z-index: 100; - display: none; - top: 0; - left: 0; - cursor: pointer; -} diff --git a/lib/joyride-2.0.3-3/jquery.cookie.js b/lib/joyride-2.0.3-3/jquery.cookie.js deleted file mode 100644 index 68db832b0f..0000000000 --- a/lib/joyride-2.0.3-3/jquery.cookie.js +++ /dev/null @@ -1,72 +0,0 @@ -/*jshint eqnull:true */ -/*! - * jQuery Cookie Plugin v1.2 - * https://github.com/carhartl/jquery-cookie - * - * Copyright 2011, Klaus Hartl - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://www.opensource.org/licenses/mit-license.php - * http://www.opensource.org/licenses/GPL-2.0 - */ -(function ($, document, undefined) { - - var pluses = /\+/g; - - function raw(s) { - return s; - } - - function decoded(s) { - return decodeURIComponent(s.replace(pluses, ' ')); - } - - $.cookie = function (key, value, options) { - - // key and at least value given, set cookie... - if (value !== undefined && !/Object/.test(Object.prototype.toString.call(value))) { - options = $.extend({}, $.cookie.defaults, options); - - if (value === null) { - options.expires = -1; - } - - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setDate(t.getDate() + days); - } - - value = String(value); - - return (document.cookie = [ - encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // key and possibly options given, get cookie... - options = value || $.cookie.defaults || {}; - var decode = options.raw ? raw : decoded; - var cookies = document.cookie.split('; '); - for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) { - if (decode(parts.shift()) === key) { - return decode(parts.join('=')); - } - } - - return null; - }; - - $.cookie.defaults = {}; - - $.removeCookie = function (key, options) { - if ($.cookie(key, options) !== null) { - $.cookie(key, null, options); - return true; - } - return false; - }; - -})(jQuery, document); \ No newline at end of file diff --git a/lib/joyride-2.0.3-3/jquery.joyride.js b/lib/joyride-2.0.3-3/jquery.joyride.js deleted file mode 100644 index 2ca2d5bdfe..0000000000 --- a/lib/joyride-2.0.3-3/jquery.joyride.js +++ /dev/null @@ -1,960 +0,0 @@ -/* - * jQuery Foundation Joyride Plugin 2.0.3 - * http://foundation.zurb.com - * Copyright 2012, ZURB - * Free to use under the MIT license. - * http://www.opensource.org/licenses/mit-license.php -*/ - -/*jslint unparam: true, browser: true, indent: 2 */ - -;(function ($, window, undefined) { - 'use strict'; - - var defaults = { - 'version' : '2.0.3', - 'tipLocation' : 'bottom', // 'top' or 'bottom' in relation to parent - 'nubPosition' : 'auto', // override on a per tooltip bases - 'scrollSpeed' : 300, // Page scrolling speed in milliseconds - 'timer' : 0, // 0 = no timer , all other numbers = timer in milliseconds - 'startTimerOnClick' : true, // true or false - true requires clicking the first button start the timer - 'startOffset' : 0, // the index of the tooltip you want to start on (index of the li) - 'nextButton' : true, // true or false to control whether a next button is used - 'prevButton' : false, // true or false to control whether a previous button is used - 'tipAnimation' : 'fade', // 'pop' or 'fade' in each tip - 'pauseAfter' : [], // array of indexes where to pause the tour after - 'tipAnimationFadeSpeed': 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition - 'cookieMonster' : false, // true or false to control whether cookies are used - 'cookieName' : 'joyride', // Name the cookie you'll use - 'cookieDomain' : false, // Will this cookie be attached to a domain, ie. '.notableapp.com' - 'tipContainer' : 'body', // Where will the tip be attached - 'postRideCallback' : $.noop, // A method to call once the tour closes (canceled or complete) - 'postStepCallback' : $.noop, // A method to call after each step - 'bordered' : false, // true or false to control whether a border is shown - 'includepage' : false, // true or false to control whether a page number is shown under the next button - 'adjustForPhone' : true, // change window position for phones (if false, windows show in default position) - 'template' : { // HTML segments for tip layout - 'link' : 'X', - 'timer' : '
', - 'tip' : '
', - 'nub' : '', - 'tipborder' : '', - 'wrapper' : '
', - 'button' : '', - 'prevbutton' : '' - } - }, - - Modernizr = Modernizr || false, - - settings = {}, - - methods = { - - init : function (opts) { - return this.each(function () { - - if ($.isEmptyObject(settings)) { - settings = $.extend(true, defaults, opts); - - // non configurable settings - settings.document = window.document; - settings.$document = $(settings.document); - settings.$window = $(window); - settings.$content_el = $(this); - settings.body_offset = $(settings.tipContainer).position(); - settings.$tip_content = $('> li', settings.$content_el); - settings.paused = false; - settings.attempts = 0; - - settings.tipLocationPatterns = { - top: ['bottom'], - bottom: [], // bottom should not need to be repositioned - left: ['right', 'top', 'bottom'], - right: ['left', 'top', 'bottom'] - }; - - // are we using jQuery 1.7+ - methods.jquery_check(); - - // can we create cookies? - if (!$.isFunction($.cookie)) { - settings.cookieMonster = false; - } - - // generate the tips and insert into dom. - if (!settings.cookieMonster || !$.cookie(settings.cookieName)) { - - settings.$tip_content.each(function (index) { - methods.create({$li : $(this), index : index}); - }); - - // show first tip - if (!settings.startTimerOnClick && settings.timer > 0) { - methods.show('init'); - methods.startTimer(); - } else { - methods.show('init'); - } - - } - - settings.$document.on('click', '.joyride-next-tip, .joyride-modal-bg', function (e) { - if(e.target.text === "Next" || e.target.text === "Finish") { - e.preventDefault(); - e.stopImmediatePropagation(); - if (settings.$li.next().length < 1) { - methods.end("next"); - } else if (settings.timer > 0) { - clearTimeout(settings.automate); - methods.hide("next"); - methods.show(); - methods.startTimer(); - } else { - methods.hide("next"); - methods.show(); - }} - }); - - //BETH - settings.$document.on('click.joyride', '.joyride-prev-tip, .joyride-modal-bg', function (e) { - if(e.target.text === "Prev") { - e.preventDefault(); - e.stopImmediatePropagation(); - if (settings.$li.prev().length < 1) { - methods.end("previous"); - } else if (settings.timer > 0) { - clearTimeout(settings.automate); - methods.hideNoCallback(); - methods.showPrev(); - methods.startTimer(); - } else { - //methods.hideNoCallback(); - methods.hide("previous"); - methods.showPrev(); - }} - - }); - //END BETH - - settings.$document.on('click.joyride', '.joyride-close-tip', function (e) { - if(e.target.text === "X") { - e.preventDefault(); - methods.endNoCallback(); - } - }); - - settings.$window.bind('resize.joyride', function (e) { - if (methods.is_phone()) { - methods.pos_phone(); - } else { - methods.pos_default(); - } - }); - } else { - methods.restart(); - } - - }); - }, - - // call this method when you want to resume the tour - resume : function () { - methods.set_li(); - methods.show(); - }, - - tip_template : function (opts) { - var $blank, content; - - // vars - var opts_arr = (opts.li.data('options') || ':').split(';'); - var opts_len = opts_arr.length; - var ii, p; - var isBordered = settings.bordered; - var isShifted = settings.shiftedArrow; - var usePage = settings.includepage; - - opts.tip_class = opts.tip_class || ''; - if(isBordered) { - opts.tip_class += " bordered"; - } - - $blank = $(settings.template.tip).addClass(opts.tip_class); - - content = $.trim($(opts.li).html()) + - methods.button_text(opts.button_text, opts.li) + - settings.template.link + - methods.timer_instance(opts.index); - if(usePage) { - var numpages = settings.$content_el[0].children.length; - var page = opts.index + 1; - var pagestr = "

(page " + page + " of " + numpages + ")

" - content += pagestr; - } - if(isBordered) { - $blank.append($(settings.template.tipborder)); - } - $blank.append($(settings.template.nub)); - $blank.append($(settings.template.wrapper)); - $blank.first().attr('data-index', opts.index); - $('.joyride-content-wrapper', $blank).append(content); - - return $blank[0]; - }, - - timer_instance : function (index) { - var txt; - - if ((index === 0 && settings.startTimerOnClick && settings.timer > 0) || settings.timer === 0) { - txt = ''; - } else { - txt = methods.outerHTML($(settings.template.timer)[0]); - } - return txt; - }, - - button_text : function (txt, li) { - //BETH - // vars - var opts_arr = (li.data('options') || ':').split(';'); - var opts_len = opts_arr.length; - var ii, p; - var hasPrev, hasNext, prev; - - // parse options - for (ii = opts_len - 1; ii >= 0; ii--) { - p = opts_arr[ii].split(':'); - - if (p.length === 2) { - if(p[0] == "prevButton") { - if(p[1] == "true") { - hasPrev = true; - } - else { - hasPrev = false; - } - } - if(p[0] == "nextButton") { - if(p[1] == "true") { - hasNext = true; - } - else { - hasNext = false; - } - } - } - } - - // fill in defaults if buttons were not specified - if(hasPrev === undefined) { - hasPrev = settings.prevButton; - } - if(hasNext === undefined) { - hasNext = settings.nextButton; - } - - // construct and return button string - if (hasPrev) { - prev = 'Prev'; - prev = methods.outerHTML($(settings.template.prevbutton).append(prev)[0]); - } else { - prev = ''; - } - if (hasNext) { - txt = $.trim(txt) || 'Next'; - txt = methods.outerHTML($(settings.template.button).append(txt)[0]); - } else { - txt = ''; - } - return prev + txt + "

"; - //END BETH - }, - - create : function (opts) { - // backwards compatibility with data-text attribute - var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'), - tipClass = opts.$li.attr('class'), - $tip_content = $(methods.tip_template({ - tip_class : tipClass, - index : opts.index, - button_text : buttonText, - li : opts.$li, - })); - - $(settings.tipContainer).append($tip_content); - }, - - show : function (init) { - var opts = {}, ii, opts_arr = [], opts_len = 0, p, - $timer = null; - - // are we paused? - if (settings.$li === undefined || ($.inArray(settings.$li.index(), settings.pauseAfter) === -1)) { - - // don't go to the next li if the tour was paused - if (settings.paused) { - settings.paused = false; - } else { - methods.set_li(init); - } - - settings.attempts = 0; - if (settings.$li.length && settings.$target.length > 0) { - opts_arr = (settings.$li.data('options') || ':').split(';'); - opts_len = opts_arr.length; - - // parse options - for (ii = opts_len - 1; ii >= 0; ii--) { - p = opts_arr[ii].split(':'); - - if (p.length === 2) { - opts[$.trim(p[0])] = $.trim(p[1]); - } - } - - settings.tipSettings = $.extend({}, settings, opts); - - settings.tipSettings.tipLocationPattern = settings.tipLocationPatterns[settings.tipSettings.tipLocation]; - - // scroll if not modal - if (!/body/i.test(settings.$target.selector)) { - methods.scroll_to(); - } - - if (methods.is_phone()) { - methods.pos_phone(true); - } else { - methods.pos_default(true); - } - $timer = $('.joyride-timer-indicator', settings.$next_tip); - - if (/pop/i.test(settings.tipAnimation)) { - $timer.outerWidth(0); - - if (settings.timer > 0) { - - settings.$next_tip.show(); - $timer.animate({ - width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth() - }, settings.timer); - - } else { - settings.$next_tip.show(); - - } - - - } else if (/fade/i.test(settings.tipAnimation)) { - $timer.outerWidth(0); - - if (settings.timer > 0) { - - settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed); - settings.$next_tip.show(); - $timer.animate({ - width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth() - }, settings.timer); - - } else { - settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed); - - } - } - - settings.$current_tip = settings.$next_tip; - - // skip non-existent targets - } else if (settings.$li && settings.$target.length < 1) { - //console.log("showNext2 nubposition = " + settings.tipSettings.nubPosition); - methods.show(); - - } else { - - methods.end("next"); - - } - } else { - - settings.paused = true; - - } - - }, - - //BETH - showPrev : function (init) { - var opts = {}, ii, opts_arr = [], opts_len = 0, p, - $timer = null; - - // are we paused? - if (settings.$li === undefined || ($.inArray(settings.$li.index(), settings.pauseAfter) === -1)) { - // don't go to the next li if the tour was paused - if (settings.paused) { - settings.paused = false; - } else { - methods.set_li_prev(init); - } - - settings.attempts = 0; - - if (settings.$li.length && settings.$target.length > 0) { - opts_arr = (settings.$li.data('options') || ':').split(';'); - opts_len = opts_arr.length; - - // parse options - for (ii = opts_len - 1; ii >= 0; ii--) { - p = opts_arr[ii].split(':'); - - if (p.length === 2) { - opts[$.trim(p[0])] = $.trim(p[1]); - } - } - - settings.tipSettings = $.extend({}, settings, opts); - - settings.tipSettings.tipLocationPattern = settings.tipLocationPatterns[settings.tipSettings.tipLocation]; - - // scroll if not modal - if (!/body/i.test(settings.$target.selector)) { - methods.scroll_to(); - } - - if (methods.is_phone()) { - methods.pos_phone(true); - } else { - methods.pos_default_prev(true); - } - $timer = $('.joyride-timer-indicator', settings.$prev_tip); - - if (/pop/i.test(settings.tipAnimation)) { - - $timer.outerWidth(0); - - if (settings.timer > 0) { - - settings.$prev_tip.show(); - $timer.animate({ - width: $('.joyride-timer-indicator-wrap', settings.$prev_tip).outerWidth() - }, settings.timer); - - } else { - - settings.$prev_tip.show(); - - } - - - } else if (/fade/i.test(settings.tipAnimation)) { - - $timer.outerWidth(0); - - if (settings.timer > 0) { - - settings.$prev_tip.fadeIn(settings.tipAnimationFadeSpeed); - - settings.$prev_tip.show(); - $timer.animate({ - width: $('.joyride-timer-indicator-wrap', settings.$prev_tip).outerWidth() - }, settings.timer); - - } else { - - settings.$prev_tip.fadeIn(settings.tipAnimationFadeSpeed); - - } - } - - settings.$current_tip = settings.$prev_tip; - - // skip non-existent targets - } else if (settings.$li && settings.$target.length < 1) { - - methods.showPrev(); - - } else { - - methods.end("previous"); - - } - } else { - - settings.paused = true; - - } - - }, - //END BETH - - // detect phones with media queries if supported. - is_phone : function () { - if(settings.adjustForPhone) { - //console.log("adjustForPhone"); - if (Modernizr) { - return Modernizr.mq('only screen and (max-width: 767px)'); - } - - return (settings.$window.width() < 767) ? true : false; - } - else { - //console.log("no adjustForPhone"); - return false; - } - }, - - hide : function (button) { - settings.postStepCallback(settings.$li.index(), settings.$current_tip, button); - $('.joyride-modal-bg').hide(); - settings.$current_tip.hide(); - }, - - hideNoCallback : function () { - $('.joyride-modal-bg').hide(); - settings.$current_tip.hide(); - }, - - set_li : function (init) { - if (init) { - settings.$li = settings.$tip_content.eq(settings.startOffset); - methods.set_next_tip(); - settings.$current_tip = settings.$next_tip; - } else { - settings.$li = settings.$li.next(); - methods.set_next_tip(); - } - - methods.set_target(); - }, - - //BETH - set_li_prev : function (init) { - if (init) { - settings.$li = settings.$tip_content.eq(settings.startOffset); - methods.set_prev_tip(); - settings.$current_tip = settings.$prev_tip; - } else { - settings.$li = settings.$li.prev(); - methods.set_prev_tip(); - } - - methods.set_target(); - }, - //END BETH - - set_next_tip : function () { - settings.$next_tip = $('.joyride-tip-guide[data-index=' + settings.$li.index() + ']'); - }, - - //BETH - set_prev_tip : function () { - settings.$prev_tip = $('.joyride-tip-guide[data-index=' + settings.$li.index() + ']'); - }, - //END BETH - - set_target : function () { - var cl = settings.$li.attr('data-class'), - id = settings.$li.attr('data-id'), - - $sel = function () { - if (id) { - return $(settings.document.getElementById(id)); - } else if (cl) { - return $('.' + cl).first(); - } else { - return $('body'); - } - }; - - settings.$target = $sel(); - }, - - scroll_to : function () { - var window_half, tipOffset; - - window_half = settings.$window.height() / 2; - tipOffset = Math.ceil(settings.$target.offset().top - window_half + settings.$next_tip.outerHeight()); - - $("html, body").stop().animate({ - scrollTop: tipOffset - }, settings.scrollSpeed); - }, - - paused : function () { - if (($.inArray((settings.$li.index() + 1), settings.pauseAfter) === -1)) { - return true; - } - - return false; - }, - - destroy : function () { - settings.$document.off('.joyride'); - $(window).off('.joyride'); - $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride'); - $('.joyride-tip-guide, .joyride-modal-bg').remove(); - clearTimeout(settings.automate); - settings = {}; - }, - - restart : function () { - methods.hide("restart"); - settings.$li = undefined; - methods.show('init'); - }, - - pos_default : function (init) { - var half_fold = Math.ceil(settings.$window.height() / 2), - tip_position = settings.$next_tip.offset(), - $nub = $('.joyride-nub', settings.$next_tip), - $border = $('.joyride-nub-border', settings.$next_tip), - nub_height = Math.ceil($nub.outerHeight() / 2), - toggle = init || false; - - settings.$next_tip.removeClass("mobile"); - - // tip must not be "display: none" to calculate position - if (toggle) { - settings.$next_tip.css('visibility', 'hidden'); - settings.$next_tip.show(); - } - - if (!/body/i.test(settings.$target.selector)) { - - if (methods.bottom()) { - - settings.$next_tip.css({ - top: (settings.$target.offset().top + nub_height + settings.$target.outerHeight()), - left: settings.$target.offset().left}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'top'); - - } else if (methods.top()) { - - settings.$next_tip.css({ - top: (settings.$target.offset().top - settings.$next_tip.outerHeight() - nub_height), - left: settings.$target.offset().left}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'bottom'); - - } else if (methods.right()) { - settings.$next_tip.css({ - top: settings.$target.offset().top, - left: (settings.$target.outerWidth() + settings.$target.offset().left + 20)}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'left'); - - } else if (methods.left()) { - - settings.$next_tip.css({ - top: settings.$target.offset().top, - left: (settings.$target.offset().left - settings.$next_tip.outerWidth() - nub_height)}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'right'); - - } - - if (!methods.visible(methods.corners(settings.$next_tip)) && settings.attempts < settings.tipSettings.tipLocationPattern.length) { - $nub.removeClass('bottom') - .removeClass('top') - .removeClass('right') - .removeClass('left'); - - settings.tipSettings.tipLocation = settings.tipSettings.tipLocationPattern[settings.attempts]; - - settings.attempts++; - - methods.pos_default(true); - - } - - } else if (settings.$li.length) { - - methods.pos_modal($nub); - - } - - if (toggle) { - settings.$next_tip.hide(); - settings.$next_tip.css('visibility', 'visible'); - } - - }, - - pos_default_prev : function (init) { - var half_fold = Math.ceil(settings.$window.height() / 2), - tip_position = settings.$prev_tip.offset(), - $nub = $('.joyride-nub', settings.$prev_tip), - $border = $('.joyride-nub-border', settings.$prev_tip), - nub_height = Math.ceil($nub.outerHeight() / 2), - toggle = init || false; - - settings.$next_tip.addClass("mobile"); - - // tip must not be "display: none" to calculate position - if (toggle) { - settings.$prev_tip.css('visibility', 'hidden'); - settings.$prev_tip.show(); - } - - if (!/body/i.test(settings.$target.selector)) { - - if (methods.bottom()) { - settings.$prev_tip.css({ - top: (settings.$target.offset().top + nub_height + settings.$target.outerHeight()), - left: settings.$target.offset().left}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'top'); - - } else if (methods.top()) { - - settings.$prev_tip.css({ - top: (settings.$target.offset().top - settings.$prev_tip.outerHeight() - nub_height), - left: settings.$target.offset().left}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'bottom'); - - } else if (methods.right()) { - - settings.$prev_tip.css({ - top: settings.$target.offset().top, - left: (settings.$target.outerWidth() + settings.$target.offset().left + 20)}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'left'); - - } else if (methods.left()) { - - settings.$prev_tip.css({ - top: settings.$target.offset().top, - left: (settings.$target.offset().left - settings.$prev_tip.outerWidth() - nub_height)}); - methods.nub_position($nub, $border, settings.tipSettings.nubPosition, 'right'); - - } - - if (!methods.visible(methods.corners(settings.$prev_tip)) && settings.attempts < settings.tipSettings.tipLocationPattern.length) { - $nub.removeClass('bottom') - .removeClass('top') - .removeClass('right') - .removeClass('left'); - - settings.tipSettings.tipLocation = settings.tipSettings.tipLocationPattern[settings.attempts]; - - settings.attempts++; - - methods.pos_default_prev(true); - - } - - } else if (settings.$li.length) { - - methods.pos_modal($nub); - - } - - if (toggle) { - settings.$prev_tip.hide(); - settings.$prev_tip.css('visibility', 'visible'); - } - - }, - - pos_phone : function (init) { - //console.log("pos_phone"); - var tip_height = settings.$next_tip.outerHeight(), - tip_offset = settings.$next_tip.offset(), - target_height = settings.$target.outerHeight(), - $nub = $('.joyride-nub', settings.$next_tip), - nub_height = Math.ceil($nub.outerHeight() / 2), - toggle = init || false; - - $nub.removeClass('bottom') - .removeClass('top') - .removeClass('right') - .removeClass('left'); - - settings.$next_tip.addClass("mobile"); - - if (toggle) { - settings.$next_tip.css('visibility', 'hidden'); - settings.$next_tip.show(); - } - - if (!/body/i.test(settings.$target.selector)) { - - if (methods.top()) { - - settings.$next_tip.offset({top: settings.$target.offset().top - tip_height - nub_height}); - $nub.addClass('bottom'); - - } else { - - settings.$next_tip.offset({top: settings.$target.offset().top + target_height + nub_height}); - $nub.addClass('top'); - - } - - } else if (settings.$li.length) { - - methods.pos_modal($nub); - - } - - if (toggle) { - settings.$next_tip.hide(); - settings.$next_tip.css('visibility', 'visible'); - } - }, - - pos_modal : function ($nub) { - methods.center(); - $nub.hide(); - - if ($('.joyride-modal-bg').length < 1) { - $('body').append('
').show(); - } - - if (/pop/i.test(settings.tipAnimation)) { - $('.joyride-modal-bg').show(); - } else { - $('.joyride-modal-bg').fadeIn(settings.tipAnimationFadeSpeed); - } - }, - - center : function () { - var $w = settings.$window; - - settings.$next_tip.css({ - top : ((($w.height() - settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()), - left : ((($w.width() - settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft()) - }); - - return true; - }, - - bottom : function () { - return /bottom/i.test(settings.tipSettings.tipLocation); - }, - - top : function () { - return /top/i.test(settings.tipSettings.tipLocation); - }, - - right : function () { - return /right/i.test(settings.tipSettings.tipLocation); - }, - - left : function () { - return /left/i.test(settings.tipSettings.tipLocation); - }, - - corners : function (el) { - var w = settings.$window, - right = w.width() + w.scrollLeft(), - bottom = w.height() + w.scrollTop(); - - return [ - el.offset().top <= w.scrollTop(), - right <= el.offset().left + el.outerWidth(), - bottom <= el.offset().top + el.outerHeight(), - w.scrollLeft() >= el.offset().left - ]; - }, - - visible : function (hidden_corners) { - var i = hidden_corners.length; - - while (i--) { - if (hidden_corners[i]) return false; - } - - return true; - }, - - nub_position : function (nub, border, pos, def) { - if (pos === 'auto') { - nub.addClass(def); - border.addClass(def); - } else { - nub.addClass(pos); - border.addClass(pos); - } - }, - - startTimer : function () { - if (settings.$li.length) { - settings.automate = setTimeout(function () { - methods.hide("timer"); - methods.show(); - methods.startTimer(); - }, settings.timer); - } else { - clearTimeout(settings.automate); - } - }, - - end : function (button) { - if (settings.cookieMonster) { - $.cookie(settings.cookieName, 'ridden', { expires: 365, domain: settings.cookieDomain }); - } - - if (settings.timer > 0) { - clearTimeout(settings.automate); - } - - $('.joyride-modal-bg').hide(); - settings.$current_tip.hide(); - settings.postStepCallback(settings.$li.index(), settings.$current_tip, button); - settings.postRideCallback(settings.$li.index(), settings.$current_tip, button); - methods.destroy(); - }, - - endNoCallback : function() { - if (settings.cookieMonster) { - $.cookie(settings.cookieName, 'ridden', { expires: 365, domain: settings.cookieDomain }); - } - - if (settings.timer > 0) { - clearTimeout(settings.automate); - } - - $('.joyride-modal-bg').hide(); - settings.$current_tip.hide(); - methods.destroy(); - }, - - jquery_check : function () { - // define on() and off() for older jQuery - if (!$.isFunction($.fn.on)) { - - $.fn.on = function (types, sel, fn) { - - return this.delegate(sel, types, fn); - - }; - - $.fn.off = function (types, sel, fn) { - - return this.undelegate(sel, types, fn); - - }; - - return false; - } - - return true; - }, - - outerHTML : function (el) { - // support FireFox < 11 - return el.outerHTML || new XMLSerializer().serializeToString(el); - }, - - version : function () { - return settings.version; - } - - }; - - $.fn.joyride = function (method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - $.error('Method ' + method + ' does not exist on jQuery.joyride'); - } - }; - -}(jQuery, this)); diff --git a/lib/joyride-2.0.3-3/modernizr.mq.js b/lib/joyride-2.0.3-3/modernizr.mq.js deleted file mode 100644 index 9e1d0d53c9..0000000000 --- a/lib/joyride-2.0.3-3/modernizr.mq.js +++ /dev/null @@ -1,224 +0,0 @@ -/* Modernizr 2.6.1 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-mq-teststyles - */ -; - - - -window.Modernizr = (function( window, document, undefined ) { - - var version = '2.6.1', - - Modernizr = {}, - - - docElement = document.documentElement, - - mod = 'modernizr', - modElem = document.createElement(mod), - mStyle = modElem.style, - - inputElem , - - - toString = {}.toString, tests = {}, - inputs = {}, - attrs = {}, - - classes = [], - - slice = classes.slice, - - featureName, - - - injectElementWithStyles = function( rule, callback, nodes, testnames ) { - - var style, ret, node, - div = document.createElement('div'), - body = document.body, - fakeBody = body ? body : document.createElement('body'); - - if ( parseInt(nodes, 10) ) { - while ( nodes-- ) { - node = document.createElement('div'); - node.id = testnames ? testnames[nodes] : mod + (nodes + 1); - div.appendChild(node); - } - } - - style = ['­',''].join(''); - div.id = mod; - (body ? div : fakeBody).innerHTML += style; - fakeBody.appendChild(div); - if ( !body ) { - fakeBody.style.background = ""; - docElement.appendChild(fakeBody); - } - - ret = callback(div, rule); - !body ? fakeBody.parentNode.removeChild(fakeBody) : div.parentNode.removeChild(div); - - return !!ret; - - }, - - testMediaQuery = function( mq ) { - - var matchMedia = window.matchMedia || window.msMatchMedia; - if ( matchMedia ) { - return matchMedia(mq).matches; - } - - var bool; - - injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { - bool = (window.getComputedStyle ? - getComputedStyle(node, null) : - node.currentStyle)['position'] == 'absolute'; - }); - - return bool; - - }, - _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; - - if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { - hasOwnProp = function (object, property) { - return _hasOwnProperty.call(object, property); - }; - } - else { - hasOwnProp = function (object, property) { - return ((property in object) && is(object.constructor.prototype[property], 'undefined')); - }; - } - - - if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { - - var target = this; - - if (typeof target != "function") { - throw new TypeError(); - } - - var args = slice.call(arguments, 1), - bound = function () { - - if (this instanceof bound) { - - var F = function(){}; - F.prototype = target.prototype; - var self = new F(); - - var result = target.apply( - self, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return self; - - } else { - - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - - return bound; - }; - } - - function setCss( str ) { - mStyle.cssText = str; - } - - function setCssAll( str1, str2 ) { - return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); - } - - function is( obj, type ) { - return typeof obj === type; - } - - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - - function testDOMProps( props, obj, elem ) { - for ( var i in props ) { - var item = obj[props[i]]; - if ( item !== undefined) { - - if (elem === false) return props[i]; - - if (is(item, 'function')){ - return item.bind(elem || obj); - } - - return item; - } - } - return false; - } - for ( var feature in tests ) { - if ( hasOwnProp(tests, feature) ) { - featureName = feature.toLowerCase(); - Modernizr[featureName] = tests[feature](); - - classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); - } - } - - - - Modernizr.addTest = function ( feature, test ) { - if ( typeof feature == 'object' ) { - for ( var key in feature ) { - if ( hasOwnProp( feature, key ) ) { - Modernizr.addTest( key, feature[ key ] ); - } - } - } else { - - feature = feature.toLowerCase(); - - if ( Modernizr[feature] !== undefined ) { - return Modernizr; - } - - test = typeof test == 'function' ? test() : test; - - if (enableClasses) { - docElement.className += ' ' + (test ? '' : 'no-') + feature; - } - Modernizr[feature] = test; - - } - - return Modernizr; - }; - - - setCss(''); - modElem = inputElem = null; - - - Modernizr._version = version; - - - Modernizr.mq = testMediaQuery; - Modernizr.testStyles = injectElementWithStyles; - return Modernizr; - -})(this, this.document); -; \ No newline at end of file diff --git a/lib/jquery.dd-3.3/Gruntfile.js b/lib/jquery.dd-3.3/Gruntfile.js deleted file mode 100644 index 39ff94bb0d..0000000000 --- a/lib/jquery.dd-3.3/Gruntfile.js +++ /dev/null @@ -1,61 +0,0 @@ -module.exports = function(grunt) { - - var name = "jquery.dd"; - var version = "3.3"; - var base = "wv.palette"; - - var lib = "lib/" + name + "-" + version + "/"; - var ext = "src/ext/" + base + "/" + name + "-" + version + "/"; - var debug_js = ext + name + ".js"; - var debug_css = ext + name + ".css"; - var min_js = ext + name + ".min.js"; - var min_css = ext + name + ".min.css"; - - var css = [ - lib + "dd.css", - lib + "skin2.css" - ]; - - var js = [ - lib + "jquery.dd.js", - ]; - - var uglifyFiles = {}; - uglifyFiles[min_js] = [debug_js]; - - var cssminFiles = {}; - cssminFiles[min_css] = [debug_css]; - - grunt.initConfig({ - concat: { - js: { - src: js, - dest: debug_js - }, - css: { - src: css, - dest: debug_css - } - }, - - uglify: { - js: { - files: uglifyFiles - } - }, - - cssmin: { - css: { - files: cssminFiles - } - } - }); - - grunt.file.setBase("../.."); - grunt.loadNpmTasks("grunt-contrib-concat"); - grunt.loadNpmTasks("grunt-contrib-cssmin"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - - grunt.registerTask("default", ["concat", "uglify", "cssmin"]); - -}; diff --git a/lib/jquery.dd-3.3/dd.css b/lib/jquery.dd-3.3/dd.css deleted file mode 100644 index 7c952d7bbd..0000000000 --- a/lib/jquery.dd-3.3/dd.css +++ /dev/null @@ -1,64 +0,0 @@ -.borderRadius{-moz-border-radius:5px; border-radius:5px; } -.borderRadiusTp{-moz-border-radius:5px 5px 0 0; border-radius:5px 5px 0 0;} -.borderRadiusBtm{-moz-border-radius:0 0 5px 5px ; border-radius:0 0 5px 5px;} - -.ddcommon {position:relative;display:-moz-inline-stack; zoom:1; display:inline-block; *display:inline; cursor:default;} -.ddcommon ul{padding:0;margin:0;} -.ddcommon ul li{list-style-type:none;} -.borderRadiusTp ul li:last-child{-moz-border-radius:0 0 5px 5px ; border-radius:0 0 5px 5px;border-bottom:0 none #c3c3c3; } -.borderRadiusBtm ul li:first-child{-moz-border-radius:5px 5px 0 0; border-radius:5px 5px 0 0 ;border-bottom:1 solid #c3c3c3; } - -.ddcommon .disabled img, .ddcommon .disabled span, .ddcommon.disabledAll{ -opacity: .5; /* standard: ff gt 1.5, opera, safari */ --ms-filter:"alpha(opacity=50)"; /* ie 8 */ -filter:alpha(opacity=50); /* ie lt 7 */ --khtml-opacity:.5; /* safari 1.x */ --moz-opacity:.5; /* ff lt 1.5, netscape */ -color:#999999; -} -.ddcommon .clear{clear:both} -.ddcommon .shadow{-moz-box-shadow:5px 5px 5px -5px #888888;-webkit-box-shadow:5px 5px 5px -5px #888888;box-shadow: 5px 5px 5px -5px #888888;} -.ddcommon input.text{color:#7e7e7e;padding:0 0 0 0; position:absolute; background:#fff; display:block; width:98%; height:98%; left:2px; top:0; border:none;} -.ddOutOfVision{position:relative; display:-moz-inline-stack; display:inline-block; zoom:1; *display:inline;} -.borderRadius .shadow{-moz-box-shadow:5px 5px 5px -5px #888888;-webkit-box-shadow:5px 5px 5px -5px #888888;box-shadow: 5px 5px 5px -5px #888888;} -.borderRadiusBtm .shadow{-moz-box-shadow:-5px -5px 5px -5px #888888;-webkit-box-shadow:-5px -5px 5px -5px #888888;box-shadow: -5px -5px 5px -5px #888888} -.borderRadiusTp .border, .borderRadius .border{-moz-border-radius:0 0 5px 5px ; border-radius:0 0 5px 5px;} -.borderRadiusBtm .border{-moz-border-radius:5px 5px 0 0; border-radius:5px 5px 0 0;} -img.fnone{float:none !important} -.ddcommon .divider{width:0; height:100%; position:absolute;} -.ddcommon .arrow{display:inline-block; position:absolute; top:50%; right:4px;} -.ddcommon .arrow:hover{background-position:0 100%;} -.ddcommon .ddTitle{padding:0; position:relative; display:inline-block; width:100%} -.ddcommon .ddTitle .ddTitleText{display:block;} -.ddcommon .ddTitle .ddTitleText .ddTitleText{padding:0;} -.ddcommon .ddTitle .description{display:block;} -.ddcommon .ddTitle .ddTitleText img{position:relative; vertical-align:middle; float:left} -.ddcommon .ddChild{position:absolute;display:none;width:100%;overflow-y:auto; overflow-x:hidden; zoom:1; z-index:9999} -.ddcommon .ddChild li{clear:both;} -.ddcommon .ddChild li .description{display:block;} -.ddcommon .ddChild li img{border:0 none; position:relative;vertical-align:middle;float:left} -.ddcommon .ddChild li.optgroup{padding:0;} -.ddcommon .ddChild li.optgroup .optgroupTitle{padding:0 5px; font-weight:bold; font-style:italic} -.ddcommon .ddChild li.optgroup ul li{padding:5px 5px 5px 15px} -.ddcommon .noBorderTop{border-top:none 0 !important; padding:0; margin:0;} - -/*************** default theme **********************/ -.dd{border:1px solid #c3c3c3;} -.dd .divider{border-left:1px solid #c3c3c3; border-right:1px solid #fff;; right:24px;} -.dd .arrow{width:16px;height:16px; margin-top:-8px; background:url(images/jquery.dd-3.3/skin1/dd_arrow.gif) no-repeat;} -.dd .arrow:hover{background-position:0 100%;} -.dd .ddTitle{color:#000;background:#e2e2e4 url(images/jquery.dd-3.3/skin1/title-bg.gif) repeat-x left top;} -.dd .ddTitle .ddTitleText{padding:5px 20px 5px 5px;} -.dd .ddTitle .ddTitleText .ddTitleText{padding:0;} -.dd .ddTitle .description{font-size:12px; color:#666} -.dd .ddTitle .ddTitleText img{padding-right:5px;} -.dd .ddChild{border:1px solid #c3c3c3; background-color:#fff; left:-1px;} -.dd .ddChild li{padding:5px; background-color:#fff; border-bottom:1px solid #c3c3c3;} -.dd .ddChild li .description{color:#666;} -.dd .ddChild li .ddlabel{color:#333;} -.dd .ddChild li.hover{background-color:#f2f2f2} -.dd .ddChild li img{padding:0 6px 0 0;} -.dd .ddChild li.optgroup{padding:0;} -.dd .ddChild li.optgroup .optgroupTitle{padding:0 5px; font-weight:bold; font-style:italic} -.dd .ddChild li.optgroup ul li{padding:5px 5px 5px 15px} -.dd .ddChild li.selected{background-color:#d5d5d5; color:#000;} diff --git a/lib/jquery.dd-3.3/jquery.dd.js b/lib/jquery.dd-3.3/jquery.dd.js deleted file mode 100644 index 6bae8bddc0..0000000000 --- a/lib/jquery.dd-3.3/jquery.dd.js +++ /dev/null @@ -1,1482 +0,0 @@ -// MSDropDown - jquery.dd.js -// author: Marghoob Suleman - http://www.marghoobsuleman.com/ -// Date: 10 Nov, 2012 -// Version: 3.3 -// Revision: 22 -// web: www.marghoobsuleman.com -/* -// msDropDown is free jQuery Plugin: you can redistribute it and/or modify -// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 -*/ -var msBeautify = msBeautify || {}; -(function ($) { -msBeautify = { - version: {msDropdown:'3.3'}, - author: "Marghoob Suleman", - counter: 20, - debug: function (v) { - if (v !== false) { - $(".ddOutOfVision").css({height: 'auto', position: 'relative'}); - } else { - $(".ddOutOfVision").css({height: '0px', position: 'absolute'}); - } - }, - oldDiv: '', - create: function (id, settings, type) { - type = type || "dropdown"; - var data; - switch (type.toLowerCase()) { - case "dropdown": - case "select": - data = $(id).msDropdown(settings).data("dd"); - break; - } - return data; - } -}; - -$.msDropDown = {}; -$.msDropdown = {}; -$.extend(true, $.msDropDown, msBeautify); -$.extend(true, $.msDropdown, msBeautify); -// make compatibiliy with old and new jquery -if ($.fn.prop === undefined) {$.fn.prop = $.fn.attr;} -if ($.fn.on === undefined) {$.fn.on = $.fn.bind;$.fn.off = $.fn.unbind;} -if (typeof $.expr.createPseudo === 'function') { - //jQuery 1.8 or greater - $.expr[':'].Contains = $.expr.createPseudo(function (arg) {return function (elem) { return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; }); -} else { - //lower version - $.expr[':'].Contains = function (a, i, m) {return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; }; -} -//dropdown class -function dd(element, settings) { - var _settings = $.extend(true,{byJson: {data: null, selectedIndex: 0, name: null, size: 0, multiple: false, width: 250}, - mainCSS: 'dd', - height: 120, //not using currently - visibleRows: 7, - rowHeight: 0, - showIcon: true, - zIndex: 9999, - useSprite: false, - animStyle: 'slideDown', - event:'click', - openDirection: 'auto', //auto || alwaysUp - jsonTitle: true, - style: '', - disabledOpacity: 0.7, - disabledOptionEvents: true, - childWidth:0, - enableCheckbox:false, //this needs to multiple or it will set element to multiple - checkboxNameSuffix:'_mscheck', - append:'', - prepend:'', - on: {create: null,open: null,close: null,add: null,remove: null,change: null,blur: null,click: null,dblclick: null,mousemove: null,mouseover: null,mouseout: null,focus: null,mousedown: null,mouseup: null} - }, settings); - var _this = this; //this class - var _holderId = {postElementHolder: '_msddHolder', postID: '_msdd', postTitleID: '_title',postTitleTextID: '_titleText', postChildID: '_child'}; - var _styles = {dd:_settings.mainCSS, ddTitle: 'ddTitle', arrow: 'arrow arrowoff', ddChild: 'ddChild', ddTitleText: 'ddTitleText',disabled: 'disabled', enabled: 'enabled', ddOutOfVision: 'ddOutOfVision', borderTop: 'borderTop', noBorderTop: 'noBorderTop', selected: 'selected', divider: 'divider', optgroup: "optgroup", optgroupTitle: "optgroupTitle", description: "description", label: "ddlabel",hover: 'hover',disabledAll: 'disabledAll'}; - var _styles_i = {li: '_msddli_',borderRadiusTp: 'borderRadiusTp',ddChildMore: 'border shadow',fnone: "fnone"}; - var _isList = false, _isMultiple=false,_isDisabled=false, _cacheElement = {}, _element, _orginial = {}, _isOpen=false; - var DOWN_ARROW = 40, UP_ARROW = 38, LEFT_ARROW=37, RIGHT_ARROW=39, ESCAPE = 27, ENTER = 13, ALPHABETS_START = 47, SHIFT=16 , CONTROL = 17; - var _shiftHolded=false, _controlHolded=false,_lastTarget=null,_forcedTrigger=false, _oldSelected, _isCreated = false; - var _doc = document, _ua = window.navigator.userAgent, _isIE = _ua.match(/msie/i); - var msieversion = function() - { - var msie = _ua.indexOf("MSIE"); - if ( msie > 0 ) { // If Internet Explorer, return version number - return parseInt (_ua.substring (msie+5, _ua.indexOf (".", msie))); - } else { // If another browser, return 0 - return 0; - }; - }; - var _checkDataSetting = function() { - _settings.mainCSS = $("#"+_element).data("maincss") || _settings.mainCSS; - _settings.visibleRows = $("#"+_element).data("visiblerows") || _settings.visibleRows; - if($("#"+_element).data("showicon")==false) {_settings.showIcon = $("#"+_element).data("showicon");}; - _settings.useSprite = $("#"+_element).data("usesprite") || _settings.useSprite; - _settings.animStyle = $("#"+_element).data("animstyle") || _settings.animStyle; - _settings.event = $("#"+_element).data("event") || _settings.event; - _settings.openDirection = $("#"+_element).data("opendirection") || _settings.openDirection; - _settings.jsonTitle = $("#"+_element).data("jsontitle") || _settings.jsonTitle; - _settings.disabledOpacity = $("#"+_element).data("disabledopacity") || _settings.disabledOpacity; - _settings.childWidth = $("#"+_element).data("childwidth") || _settings.childWidth; - _settings.enableCheckbox = $("#"+_element).data("enablecheckbox") || _settings.enableCheckbox; - _settings.checkboxNameSuffix = $("#"+_element).data("checkboxnamesuffix") || _settings.checkboxNameSuffix; - _settings.append = $("#"+_element).data("append") || _settings.append; - _settings.prepend = $("#"+_element).data("prepend") || _settings.prepend; - }; - var getElement = function(ele) { - if (_cacheElement[ele] === undefined) { - _cacheElement[ele] = _doc.getElementById(ele); - } - return _cacheElement[ele]; - }; - var _getIndex = function(opt) { - var childid = _getPostID("postChildID"); - return $("#"+childid + " li."+_styles_i.li).index(opt); - }; - var _createByJson = function() { - if (_settings.byJson.data) { - var validData = ["description","image", "title"]; - try { - if (!element.id) { - element.id = "dropdown"+msBeautify.counter; - }; - _settings.byJson.data = eval(_settings.byJson.data); - //change element - var id = "msdropdown"+(msBeautify.counter++); - var obj = {}; - obj.id = id; - obj.name = _settings.byJson.name || element.id; //its name - if (_settings.byJson.size>0) { - obj.size = _settings.byJson.size; - }; - obj.multiple = _settings.byJson.multiple; - var oSelect = _createElement("select", obj); - for(var i=0;i<_settings.byJson.data.length;i++) { - var current = _settings.byJson.data[i]; - var opt = new Option(current.text, current.value); - for(var p in current) { - if (p.toLowerCase() != 'text') { - var key = ($.inArray(p.toLowerCase(), validData)!=-1) ? "data-" : ""; - opt.setAttribute(key+p, current[p]); - }; - }; - oSelect.options[i] = opt; - }; - getElement(element.id).appendChild(oSelect); - oSelect.selectedIndex = _settings.byJson.selectedIndex; - $(oSelect).css({width: _settings.byJson.width+'px'}); - //now change element for access other things - element = oSelect; - } catch(e) { - throw "There is an error in json data."; - }; - }; - }; - var _construct = function() { - //set properties - _createByJson(); - if (!element.id) { - element.id = "msdrpdd"+(msBeautify.counter++); - }; - _element = element.id; - _this._element = _element; - _checkDataSetting(); - _isDisabled = getElement(_element).disabled; - var useCheckbox = _settings.enableCheckbox; - if(Boolean(useCheckbox)===true) { - getElement(_element).multiple = true; - _settings.enableCheckbox = true; - }; - _isList = (getElement(_element).size>1 || getElement(_element).multiple==true) ? true : false; - //trace("_isList "+_isList); - if (_isList) {_isMultiple = getElement(_element).multiple;}; - _mergeAllProp(); - //create layout - _createLayout(); - //set ui prop - _updateProp("uiData", _getDataAndUI()); - _updateProp("selectedOptions", $("#"+_element +" option:selected")); - var childid = _getPostID("postChildID"); - _oldSelected = $("#" + childid + " li." + _styles.selected); - - }; - /********************************************************************************************/ - var _getPostID = function (id) { - return _element+_holderId[id]; - }; - var _getInternalStyle = function(ele) { - var s = (ele.style === undefined) ? "" : ele.style.cssText; - return s; - }; - var _parseOption = function(opt) { - var imagePath = '', title ='', description='', value=-1, text='', className='', imagecss = ''; - if (opt !== undefined) { - var attrTitle = opt.title || ""; - //data-title - if (attrTitle!="") { - var reg = /^\{.*\}$/; - var isJson = reg.test(attrTitle); - if (isJson && _settings.jsonTitle) { - var obj = eval("["+attrTitle+"]"); - }; - title = (isJson && _settings.jsonTitle) ? obj[0].title : title; - description = (isJson && _settings.jsonTitle) ? obj[0].description : description; - imagePath = (isJson && _settings.jsonTitle) ? obj[0].image : attrTitle; - imagecss = (isJson && _settings.jsonTitle) ? obj[0].imagecss : imagecss; - }; - - text = opt.text || ''; - value = opt.value || ''; - className = opt.className || ""; - //ignore title attribute if playing with data tags - title = $(opt).prop("data-title") || $(opt).data("title") || (title || ""); - description = $(opt).prop("data-description") || $(opt).data("description") || (description || ""); - imagePath = $(opt).prop("data-image") || $(opt).data("image") || (imagePath || ""); - imagecss = $(opt).prop("data-imagecss") || $(opt).data("imagecss") || (imagecss || ""); - - }; - var o = {image: imagePath, title: title, description: description, value: value, text: text, className: className, imagecss:imagecss}; - return o; - }; - var _createElement = function(nm, attr, html) { - var tag = _doc.createElement(nm); - if (attr) { - for(var i in attr) { - switch(i) { - case "style": - tag.style.cssText = attr[i]; - break; - default: - tag[i] = attr[i]; - break; - }; - }; - }; - if (html) { - tag.innerHTML = html; - }; - return tag; - }; - /********************************************************************************************/ - /*********************** *************************************/ - var _hideOriginal = function() { - var hidid = _getPostID("postElementHolder"); - if ($("#"+hidid).length==0) { - var obj = {style: 'height: 0px;overflow: hidden;position: absolute;',className: _styles.ddOutOfVision}; - obj.id = hidid; - var oDiv = _createElement("div", obj); - $("#"+_element).after(oDiv); - $("#"+_element).appendTo($("#"+hidid)); - } else { - $("#"+hidid).css({height: 0,overflow: 'hidden',position: 'absolute'}); - }; - }; - var _createWrapper = function () { - var obj = { - className: _styles.dd + " ddcommon borderRadius" - }; - var styles = _getInternalStyle(getElement(_element)); - var w = $("#" + _element).outerWidth(); - obj.style = "width: " + w + "px;"; - if (styles.length > 0) { - obj.style = obj.style + "" + styles; - }; - obj.id = _getPostID("postID"); - var oDiv = _createElement("div", obj); - return oDiv; - }; - var _createTitle = function () { - var selectedOption; - if(getElement(_element).selectedIndex>=0) { - selectedOption = getElement(_element).options[getElement(_element).selectedIndex]; - } else { - selectedOption = {value:'', text:''}; - } - var spriteClass = "", selectedClass = ""; - //check sprite - var useSprite = $("#"+_element).data("usesprite"); - if(useSprite) { _settings.useSprite = useSprite; }; - if (_settings.useSprite != false) { - spriteClass = " " + _settings.useSprite; - selectedClass = " " + selectedOption.className; - }; - var oTitle = _createElement("div", {className: _styles.ddTitle + spriteClass + " " + _styles_i.borderRadiusTp}); - //divider - var oDivider = _createElement("span", {className: _styles.divider}); - //arrow - var oArrow = _createElement("span", {className: _styles.arrow}); - //title Text - var titleid = _getPostID("postTitleID"); - var oTitleText = _createElement("span", {className: _styles.ddTitleText + selectedClass, id: titleid}); - - var parsed = _parseOption(selectedOption); - var arrowPath = parsed.image; - var sText = parsed.text || ""; - if (arrowPath != "" && _settings.showIcon) { - var oIcon = _createElement("img"); - oIcon.src = arrowPath; - if(parsed.imagecss!="") { - oIcon.className = parsed.imagecss+" "; - }; - }; - var oTitleText_in = _createElement("span", {className: _styles.label}, sText); - oTitle.appendChild(oDivider); - oTitle.appendChild(oArrow); - if (oIcon) { - oTitleText.appendChild(oIcon); - }; - oTitleText.appendChild(oTitleText_in); - oTitle.appendChild(oTitleText); - var oDescription = _createElement("span", {className: _styles.description}, parsed.description); - oTitleText.appendChild(oDescription); - return oTitle; - }; - var _createFilterBox = function () { - var tid = _getPostID("postTitleTextID"); - var sText = _createElement("input", {id: tid, type: 'text', value: '', autocomplete: 'off', className: 'text shadow borderRadius', style: 'display: none'}); - return sText; - }; - var _createChild = function (opt) { - var obj = {}; - var styles = _getInternalStyle(opt); - if (styles.length > 0) {obj.style = styles; }; - var css = (opt.disabled) ? _styles.disabled : _styles.enabled; - css = (opt.selected) ? (css + " " + _styles.selected) : css; - css = css + " " + _styles_i.li; - obj.className = css; - if (_settings.useSprite != false) { - obj.className = css + " " + opt.className; - }; - var li = _createElement("li", obj); - var parsed = _parseOption(opt); - if (parsed.title != "") { - li.title = parsed.title; - }; - var arrowPath = parsed.image; - if (arrowPath != "" && _settings.showIcon) { - var oIcon = _createElement("img"); - oIcon.src = arrowPath; - if(parsed.imagecss!="") { - oIcon.className = parsed.imagecss+" "; - }; - }; - if (parsed.description != "") { - var oDescription = _createElement("span", { - className: _styles.description - }, parsed.description); - }; - var sText = opt.text || ""; - var oTitleText = _createElement("span", { - className: _styles.label - }, sText); - //checkbox - if(_settings.enableCheckbox===true) { - var chkbox = _createElement("input", { - type: 'checkbox', name:_element+_settings.checkboxNameSuffix+'[]', value:opt.value||""}); //this can be used for future - li.appendChild(chkbox); - if(_settings.enableCheckbox===true) { - chkbox.checked = (opt.selected) ? true : false; - }; - }; - if (oIcon) { - li.appendChild(oIcon); - }; - li.appendChild(oTitleText); - if (oDescription) { - li.appendChild(oDescription); - } else { - if (oIcon) { - oIcon.className = oIcon.className+_styles_i.fnone; - }; - }; - var oClear = _createElement("div", {className: 'clear'}); - li.appendChild(oClear); - return li; - }; - var _createChildren = function () { - var childid = _getPostID("postChildID"); - var obj = {className: _styles.ddChild + " ddchild_ " + _styles_i.ddChildMore, id: childid}; - if (_isList == false) { - obj.style = "z-index: " + _settings.zIndex; - } else { - obj.style = "z-index:1"; - }; - var childWidth = $("#"+_element).data("childwidth") || _settings.childWidth; - if(childWidth) { - obj.style = (obj.style || "") + ";width:"+childWidth; - }; - var oDiv = _createElement("div", obj); - var ul = _createElement("ul"); - if (_settings.useSprite != false) { - ul.className = _settings.useSprite; - }; - var allOptions = getElement(_element).children; - for (var i = 0; i < allOptions.length; i++) { - var current = allOptions[i]; - var li; - if (current.nodeName.toLowerCase() == "optgroup") { - //create ul - li = _createElement("li", {className: _styles.optgroup}); - var span = _createElement("span", {className: _styles.optgroupTitle}, current.label); - li.appendChild(span); - var optChildren = current.children; - var optul = _createElement("ul"); - for (var j = 0; j < optChildren.length; j++) { - var opt_li = _createChild(optChildren[j]); - optul.appendChild(opt_li); - }; - li.appendChild(optul); - } else { - li = _createChild(current); - }; - ul.appendChild(li); - }; - oDiv.appendChild(ul); - return oDiv; - }; - var _childHeight = function (val) { - var childid = _getPostID("postChildID"); - if (val) { - if (val == -1) { //auto - $("#"+childid).css({height: "auto", overflow: "auto"}); - } else { - $("#"+childid).css("height", val+"px"); - }; - return false; - }; - //else return height - var iHeight; - if (getElement(_element).options.length > _settings.visibleRows) { - var margin = parseInt($("#" + childid + " li:first").css("padding-bottom")) + parseInt($("#" + childid + " li:first").css("padding-top")); - if(_settings.rowHeight===0) { - $("#" + childid).css({visibility:'hidden',display:'block'}); //hack for first child - _settings.rowHeight = Math.round($("#" + childid + " li:first").height()); - $("#" + childid).css({visibility:'visible'}); - if(!_isList || _settings.enableCheckbox===true) { - $("#" + childid).css({display:'none'}); - }; - }; - iHeight = ((_settings.rowHeight + margin) * _settings.visibleRows); - } else if (_isList) { - iHeight = $("#" + _element).height(); //get height from original element - }; - return iHeight; - }; - var _applyChildEvents = function () { - var childid = _getPostID("postChildID"); - $("#" + childid).on("click", function (e) { - if (_isDisabled === true) return false; - //prevent body click - e.preventDefault(); - e.stopPropagation(); - if (_isList) { - _bind_on_events(); - }; - }); - $("#" + childid + " li." + _styles.enabled).on("click", function (e) { - if(e.target.nodeName.toLowerCase() !== "input") { - _close(this); - }; - }); - $("#" + childid + " li." + _styles.enabled).on("mousedown", function (e) { - if (_isDisabled === true) return false; - _oldSelected = $("#" + childid + " li." + _styles.selected); - _lastTarget = this; - e.preventDefault(); - e.stopPropagation(); - //select current input - if(_settings.enableCheckbox===true) { - if(e.target.nodeName.toLowerCase() === "input") { - _controlHolded = true; - }; - }; - if (_isList === true) { - if (_isMultiple) { - if (_shiftHolded === true) { - $(this).addClass(_styles.selected); - var selected = $("#" + childid + " li." + _styles.selected); - var lastIndex = _getIndex(this); - if (selected.length > 1) { - var items = $("#" + childid + " li." + _styles_i.li); - var ind1 = _getIndex(selected[0]); - var ind2 = _getIndex(selected[1]); - if (lastIndex > ind2) { - ind1 = (lastIndex); - ind2 = ind2 + 1; - }; - for (var i = Math.min(ind1, ind2); i <= Math.max(ind1, ind2); i++) { - var current = items[i]; - if ($(current).hasClass(_styles.enabled)) { - $(current).addClass(_styles.selected); - }; - }; - }; - } else if (_controlHolded === true) { - $(this).toggleClass(_styles.selected); //toggle - if(_settings.enableCheckbox===true) { - var checkbox = this.childNodes[0]; - checkbox.checked = !checkbox.checked; //toggle - }; - } else { - $("#" + childid + " li." + _styles.selected).removeClass(_styles.selected); - $("#" + childid + " input:checkbox").prop("checked", false); - $(this).addClass(_styles.selected); - if(_settings.enableCheckbox===true) { - this.childNodes[0].checked = true; - }; - }; - } else { - $("#" + childid + " li." + _styles.selected).removeClass(_styles.selected); - $(this).addClass(_styles.selected); - }; - //fire event on mouseup - } else { - $("#" + childid + " li." + _styles.selected).removeClass(_styles.selected); - $(this).addClass(_styles.selected); - }; - }); - $("#" + childid + " li." + _styles.enabled).on("mouseenter", function (e) { - if (_isDisabled === true) return false; - e.preventDefault(); - e.stopPropagation(); - if (_lastTarget != null) { - if (_isMultiple) { - $(this).addClass(_styles.selected); - if(_settings.enableCheckbox===true) { - this.childNodes[0].checked = true; - }; - }; - }; - }); - - $("#" + childid + " li." + _styles.enabled).on("mouseover", function (e) { - if (_isDisabled === true) return false; - $(this).addClass(_styles.hover); - }); - $("#" + childid + " li." + _styles.enabled).on("mouseout", function (e) { - if (_isDisabled === true) return false; - $("#" + childid + " li." + _styles.hover).removeClass(_styles.hover); - }); - - $("#" + childid + " li." + _styles.enabled).on("mouseup", function (e) { - if (_isDisabled === true) return false; - e.preventDefault(); - e.stopPropagation(); - if(_settings.enableCheckbox===true) { - _controlHolded = false; - }; - var selected = $("#" + childid + " li." + _styles.selected).length; - _forcedTrigger = (_oldSelected.length != selected || selected == 0) ? true : false; - _fireAfterItemClicked(); - _unbind_on_events(); //remove old one - _bind_on_events(); - _lastTarget = null; - }); - - /* options events */ - if (_settings.disabledOptionEvents == false) { - $("#" + childid + " li." + _styles_i.li).on("click", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "click"); - }); - $("#" + childid + " li." + _styles_i.li).on("mouseenter", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "mouseenter"); - }); - $("#" + childid + " li." + _styles_i.li).on("mouseover", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "mouseover"); - }); - $("#" + childid + " li." + _styles_i.li).on("mouseout", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "mouseout"); - }); - $("#" + childid + " li." + _styles_i.li).on("mousedown", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "mousedown"); - }); - $("#" + childid + " li." + _styles_i.li).on("mouseup", function (e) { - if (_isDisabled === true) return false; - fireOptionEventIfExist(this, "mouseup"); - }); - }; - }; - var _removeChildEvents = function () { - var childid = _getPostID("postChildID"); - $("#" + childid).off("click"); - $("#" + childid + " li." + _styles.enabled).off("mouseenter"); - $("#" + childid + " li." + _styles.enabled).off("click"); - $("#" + childid + " li." + _styles.enabled).off("mouseover"); - $("#" + childid + " li." + _styles.enabled).off("mouseout"); - $("#" + childid + " li." + _styles.enabled).off("mousedown"); - $("#" + childid + " li." + _styles.enabled).off("mouseup"); - }; - var _applyEvents = function () { - var id = _getPostID("postID"); - var childid = _getPostID("postChildID"); - $("#" + id).on(_settings.event, function (e) { - if (_isDisabled === true) return false; - fireEventIfExist("click"); - //prevent body click - e.preventDefault(); - e.stopPropagation(); - _open(e); - }); - _applyChildEvents(); - $("#" + id).on("dblclick", on_dblclick); - $("#" + id).on("mousemove", on_mousemove); - $("#" + id).on("mouseenter", on_mouseover); - $("#" + id).on("mouseleave", on_mouseout); - $("#" + id).on("mousedown", on_mousedown); - $("#" + id).on("mouseup", on_mouseup); - }; - //after create - var _fixedForList = function () { - var id = _getPostID("postID"); - var childid = _getPostID("postChildID"); - if (_isList === true && _settings.enableCheckbox===false) { - $("#" + id + " ." + _styles.ddTitle).hide(); - $("#" + childid).css({display: 'block', position: 'relative'}); - //_open(); - } else { - if(_settings.enableCheckbox===false) { - _isMultiple = false; //set multiple off if this is not a list - }; - $("#" + id + " ." + _styles.ddTitle).show(); - $("#" + childid).css({display: 'none', position: 'absolute'}); - //set value - var first = $("#" + childid + " li." + _styles.selected)[0]; - $("#" + childid + " li." + _styles.selected).removeClass(_styles.selected); - var index = _getIndex($(first).addClass(_styles.selected)); - _setValue(index); - }; - _childHeight(_childHeight()); //get and set height - }; - var _fixedForDisabled = function () { - var id = _getPostID("postID"); - var opc = (_isDisabled == true) ? _settings.disabledOpacity : 1; - if (_isDisabled === true) { - $("#" + id).addClass(_styles.disabledAll); - } else { - $("#" + id).removeClass(_styles.disabledAll); - }; - }; - var _fixedSomeUI = function () { - //auto filter - var tid = _getPostID("postTitleTextID"); - $("#" + tid).on("keyup", _applyFilters); - //if is list - _fixedForList(); - _fixedForDisabled(); - }; - var _createLayout = function () { - var oDiv = _createWrapper(); - var oTitle = _createTitle(); - oDiv.appendChild(oTitle); - //auto filter box - var oFilterBox = _createFilterBox(); - oDiv.appendChild(oFilterBox); - - var oChildren = _createChildren(); - oDiv.appendChild(oChildren); - $("#" + _element).after(oDiv); - _hideOriginal(); //hideOriginal - _fixedSomeUI(); - _applyEvents(); - - var childid = _getPostID("postChildID"); - //append - if(_settings.append!='') { - $("#" + childid).append(_settings.append); - }; - //prepend - if(_settings.prepend!='') { - $("#" + childid).prepend(_settings.prepend); - }; - if (typeof _settings.on.create == "function") { - _settings.on.create.apply(_this, arguments); - }; - }; - var _selectMutipleOptions = function (bySelected) { - var childid = _getPostID("postChildID"); - var selected = bySelected || $("#" + childid + " li." + _styles.selected); //bySelected or by argument - for (var i = 0; i < selected.length; i++) { - var ind = _getIndex(selected[i]); - getElement(_element).options[ind].selected = "selected"; - }; - _setValue(selected); - }; - var _fireAfterItemClicked = function () { - //console.log("_fireAfterItemClicked") - var childid = _getPostID("postChildID"); - var selected = $("#" + childid + " li." + _styles.selected); - if (_isMultiple && (_shiftHolded || _controlHolded) || _forcedTrigger) { - getElement(_element).selectedIndex = -1; //reset old - }; - var index; - if (selected.length == 0) { - index = -1; - } else if (selected.length > 1) { - //selected multiple - _selectMutipleOptions(selected); - //index = $("#" + childid + " li." + _styles.selected); - - } else { - //if one selected - index = _getIndex($("#" + childid + " li." + _styles.selected)); - }; - if ((getElement(_element).selectedIndex != index || _forcedTrigger) && selected.length<=1) { - _forcedTrigger = false; - var evt = has_handler("change"); - getElement(_element).selectedIndex = index; - _setValue(index); - //local - if (typeof _settings.on.change == "function") { - var d = _getDataAndUI(); - _settings.on.change(d.data, d.ui); - }; - $("#" + _element).trigger("change"); - }; - }; - var _setValue = function (index, byvalue) { - if (index !== undefined) { - var selectedIndex, value, selectedText; - if (index == -1) { - selectedIndex = -1; - value = ""; - selectedText = ""; - _updateTitleUI(-1); - } else { - //by index or byvalue - if (typeof index != "object") { - var opt = getElement(_element).options[index]; - getElement(_element).selectedIndex = index; - selectedIndex = index; - value = _parseOption(opt); - selectedText = (index >= 0) ? getElement(_element).options[index].text : ""; - _updateTitleUI(undefined, value); - value = value.value; //for bottom - } else { - //this is multiple or by option - selectedIndex = (byvalue && byvalue.index) || getElement(_element).selectedIndex; - value = (byvalue && byvalue.value) || getElement(_element).value; - selectedText = (byvalue && byvalue.text) || getElement(_element).options[getElement(_element).selectedIndex].text || ""; - _updateTitleUI(selectedIndex); - }; - }; - _updateProp("selectedIndex", selectedIndex); - _updateProp("value", value); - _updateProp("selectedText", selectedText); - _updateProp("children", getElement(_element).children); - _updateProp("uiData", _getDataAndUI()); - _updateProp("selectedOptions", $("#" + _element + " option:selected")); - }; - }; - var has_handler = function (name) { - //True if a handler has been added in the html. - var evt = {byElement: false, byJQuery: false, hasEvent: false}; - var obj = $("#" + _element); - //console.log(name) - try { - //console.log(obj.prop("on" + name) + " "+name); - if (obj.prop("on" + name) !== null) { - evt.hasEvent = true; - evt.byElement = true; - }; - } catch(e) { - //console.log(e.message); - } - // True if a handler has been added using jQuery. - var evs; - if (typeof $._data == "function") { //1.8 - evs = $._data(obj[0], "events"); - } else { - evs = obj.data("events"); - }; - if (evs && evs[name]) { - evt.hasEvent = true; - evt.byJQuery = true; - }; - return evt; - }; - var _bind_on_events = function () { - _unbind_on_events(); - $("body").on("click", _close); - //bind more events - $(document).on("keydown", on_keydown); - $(document).on("keyup", on_keyup); - //focus will work on this - }; - var _unbind_on_events = function () { - $("body").off("click", _close); - //bind more events - $(document).off("keydown", on_keydown); - $(document).off("keyup", on_keyup); - }; - var _applyFilters = function () { - var childid = _getPostID("postChildID"); - var tid = _getPostID("postTitleTextID"); - var sText = getElement(tid).value; - if (sText.length == 0) { - $("#" + childid + " li:hidden").show(); //show if hidden - _childHeight(_childHeight()); - } else { - $("#" + childid + " li").hide(); - $("#" + childid + " li:Contains('" + sText + "')").show(); - if ($("#" + childid + " li:visible").length <= _settings.visibleRows) { - _childHeight(-1); //set autoheight - }; - }; - }; - var _showFilterBox = function () { - var tid = _getPostID("postTitleTextID"); - if ($("#" + tid + ":hidden").length > 0 && _controlHolded == false) { - $("#" + tid + ":hidden").show().val(""); - getElement(tid).focus(); - }; - }; - var _hideFilterBox = function () { - var tid = _getPostID("postTitleTextID"); - if ($("#" + tid + ":visible").length > 0) { - $("#" + tid + ":visible").hide(); - getElement(tid).blur(); - }; - }; - var on_keydown = function (evt) { - var tid = _getPostID("postTitleTextID"); - var childid = _getPostID("postChildID"); - switch (evt.keyCode) { - case DOWN_ARROW: - case RIGHT_ARROW: - evt.preventDefault(); - evt.stopPropagation(); - //_hideFilterBox(); - _next(); - break; - case UP_ARROW: - case LEFT_ARROW: - evt.preventDefault(); - evt.stopPropagation(); - //_hideFilterBox(); - _previous(); - break; - case ESCAPE: - case ENTER: - evt.preventDefault(); - evt.stopPropagation(); - _close(); - var selected = $("#" + childid + " li." + _styles.selected).length; - _forcedTrigger = (_oldSelected.length != selected || selected == 0) ? true : false; - _fireAfterItemClicked(); - _unbind_on_events(); //remove old one - _lastTarget = null; - break; - case SHIFT: - _shiftHolded = true; - break; - case CONTROL: - _controlHolded = true; - break; - default: - if (evt.keyCode >= ALPHABETS_START && _isList === false) { - _showFilterBox(); - }; - break; - }; - if (_isDisabled === true) return false; - fireEventIfExist("keydown"); - }; - var on_keyup = function (evt) { - switch (evt.keyCode) { - case SHIFT: - _shiftHolded = false; - break; - case CONTROL: - _controlHolded = false; - break; - }; - if (_isDisabled === true) return false; - fireEventIfExist("keyup"); - }; - var on_dblclick = function (evt) { - if (_isDisabled === true) return false; - fireEventIfExist("dblclick"); - }; - var on_mousemove = function (evt) { - if (_isDisabled === true) return false; - fireEventIfExist("mousemove"); - }; - - var on_mouseover = function (evt) { - if (_isDisabled === true) return false; - evt.preventDefault(); - fireEventIfExist("mouseover"); - }; - var on_mouseout = function (evt) { - if (_isDisabled === true) return false; - evt.preventDefault(); - fireEventIfExist("mouseout"); - }; - var on_mousedown = function (evt) { - if (_isDisabled === true) return false; - fireEventIfExist("mousedown"); - }; - var on_mouseup = function (evt) { - if (_isDisabled === true) return false; - fireEventIfExist("mouseup"); - }; - var option_has_handler = function (opt, name) { - //True if a handler has been added in the html. - var evt = {byElement: false, byJQuery: false, hasEvent: false}; - if ($(opt).prop("on" + name) != undefined) { - evt.hasEvent = true; - evt.byElement = true; - }; - // True if a handler has been added using jQuery. - var evs = $(opt).data("events"); - if (evs && evs[name]) { - evt.hasEvent = true; - evt.byJQuery = true; - }; - return evt; - }; - var fireOptionEventIfExist = function (li, evt_n) { - if (_settings.disabledOptionEvents == false) { - var opt = getElement(_element).options[_getIndex(li)]; - //check if original has some - if (option_has_handler(opt, evt_n).hasEvent === true) { - if (option_has_handler(opt, evt_n).byElement === true) { - opt["on" + evt_n](); - }; - if (option_has_handler(opt, evt_n).byJQuery === true) { - switch (evt_n) { - case "keydown": - case "keyup": - //key down/up will check later - break; - default: - $(opt).trigger(evt_n); - break; - }; - }; - return false; - }; - }; - }; - var fireEventIfExist = function (evt_n) { - //local - if (typeof _settings.on[evt_n] == "function") { - _settings.on[evt_n].apply(this, arguments); - }; - //check if original has some - if (has_handler(evt_n).hasEvent === true) { - if (has_handler(evt_n).byElement === true) { - getElement(_element)["on" + evt_n](); - }; - if (has_handler(evt_n).byJQuery === true) { - switch (evt_n) { - case "keydown": - case "keyup": - //key down/up will check later - break; - default: - $("#" + _element).trigger(evt_n); - break; - }; - }; - return false; - }; - }; - /******************************* navigation **********************************************/ - var _scrollToIfNeeded = function (opt) { - var childid = _getPostID("postChildID"); - //if scroll is needed - opt = (opt !== undefined) ? opt : $("#" + childid + " li." + _styles.selected); - if (opt.length > 0) { - var pos = parseInt(($(opt).position().top)); - var ch = parseInt($("#" + childid).height()); - if (pos > ch) { - var top = pos + $("#" + childid).scrollTop() - (ch/2); - $("#" + childid).animate({scrollTop:top}, 500); - }; - }; - }; - var _next = function () { - var childid = _getPostID("postChildID"); - var items = $("#" + childid + " li:visible." + _styles_i.li); - var selected = $("#" + childid + " li:visible." + _styles.selected); - selected = (selected.length==0) ? items[0] : selected; - var index = $("#" + childid + " li:visible." + _styles_i.li).index(selected); - if ((index < items.length - 1)) { - index = getNext(index); - if (index < items.length) { //check again - hack for last disabled - if (!_shiftHolded || !_isList || !_isMultiple) { - $("#" + childid + " ." + _styles.selected).removeClass(_styles.selected); - }; - $(items[index]).addClass(_styles.selected); - _updateTitleUI(index); - if (_isList == true) { - _fireAfterItemClicked(); - }; - _scrollToIfNeeded($(items[index])); - }; - if (!_isList) { - _adjustOpen(); - }; - }; - function getNext(ind) { - ind = ind + 1; - if (ind > items.length) { - return ind; - }; - if ($(items[ind]).hasClass(_styles.enabled) === true) { - return ind; - }; - return ind = getNext(ind); - }; - }; - var _previous = function () { - var childid = _getPostID("postChildID"); - var selected = $("#" + childid + " li:visible." + _styles.selected); - var items = $("#" + childid + " li:visible." + _styles_i.li); - var index = $("#" + childid + " li:visible." + _styles_i.li).index(selected[0]); - if (index >= 0) { - index = getPrev(index); - if (index >= 0) { //check again - hack for disabled - if (!_shiftHolded || !_isList || !_isMultiple) { - $("#" + childid + " ." + _styles.selected).removeClass(_styles.selected); - }; - $(items[index]).addClass(_styles.selected); - _updateTitleUI(index); - if (_isList == true) { - _fireAfterItemClicked(); - }; - if (parseInt(($(items[index]).position().top + $(items[index]).height())) <= 0) { - var top = ($("#" + childid).scrollTop() - $("#" + childid).height()) - $(items[index]).height(); - $("#" + childid).animate({scrollTop: top}, 500); - }; - }; - if (!_isList) { - _adjustOpen(); - }; - }; - - function getPrev(ind) { - ind = ind - 1; - if (ind < 0) { - return ind; - }; - if ($(items[ind]).hasClass(_styles.enabled) === true) { - return ind; - }; - return ind = getPrev(ind); - }; - }; - var _adjustOpen = function () { - var id = _getPostID("postID"); - var childid = _getPostID("postChildID"); - var pos = $("#" + id).offset(); - var mH = $("#" + id).height(); - var wH = $(window).height(); - var st = $(window).scrollTop(); - var cH = $("#" + childid).height(); - var top = $("#" + id).height(); //this close so its title height - if ((wH + st) < Math.floor(cH + mH + pos.top) || _settings.openDirection.toLowerCase() == 'alwaysup') { - top = cH; - $("#" + childid).css({top: "-" + top + "px", display: 'block', zIndex: _settings.zIndex}); - $("#" + id).removeClass("borderRadius borderRadiusTp").addClass("borderRadiusBtm"); - var top = $("#" + childid).offset().top; - if (top < -10) { - $("#" + childid).css({top: (parseInt($("#" + childid).css("top")) - top + 20 + st) + "px", zIndex: _settings.zIndex}); - $("#" + id).removeClass("borderRadiusBtm borderRadiusTp").addClass("borderRadius"); - }; - } else { - $("#" + childid).css({top: top + "px", zIndex: _settings.zIndex}); - $("#" + id).removeClass("borderRadius borderRadiusBtm").addClass("borderRadiusTp"); - }; - //hack for ie zindex - //i hate ie :D - if(_isIE) { - if(msieversion()<=7) { - $('div.ddcommon').css("zIndex", _settings.zIndex-10); - $("#" + id).css("zIndex", _settings.zIndex+5); - }; - }; - }; - var _open = function (e) { - if (_isDisabled === true) return false; - var id = _getPostID("postID"); - var childid = _getPostID("postChildID"); - if (!_isOpen) { - _isOpen = true; - if (msBeautify.oldDiv != '') { - $("#" + msBeautify.oldDiv).css({display: "none"}); //hide all - }; - msBeautify.oldDiv = childid; - $("#" + childid + " li:hidden").show(); //show if hidden - _adjustOpen(); - var animStyle = _settings.animStyle; - if(animStyle=="" || animStyle=="none") { - $("#" + childid).css({display:"block"}); - _scrollToIfNeeded(); - if (typeof _settings.on.open == "function") { - var d = _getDataAndUI(); - _settings.on.open(d.data, d.ui); - }; - } else { - $("#" + childid)[animStyle]("fast", function () { - _scrollToIfNeeded(); - if (typeof _settings.on.open == "function") { - var d = _getDataAndUI(); - _settings.on.open(d.data, d.ui); - }; - }); - }; - _bind_on_events(); - } else { - if(_settings.event!=='mouseover') { - _close(); - }; - }; - }; - var _close = function (e) { - _isOpen = false; - var id = _getPostID("postID"); - var childid = _getPostID("postChildID"); - if (_isList === false || _settings.enableCheckbox===true) { - $("#" + childid).css({display: "none"}); - $("#" + id).removeClass("borderRadiusTp borderRadiusBtm").addClass("borderRadius"); - }; - _unbind_on_events(); - if (typeof _settings.on.close == "function") { - var d = _getDataAndUI(); - _settings.on.close(d.data, d.ui); - }; - //rest some old stuff - _hideFilterBox(); - _childHeight(_childHeight()); //its needed after filter applied - $("#" + childid).css({zIndex:1}) - }; - /*********************** *************************************/ - var _mergeAllProp = function () { - try { - _orginial = $.extend(true, {}, getElement(_element)); - for (var i in _orginial) { - if (typeof _orginial[i] != "function") { - _this[i] = _orginial[i]; //properties - }; - }; - } catch(e) { - //silent - }; - _this.selectedText = (getElement(_element).selectedIndex >= 0) ? getElement(_element).options[getElement(_element).selectedIndex].text : ""; - _this.version = msBeautify.version.msDropdown; - _this.author = msBeautify.author; - }; - var _getDataAndUIByOption = function (opt) { - if (opt != null && typeof opt != "undefined") { - var childid = _getPostID("postChildID"); - var data = _parseOption(opt); - var ui = $("#" + childid + " li." + _styles_i.li + ":eq(" + (opt.index) + ")"); - return {data: data, ui: ui, option: opt, index: opt.index}; - }; - return null; - }; - var _getDataAndUI = function () { - var childid = _getPostID("postChildID"); - var ele = getElement(_element); - var data, ui, option, index; - if (ele.selectedIndex == -1) { - data = null; - ui = null; - option = null; - index = -1; - } else { - ui = $("#" + childid + " li." + _styles.selected); - if (ui.length > 1) { - var d = [], op = [], ind = []; - for (var i = 0; i < ui.length; i++) { - var pd = _getIndex(ui[i]); - d.push(pd); - op.push(ele.options[pd]); - }; - data = d; - option = op; - index = d; - } else { - option = ele.options[ele.selectedIndex]; - data = _parseOption(option); - index = ele.selectedIndex; - }; - }; - return {data: data, ui: ui, index: index, option: option}; - }; - var _updateTitleUI = function (index, byvalue) { - var titleid = _getPostID("postTitleID"); - var value = {}; - if (index == -1) { - value.text = " "; - value.className = ""; - value.description = ""; - value.image = ""; - } else if (typeof index != "undefined") { - var opt = getElement(_element).options[index]; - value = _parseOption(opt); - } else { - value = byvalue; - }; - //update title and current - $("#" + titleid).find("." + _styles.label).html(value.text); - getElement(titleid).className = _styles.ddTitleText + " " + value.className; - //update desction - if (value.description != "") { - $("#" + titleid).find("." + _styles.description).html(value.description).show(); - } else { - $("#" + titleid).find("." + _styles.description).html("").hide(); - }; - //update icon - var img = $("#" + titleid).find("img"); - if (img.length > 0) { - $(img).remove(); - }; - if (value.image != "" && _settings.showIcon) { - img = _createElement("img", {src: value.image}); - $("#" + titleid).prepend(img); - if(value.imagecss!="") { - img.className = value.imagecss+" "; - }; - if (value.description == "") { - img.className = img.className+_styles_i.fnone; - }; - }; - }; - var _updateProp = function (p, v) { - _this[p] = v; - }; - var _updateUI = function (a, opt, i) { //action, index, opt - var childid = _getPostID("postChildID"); - var wasSelected = false; - switch (a) { - case "add": - var li = _createChild(opt || getElement(_element).options[i]); - var index; - if (arguments.length == 3) { - index = i; - } else { - index = $("#" + childid + " li." + _styles_i.li).length - 1; - }; - if (index < 0 || !index) { - $("#" + childid + " ul").append(li); - } else { - var at = $("#" + childid + " li." + _styles_i.li)[index]; - $(at).before(li); - }; - _removeChildEvents(); - _applyChildEvents(); - if (_settings.on.add != null) { - _settings.on.add.apply(this, arguments); - }; - break; - case "remove": - wasSelected = $($("#" + childid + " li." + _styles_i.li)[i]).hasClass(_styles.selected); - $("#" + childid + " li." + _styles_i.li + ":eq(" + i + ")").remove(); - var items = $("#" + childid + " li." + _styles.enabled); - if (wasSelected == true) { - if (items.length > 0) { - $(items[0]).addClass(_styles.selected); - var ind = $("#" + childid + " li." + _styles_i.li).index(items[0]); - _setValue(ind); - }; - }; - if (items.length == 0) { - _setValue(-1); - }; - if ($("#" + childid + " li." + _styles_i.li).length < _settings.visibleRows && !_isList) { - _childHeight(-1); //set autoheight - }; - if (_settings.on.remove != null) { - _settings.on.remove.apply(this, arguments); - }; - break; - }; - }; - /************************** public methods/events **********************/ - this.act = function () { - var action = arguments[0]; - Array.prototype.shift.call(arguments); - switch (action) { - case "add": - _this.add.apply(this, arguments); - break; - case "remove": - _this.remove.apply(this, arguments); - break; - default: - try { - getElement(_element)[action].apply(getElement(_element), arguments); - } catch (e) { - //there is some error. - }; - break; - }; - }; - - this.add = function () { - var text, value, title, image, description; - var obj = arguments[0]; - if (typeof obj == "string") { - text = obj; - value = text; - opt = new Option(text, value); - } else { - text = obj.text || ''; - value = obj.value || text; - title = obj.title || ''; - image = obj.image || ''; - description = obj.description || ''; - //image:imagePath, title:title, description:description, value:opt.value, text:opt.text, className:opt.className||"" - opt = new Option(text, value); - $(opt).data("description", description); - $(opt).data("image", image); - $(opt).data("title", title); - }; - arguments[0] = opt; //this option - getElement(_element).add.apply(getElement(_element), arguments); - _updateProp("children", getElement(_element)["children"]); - _updateProp("length", getElement(_element).length); - _updateUI("add", opt, arguments[1]); - }; - this.remove = function (i) { - getElement(_element).remove(i); - _updateProp("children", getElement(_element)["children"]); - _updateProp("length", getElement(_element).length); - _updateUI("remove", undefined, i); - }; - this.set = function (prop, val) { - if (typeof prop == "undefined" || typeof val == "undefined") return false; - prop = prop.toString(); - try { - _updateProp(prop, val); - } catch (e) {/*this is ready only */}; - - switch (prop) { - case "size": - getElement(_element)[prop] = val; - if (val == 0) { - getElement(_element).multiple = false; //if size is zero multiple should be false - }; - _isList = (getElement(_element).size > 1 || getElement(_element).multiple == true) ? true : false; - _fixedForList(); - break; - case "multiple": - getElement(_element)[prop] = val; - _isList = (getElement(_element).size > 1 || getElement(_element).multiple == true) ? true : false; - _isMultiple = getElement(_element).multiple; - _fixedForList(); - _updateProp(prop, val); - break; - case "disabled": - getElement(_element)[prop] = val; - _isDisabled = val; - _fixedForDisabled(); - break; - case "selectedIndex": - case "value": - getElement(_element)[prop] = val; - var childid = _getPostID("postChildID"); - $("#" + childid + " li." + _styles_i.li).removeClass(_styles.selected); - $($("#" + childid + " li." + _styles_i.li)[getElement(_element).selectedIndex]).addClass(_styles.selected); - _setValue(getElement(_element).selectedIndex); - break; - case "length": - var childid = _getPostID("postChildID"); - if (val < getElement(_element).length) { - getElement(_element)[prop] = val; - if (val == 0) { - $("#" + childid + " li." + _styles_i.li).remove(); - _setValue(-1); - } else { - $("#" + childid + " li." + _styles_i.li + ":gt(" + (val - 1) + ")").remove(); - if ($("#" + childid + " li." + _styles.selected).length == 0) { - $("#" + childid + " li." + _styles.enabled + ":eq(0)").addClass(_styles.selected); - }; - }; - _updateProp(prop, val); - _updateProp("children", getElement(_element)["children"]); - }; - break; - case "id": - //please i need this. so preventing to change it. will work on this later - break; - default: - //check if this is not a readonly properties - try { - getElement(_element)[prop] = val; - _updateProp(prop, val); - } catch (e) { - //silent - }; - break; - } - }; - this.get = function (prop) { - return _this[prop] || getElement(_element)[prop]; //return if local else from original - }; - this.visible = function (val) { - var id = _getPostID("postID"); - if (val === true) { - $("#" + id).show(); - } else if (val === false) { - $("#" + id).hide(); - } else { - return ($("#" + id).css("display")=="none") ? false : true; - }; - }; - this.debug = function (v) { - msBeautify.debug(v); - }; - this.close = function () { - _close(); - }; - this.open = function () { - _open(); - }; - this.showRows = function (r) { - if (typeof r == "undefined" || r == 0) { - return false; - }; - _settings.visibleRows = r; - _childHeight(_childHeight()); - }; - this.visibleRows = this.showRows; - this.on = function (type, fn) { - $("#" + _element).on(type, fn); - }; - this.off = function (type, fn) { - $("#" + _element).off(type, fn); - }; - this.addMyEvent = this.on; - this.getData = function () { - return _getDataAndUI() - }; - this.namedItem = function () { - var opt = getElement(_element).namedItem.apply(getElement(_element), arguments); - return _getDataAndUIByOption(opt); - }; - this.item = function () { - var opt = getElement(_element).item.apply(getElement(_element), arguments); - return _getDataAndUIByOption(opt); - }; - //v 3.2 - this.setIndexByValue = function(val) { - this.set("value", val); - }; - this.destroy = function () { - var hidid = _getPostID("postElementHolder"); - var id = _getPostID("postID"); - $("#" + id + ", #" + id + " *").off(); - $("#" + id).remove(); - $("#" + _element).parent().replaceWith($("#" + _element)); - $("#" + _element).data("dd", null); - }; - //Create msDropDown - _construct(); -}; -//bind in jquery -$.fn.extend({ - msDropDown: function(settings) - { - return this.each(function() - { - if (!$(this).data('dd')){ - var mydropdown = new dd(this, settings); - $(this).data('dd', mydropdown); - }; - }); - } -}); -$.fn.msDropdown = $.fn.msDropDown; //make a copy -})(jQuery); \ No newline at end of file diff --git a/lib/jquery.dd-3.3/skin2.css b/lib/jquery.dd-3.3/skin2.css deleted file mode 100644 index 6fddd2bcde..0000000000 --- a/lib/jquery.dd-3.3/skin2.css +++ /dev/null @@ -1,20 +0,0 @@ -.blue{border:1px solid #ddd;} -.blue .divider{display:none} -.blue .arrow{width:27px;height:27px; margin-top:-14px; background:url(../../../images/jquery.dd/skin2/dd_arrow.gif) no-repeat;} -.blue .arrow:hover{background-position:0 100%;} -.blue .ddTitle{color:#fff;background:#10bbe6 url(../../../images/jquery.dd/skin2/title-bg.gif) repeat-x left top;} -.blue .ddTitle .ddTitleText{padding:10px 20px 10px 5px; font-weight:bold; font-size:16px;} -.blue .ddTitle .ddTitleText .ddTitleText{padding:0;} -.blue .ddTitle .description{font-size:12px; color:#666} -.blue .ddTitle .ddTitleText img{padding-right:5px;} -.blue .ddChild{border:1px solid #c3c3c3; background-color:#fff; left:-1px;} -.blue .ddChild li{padding:5px; background-color:#fff; border-bottom:1px solid #c3c3c3;} -.blue .ddChild li .description{color:#666;} -.blue .ddChild li .ddlabel{color:#333;} -.blue .ddChild li.hover{background-color:#66CCFF;} -.blue .ddChild li img{padding:0 6px 0 0;} -.blue .ddChild li.optgroup{padding:0;} -.blue .ddChild li.optgroup .optgroupTitle{padding:0 5px; font-weight:bold; font-style:italic} -.blue .ddChild li.optgroup ul li{padding:5px 5px 5px 15px} -.blue .ddChild li.selected{background-color:#0d97ba;} -.blue .ddChild li.selected .ddlabel{color:#fff;} diff --git a/lib/jquery.jscrollpane-2.0.17/Gruntfile.js b/lib/jquery.jscrollpane-2.0.17/Gruntfile.js deleted file mode 100644 index 715f6e781e..0000000000 --- a/lib/jquery.jscrollpane-2.0.17/Gruntfile.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = function(grunt) { - - var name = "jquery.jscrollpane"; - var version = "2.0.17"; - var base = "wv.ui"; - - var lib = "lib/" + name + "-" + version + "/"; - var ext = "src/ext/" + base + "/" + name + "-" + version + "/"; - var debug_js = ext + name + ".js"; - var min_js = ext + name + ".min.js"; - - var js = [ - lib + "jquery.mousewheel.js", - lib + "mwheelIntent.js", - lib + "jquery.jscrollpane.js", - ]; - - var uglifyFiles = {}; - uglifyFiles[min_js] = [debug_js]; - - grunt.initConfig({ - concat: { - js: { - src: js, - dest: debug_js - }, - }, - - uglify: { - js: { - files: uglifyFiles - } - } - }); - - grunt.file.setBase("../.."); - grunt.loadNpmTasks("grunt-contrib-concat"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - - grunt.registerTask("default", ["concat", "uglify"]); - -}; diff --git a/lib/jquery.jscrollpane-2.0.17/jquery.jscrollpane.js b/lib/jquery.jscrollpane-2.0.17/jquery.jscrollpane.js deleted file mode 100644 index 12983881a8..0000000000 --- a/lib/jquery.jscrollpane-2.0.17/jquery.jscrollpane.js +++ /dev/null @@ -1,1447 +0,0 @@ -/*! - * jScrollPane - v2.0.17 - 2013-08-17 - * http://jscrollpane.kelvinluck.com/ - * - * Copyright (c) 2013 Kelvin Luck - * Dual licensed under the MIT or GPL licenses. - */ - -// Script: jScrollPane - cross browser customisable scrollbars -// -// *Version: 2.0.17, Last updated: 2013-08-17* -// -// Project Home - http://jscrollpane.kelvinluck.com/ -// GitHub - http://github.com/vitch/jScrollPane -// Source - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.js -// (Minified) - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.min.js -// -// About: License -// -// Copyright (c) 2013 Kelvin Luck -// Dual licensed under the MIT or GPL Version 2 licenses. -// http://jscrollpane.kelvinluck.com/MIT-LICENSE.txt -// http://jscrollpane.kelvinluck.com/GPL-LICENSE.txt -// -// About: Examples -// -// All examples and demos are available through the jScrollPane example site at: -// http://jscrollpane.kelvinluck.com/ -// -// About: Support and Testing -// -// This plugin is tested on the browsers below and has been found to work reliably on them. If you run -// into a problem on one of the supported browsers then please visit the support section on the jScrollPane -// website (http://jscrollpane.kelvinluck.com/) for more information on getting support. You are also -// welcome to fork the project on GitHub if you can contribute a fix for a given issue. -// -// jQuery Versions - tested in 1.4.2+ - reported to work in 1.3.x -// Browsers Tested - Firefox 3.6.8, Safari 5, Opera 10.6, Chrome 5.0, IE 6, 7, 8 -// -// About: Release History -// -// 2.0.17 - (2013-08-17) Working correctly when box-sizing is set to border-box (thanks @pieht) -// 2.0.16 - (2013-07-30) Resetting left position when scroll is removed. Fixes #189 -// 2.0.15 - (2013-07-29) Fixed issue with scrollToElement where the destX and destY are undefined. -// 2.0.14 - (2013-05-01) Updated to most recent mouse wheel plugin (see #106) and related changes for sensible scroll speed -// 2.0.13 - (2013-05-01) Switched to semver compatible version name -// 2.0.0beta12 - (2012-09-27) fix for jQuery 1.8+ -// 2.0.0beta11 - (2012-05-14) -// 2.0.0beta10 - (2011-04-17) cleaner required size calculation, improved keyboard support, stickToBottom/Left, other small fixes -// 2.0.0beta9 - (2011-01-31) new API methods, bug fixes and correct keyboard support for FF/OSX -// 2.0.0beta8 - (2011-01-29) touchscreen support, improved keyboard support -// 2.0.0beta7 - (2011-01-23) scroll speed consistent (thanks Aivo Paas) -// 2.0.0beta6 - (2010-12-07) scrollToElement horizontal support -// 2.0.0beta5 - (2010-10-18) jQuery 1.4.3 support, various bug fixes -// 2.0.0beta4 - (2010-09-17) clickOnTrack support, bug fixes -// 2.0.0beta3 - (2010-08-27) Horizontal mousewheel, mwheelIntent, keyboard support, bug fixes -// 2.0.0beta2 - (2010-08-21) Bug fixes -// 2.0.0beta1 - (2010-08-17) Rewrite to follow modern best practices and enable horizontal scrolling, initially hidden -// elements and dynamically sized elements. -// 1.x - (2006-12-31 - 2010-07-31) Initial version, hosted at googlecode, deprecated - -(function($,window,undefined){ - - $.fn.jScrollPane = function(settings) - { - // JScrollPane "class" - public methods are available through $('selector').data('jsp') - function JScrollPane(elem, s) - { - var settings, jsp = this, pane, paneWidth, paneHeight, container, contentWidth, contentHeight, - percentInViewH, percentInViewV, isScrollableV, isScrollableH, verticalDrag, dragMaxY, - verticalDragPosition, horizontalDrag, dragMaxX, horizontalDragPosition, - verticalBar, verticalTrack, scrollbarWidth, verticalTrackHeight, verticalDragHeight, arrowUp, arrowDown, - horizontalBar, horizontalTrack, horizontalTrackWidth, horizontalDragWidth, arrowLeft, arrowRight, - reinitialiseInterval, originalPadding, originalPaddingTotalWidth, previousContentWidth, - wasAtTop = true, wasAtLeft = true, wasAtBottom = false, wasAtRight = false, - originalElement = elem.clone(false, false).empty(), - mwEvent = $.fn.mwheelIntent ? 'mwheelIntent.jsp' : 'mousewheel.jsp'; - - if (elem.css('box-sizing') === 'border-box') { - originalPadding = 0; - originalPaddingTotalWidth = 0; - } else { - originalPadding = elem.css('paddingTop') + ' ' + - elem.css('paddingRight') + ' ' + - elem.css('paddingBottom') + ' ' + - elem.css('paddingLeft'); - originalPaddingTotalWidth = (parseInt(elem.css('paddingLeft'), 10) || 0) + - (parseInt(elem.css('paddingRight'), 10) || 0); - } - - function initialise(s) - { - - var /*firstChild, lastChild, */isMaintainingPositon, lastContentX, lastContentY, - hasContainingSpaceChanged, originalScrollTop, originalScrollLeft, - maintainAtBottom = false, maintainAtRight = false; - - settings = s; - - if (pane === undefined) { - originalScrollTop = elem.scrollTop(); - originalScrollLeft = elem.scrollLeft(); - - elem.css( - { - overflow: 'hidden', - padding: 0 - } - ); - // TODO: Deal with where width/ height is 0 as it probably means the element is hidden and we should - // come back to it later and check once it is unhidden... - paneWidth = elem.innerWidth() + originalPaddingTotalWidth; - paneHeight = elem.innerHeight(); - - elem.width(paneWidth); - - pane = $('
').css('padding', originalPadding).append(elem.children()); - container = $('
') - .css({ - 'width': paneWidth + 'px', - 'height': paneHeight + 'px' - } - ).append(pane).appendTo(elem); - - /* - // Move any margins from the first and last children up to the container so they can still - // collapse with neighbouring elements as they would before jScrollPane - firstChild = pane.find(':first-child'); - lastChild = pane.find(':last-child'); - elem.css( - { - 'margin-top': firstChild.css('margin-top'), - 'margin-bottom': lastChild.css('margin-bottom') - } - ); - firstChild.css('margin-top', 0); - lastChild.css('margin-bottom', 0); - */ - } else { - elem.css('width', ''); - - maintainAtBottom = settings.stickToBottom && isCloseToBottom(); - maintainAtRight = settings.stickToRight && isCloseToRight(); - - hasContainingSpaceChanged = elem.innerWidth() + originalPaddingTotalWidth != paneWidth || elem.outerHeight() != paneHeight; - - if (hasContainingSpaceChanged) { - paneWidth = elem.innerWidth() + originalPaddingTotalWidth; - paneHeight = elem.innerHeight(); - container.css({ - width: paneWidth + 'px', - height: paneHeight + 'px' - }); - } - - // If nothing changed since last check... - if (!hasContainingSpaceChanged && previousContentWidth == contentWidth && pane.outerHeight() == contentHeight) { - elem.width(paneWidth); - return; - } - previousContentWidth = contentWidth; - - pane.css('width', ''); - elem.width(paneWidth); - - container.find('>.jspVerticalBar,>.jspHorizontalBar').remove().end(); - } - - pane.css('overflow', 'auto'); - if (s.contentWidth) { - contentWidth = s.contentWidth; - } else { - contentWidth = pane[0].scrollWidth; - } - contentHeight = pane[0].scrollHeight; - pane.css('overflow', ''); - - percentInViewH = contentWidth / paneWidth; - percentInViewV = contentHeight / paneHeight; - isScrollableV = percentInViewV > 1; - - isScrollableH = percentInViewH > 1; - - //console.log(paneWidth, paneHeight, contentWidth, contentHeight, percentInViewH, percentInViewV, isScrollableH, isScrollableV); - - if (!(isScrollableH || isScrollableV)) { - elem.removeClass('jspScrollable'); - pane.css({ - top: 0, - left: 0, - width: container.width() - originalPaddingTotalWidth - }); - removeMousewheel(); - removeFocusHandler(); - removeKeyboardNav(); - removeClickOnTrack(); - } else { - elem.addClass('jspScrollable'); - - isMaintainingPositon = settings.maintainPosition && (verticalDragPosition || horizontalDragPosition); - if (isMaintainingPositon) { - lastContentX = contentPositionX(); - lastContentY = contentPositionY(); - } - - initialiseVerticalScroll(); - initialiseHorizontalScroll(); - resizeScrollbars(); - - if (isMaintainingPositon) { - scrollToX(maintainAtRight ? (contentWidth - paneWidth ) : lastContentX, false); - scrollToY(maintainAtBottom ? (contentHeight - paneHeight) : lastContentY, false); - } - - initFocusHandler(); - initMousewheel(); - initTouch(); - - if (settings.enableKeyboardNavigation) { - initKeyboardNav(); - } - if (settings.clickOnTrack) { - initClickOnTrack(); - } - - observeHash(); - if (settings.hijackInternalLinks) { - hijackInternalLinks(); - } - } - - if (settings.autoReinitialise && !reinitialiseInterval) { - reinitialiseInterval = setInterval( - function() - { - initialise(settings); - }, - settings.autoReinitialiseDelay - ); - } else if (!settings.autoReinitialise && reinitialiseInterval) { - clearInterval(reinitialiseInterval); - } - - originalScrollTop && elem.scrollTop(0) && scrollToY(originalScrollTop, false); - originalScrollLeft && elem.scrollLeft(0) && scrollToX(originalScrollLeft, false); - - elem.trigger('jsp-initialised', [isScrollableH || isScrollableV]); - } - - function initialiseVerticalScroll() - { - if (isScrollableV) { - - container.append( - $('
').append( - $('
'), - $('
').append( - $('
').append( - $('
'), - $('
') - ) - ), - $('
') - ) - ); - - verticalBar = container.find('>.jspVerticalBar'); - verticalTrack = verticalBar.find('>.jspTrack'); - verticalDrag = verticalTrack.find('>.jspDrag'); - - if (settings.showArrows) { - arrowUp = $('').bind( - 'mousedown.jsp', getArrowScroll(0, -1) - ).bind('click.jsp', nil); - arrowDown = $('').bind( - 'mousedown.jsp', getArrowScroll(0, 1) - ).bind('click.jsp', nil); - if (settings.arrowScrollOnHover) { - arrowUp.bind('mouseover.jsp', getArrowScroll(0, -1, arrowUp)); - arrowDown.bind('mouseover.jsp', getArrowScroll(0, 1, arrowDown)); - } - - appendArrows(verticalTrack, settings.verticalArrowPositions, arrowUp, arrowDown); - } - - verticalTrackHeight = paneHeight; - container.find('>.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow').each( - function() - { - verticalTrackHeight -= $(this).outerHeight(); - } - ); - - - verticalDrag.hover( - function() - { - verticalDrag.addClass('jspHover'); - }, - function() - { - verticalDrag.removeClass('jspHover'); - } - ).bind( - 'mousedown.jsp', - function(e) - { - // Stop IE from allowing text selection - $('html').bind('dragstart.jsp selectstart.jsp', nil); - - verticalDrag.addClass('jspActive'); - - var startY = e.pageY - verticalDrag.position().top; - - $('html').bind( - 'mousemove.jsp', - function(e) - { - positionDragY(e.pageY - startY, false); - } - ).bind('mouseup.jsp mouseleave.jsp', cancelDrag); - return false; - } - ); - sizeVerticalScrollbar(); - } - } - - function sizeVerticalScrollbar() - { - verticalTrack.height(verticalTrackHeight + 'px'); - verticalDragPosition = 0; - scrollbarWidth = settings.verticalGutter + verticalTrack.outerWidth(); - - // Make the pane thinner to allow for the vertical scrollbar - pane.width(paneWidth - scrollbarWidth - originalPaddingTotalWidth); - - // Add margin to the left of the pane if scrollbars are on that side (to position - // the scrollbar on the left or right set it's left or right property in CSS) - try { - if (verticalBar.position().left === 0) { - pane.css('margin-left', scrollbarWidth + 'px'); - } - } catch (err) { - } - } - - function initialiseHorizontalScroll() - { - if (isScrollableH) { - - container.append( - $('
').append( - $('
'), - $('
').append( - $('
').append( - $('
'), - $('
') - ) - ), - $('
') - ) - ); - - horizontalBar = container.find('>.jspHorizontalBar'); - horizontalTrack = horizontalBar.find('>.jspTrack'); - horizontalDrag = horizontalTrack.find('>.jspDrag'); - - if (settings.showArrows) { - arrowLeft = $('').bind( - 'mousedown.jsp', getArrowScroll(-1, 0) - ).bind('click.jsp', nil); - arrowRight = $('').bind( - 'mousedown.jsp', getArrowScroll(1, 0) - ).bind('click.jsp', nil); - if (settings.arrowScrollOnHover) { - arrowLeft.bind('mouseover.jsp', getArrowScroll(-1, 0, arrowLeft)); - arrowRight.bind('mouseover.jsp', getArrowScroll(1, 0, arrowRight)); - } - appendArrows(horizontalTrack, settings.horizontalArrowPositions, arrowLeft, arrowRight); - } - - horizontalDrag.hover( - function() - { - horizontalDrag.addClass('jspHover'); - }, - function() - { - horizontalDrag.removeClass('jspHover'); - } - ).bind( - 'mousedown.jsp', - function(e) - { - // Stop IE from allowing text selection - $('html').bind('dragstart.jsp selectstart.jsp', nil); - - horizontalDrag.addClass('jspActive'); - - var startX = e.pageX - horizontalDrag.position().left; - - $('html').bind( - 'mousemove.jsp', - function(e) - { - positionDragX(e.pageX - startX, false); - } - ).bind('mouseup.jsp mouseleave.jsp', cancelDrag); - return false; - } - ); - horizontalTrackWidth = container.innerWidth(); - sizeHorizontalScrollbar(); - } - } - - function sizeHorizontalScrollbar() - { - container.find('>.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow').each( - function() - { - horizontalTrackWidth -= $(this).outerWidth(); - } - ); - - horizontalTrack.width(horizontalTrackWidth + 'px'); - horizontalDragPosition = 0; - } - - function resizeScrollbars() - { - if (isScrollableH && isScrollableV) { - var horizontalTrackHeight = horizontalTrack.outerHeight(), - verticalTrackWidth = verticalTrack.outerWidth(); - verticalTrackHeight -= horizontalTrackHeight; - $(horizontalBar).find('>.jspCap:visible,>.jspArrow').each( - function() - { - horizontalTrackWidth += $(this).outerWidth(); - } - ); - horizontalTrackWidth -= verticalTrackWidth; - paneHeight -= verticalTrackWidth; - paneWidth -= horizontalTrackHeight; - horizontalTrack.parent().append( - $('
').css('width', horizontalTrackHeight + 'px') - ); - sizeVerticalScrollbar(); - sizeHorizontalScrollbar(); - } - // reflow content - if (isScrollableH) { - pane.width((container.outerWidth() - originalPaddingTotalWidth) + 'px'); - } - contentHeight = pane.outerHeight(); - percentInViewV = contentHeight / paneHeight; - - if (isScrollableH) { - horizontalDragWidth = Math.ceil(1 / percentInViewH * horizontalTrackWidth); - if (horizontalDragWidth > settings.horizontalDragMaxWidth) { - horizontalDragWidth = settings.horizontalDragMaxWidth; - } else if (horizontalDragWidth < settings.horizontalDragMinWidth) { - horizontalDragWidth = settings.horizontalDragMinWidth; - } - horizontalDrag.width(horizontalDragWidth + 'px'); - dragMaxX = horizontalTrackWidth - horizontalDragWidth; - _positionDragX(horizontalDragPosition); // To update the state for the arrow buttons - } - if (isScrollableV) { - verticalDragHeight = Math.ceil(1 / percentInViewV * verticalTrackHeight); - if (verticalDragHeight > settings.verticalDragMaxHeight) { - verticalDragHeight = settings.verticalDragMaxHeight; - } else if (verticalDragHeight < settings.verticalDragMinHeight) { - verticalDragHeight = settings.verticalDragMinHeight; - } - verticalDrag.height(verticalDragHeight + 'px'); - dragMaxY = verticalTrackHeight - verticalDragHeight; - _positionDragY(verticalDragPosition); // To update the state for the arrow buttons - } - } - - function appendArrows(ele, p, a1, a2) - { - var p1 = "before", p2 = "after", aTemp; - - // Sniff for mac... Is there a better way to determine whether the arrows would naturally appear - // at the top or the bottom of the bar? - if (p == "os") { - p = /Mac/.test(navigator.platform) ? "after" : "split"; - } - if (p == p1) { - p2 = p; - } else if (p == p2) { - p1 = p; - aTemp = a1; - a1 = a2; - a2 = aTemp; - } - - ele[p1](a1)[p2](a2); - } - - function getArrowScroll(dirX, dirY, ele) - { - return function() - { - arrowScroll(dirX, dirY, this, ele); - this.blur(); - return false; - }; - } - - function arrowScroll(dirX, dirY, arrow, ele) - { - arrow = $(arrow).addClass('jspActive'); - - var eve, - scrollTimeout, - isFirst = true, - doScroll = function() - { - if (dirX !== 0) { - jsp.scrollByX(dirX * settings.arrowButtonSpeed); - } - if (dirY !== 0) { - jsp.scrollByY(dirY * settings.arrowButtonSpeed); - } - scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.arrowRepeatFreq); - isFirst = false; - }; - - doScroll(); - - eve = ele ? 'mouseout.jsp' : 'mouseup.jsp'; - ele = ele || $('html'); - ele.bind( - eve, - function() - { - arrow.removeClass('jspActive'); - scrollTimeout && clearTimeout(scrollTimeout); - scrollTimeout = null; - ele.unbind(eve); - } - ); - } - - function initClickOnTrack() - { - removeClickOnTrack(); - if (isScrollableV) { - verticalTrack.bind( - 'mousedown.jsp', - function(e) - { - if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) { - var clickedTrack = $(this), - offset = clickedTrack.offset(), - direction = e.pageY - offset.top - verticalDragPosition, - scrollTimeout, - isFirst = true, - doScroll = function() - { - var offset = clickedTrack.offset(), - pos = e.pageY - offset.top - verticalDragHeight / 2, - contentDragY = paneHeight * settings.scrollPagePercent, - dragY = dragMaxY * contentDragY / (contentHeight - paneHeight); - if (direction < 0) { - if (verticalDragPosition - dragY > pos) { - jsp.scrollByY(-contentDragY); - } else { - positionDragY(pos); - } - } else if (direction > 0) { - if (verticalDragPosition + dragY < pos) { - jsp.scrollByY(contentDragY); - } else { - positionDragY(pos); - } - } else { - cancelClick(); - return; - } - scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq); - isFirst = false; - }, - cancelClick = function() - { - scrollTimeout && clearTimeout(scrollTimeout); - scrollTimeout = null; - $(document).unbind('mouseup.jsp', cancelClick); - }; - doScroll(); - $(document).bind('mouseup.jsp', cancelClick); - return false; - } - } - ); - } - - if (isScrollableH) { - horizontalTrack.bind( - 'mousedown.jsp', - function(e) - { - if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) { - var clickedTrack = $(this), - offset = clickedTrack.offset(), - direction = e.pageX - offset.left - horizontalDragPosition, - scrollTimeout, - isFirst = true, - doScroll = function() - { - var offset = clickedTrack.offset(), - pos = e.pageX - offset.left - horizontalDragWidth / 2, - contentDragX = paneWidth * settings.scrollPagePercent, - dragX = dragMaxX * contentDragX / (contentWidth - paneWidth); - if (direction < 0) { - if (horizontalDragPosition - dragX > pos) { - jsp.scrollByX(-contentDragX); - } else { - positionDragX(pos); - } - } else if (direction > 0) { - if (horizontalDragPosition + dragX < pos) { - jsp.scrollByX(contentDragX); - } else { - positionDragX(pos); - } - } else { - cancelClick(); - return; - } - scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq); - isFirst = false; - }, - cancelClick = function() - { - scrollTimeout && clearTimeout(scrollTimeout); - scrollTimeout = null; - $(document).unbind('mouseup.jsp', cancelClick); - }; - doScroll(); - $(document).bind('mouseup.jsp', cancelClick); - return false; - } - } - ); - } - } - - function removeClickOnTrack() - { - if (horizontalTrack) { - horizontalTrack.unbind('mousedown.jsp'); - } - if (verticalTrack) { - verticalTrack.unbind('mousedown.jsp'); - } - } - - function cancelDrag() - { - $('html').unbind('dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp'); - - if (verticalDrag) { - verticalDrag.removeClass('jspActive'); - } - if (horizontalDrag) { - horizontalDrag.removeClass('jspActive'); - } - } - - function positionDragY(destY, animate) - { - if (!isScrollableV) { - return; - } - if (destY < 0) { - destY = 0; - } else if (destY > dragMaxY) { - destY = dragMaxY; - } - - // can't just check if(animate) because false is a valid value that could be passed in... - if (animate === undefined) { - animate = settings.animateScroll; - } - if (animate) { - jsp.animate(verticalDrag, 'top', destY, _positionDragY); - } else { - verticalDrag.css('top', destY); - _positionDragY(destY); - } - - } - - function _positionDragY(destY) - { - if (destY === undefined) { - destY = verticalDrag.position().top; - } - - container.scrollTop(0); - verticalDragPosition = destY; - - var isAtTop = verticalDragPosition === 0, - isAtBottom = verticalDragPosition == dragMaxY, - percentScrolled = destY/ dragMaxY, - destTop = -percentScrolled * (contentHeight - paneHeight); - - if (wasAtTop != isAtTop || wasAtBottom != isAtBottom) { - wasAtTop = isAtTop; - wasAtBottom = isAtBottom; - elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]); - } - - updateVerticalArrows(isAtTop, isAtBottom); - pane.css('top', destTop); - elem.trigger('jsp-scroll-y', [-destTop, isAtTop, isAtBottom]).trigger('scroll'); - } - - function positionDragX(destX, animate) - { - if (!isScrollableH) { - return; - } - if (destX < 0) { - destX = 0; - } else if (destX > dragMaxX) { - destX = dragMaxX; - } - - if (animate === undefined) { - animate = settings.animateScroll; - } - if (animate) { - jsp.animate(horizontalDrag, 'left', destX, _positionDragX); - } else { - horizontalDrag.css('left', destX); - _positionDragX(destX); - } - } - - function _positionDragX(destX) - { - if (destX === undefined) { - destX = horizontalDrag.position().left; - } - - container.scrollTop(0); - horizontalDragPosition = destX; - - var isAtLeft = horizontalDragPosition === 0, - isAtRight = horizontalDragPosition == dragMaxX, - percentScrolled = destX / dragMaxX, - destLeft = -percentScrolled * (contentWidth - paneWidth); - - if (wasAtLeft != isAtLeft || wasAtRight != isAtRight) { - wasAtLeft = isAtLeft; - wasAtRight = isAtRight; - elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]); - } - - updateHorizontalArrows(isAtLeft, isAtRight); - pane.css('left', destLeft); - elem.trigger('jsp-scroll-x', [-destLeft, isAtLeft, isAtRight]).trigger('scroll'); - } - - function updateVerticalArrows(isAtTop, isAtBottom) - { - if (settings.showArrows) { - arrowUp[isAtTop ? 'addClass' : 'removeClass']('jspDisabled'); - arrowDown[isAtBottom ? 'addClass' : 'removeClass']('jspDisabled'); - } - } - - function updateHorizontalArrows(isAtLeft, isAtRight) - { - if (settings.showArrows) { - arrowLeft[isAtLeft ? 'addClass' : 'removeClass']('jspDisabled'); - arrowRight[isAtRight ? 'addClass' : 'removeClass']('jspDisabled'); - } - } - - function scrollToY(destY, animate) - { - var percentScrolled = destY / (contentHeight - paneHeight); - positionDragY(percentScrolled * dragMaxY, animate); - } - - function scrollToX(destX, animate) - { - var percentScrolled = destX / (contentWidth - paneWidth); - positionDragX(percentScrolled * dragMaxX, animate); - } - - function scrollToElement(ele, stickToTop, animate) - { - var e, eleHeight, eleWidth, eleTop = 0, eleLeft = 0, viewportTop, viewportLeft, maxVisibleEleTop, maxVisibleEleLeft, destY, destX; - - // Legal hash values aren't necessarily legal jQuery selectors so we need to catch any - // errors from the lookup... - try { - e = $(ele); - } catch (err) { - return; - } - eleHeight = e.outerHeight(); - eleWidth= e.outerWidth(); - - container.scrollTop(0); - container.scrollLeft(0); - - // loop through parents adding the offset top of any elements that are relatively positioned between - // the focused element and the jspPane so we can get the true distance from the top - // of the focused element to the top of the scrollpane... - while (!e.is('.jspPane')) { - eleTop += e.position().top; - eleLeft += e.position().left; - e = e.offsetParent(); - if (/^body|html$/i.test(e[0].nodeName)) { - // we ended up too high in the document structure. Quit! - return; - } - } - - viewportTop = contentPositionY(); - maxVisibleEleTop = viewportTop + paneHeight; - if (eleTop < viewportTop || stickToTop) { // element is above viewport - destY = eleTop - settings.verticalGutter; - } else if (eleTop + eleHeight > maxVisibleEleTop) { // element is below viewport - destY = eleTop - paneHeight + eleHeight + settings.verticalGutter; - } - if (!isNaN(destY)) { - scrollToY(destY, animate); - } - - viewportLeft = contentPositionX(); - maxVisibleEleLeft = viewportLeft + paneWidth; - if (eleLeft < viewportLeft || stickToTop) { // element is to the left of viewport - destX = eleLeft - settings.horizontalGutter; - } else if (eleLeft + eleWidth > maxVisibleEleLeft) { // element is to the right viewport - destX = eleLeft - paneWidth + eleWidth + settings.horizontalGutter; - } - if (!isNaN(destX)) { - scrollToX(destX, animate); - } - - } - - function contentPositionX() - { - return -pane.position().left; - } - - function contentPositionY() - { - return -pane.position().top; - } - - function isCloseToBottom() - { - var scrollableHeight = contentHeight - paneHeight; - return (scrollableHeight > 20) && (scrollableHeight - contentPositionY() < 10); - } - - function isCloseToRight() - { - var scrollableWidth = contentWidth - paneWidth; - return (scrollableWidth > 20) && (scrollableWidth - contentPositionX() < 10); - } - - function initMousewheel() - { - container.unbind(mwEvent).bind( - mwEvent, - function (event, delta, deltaX, deltaY) { - var dX = horizontalDragPosition, dY = verticalDragPosition; - jsp.scrollBy(deltaX * settings.mouseWheelSpeed, -deltaY * settings.mouseWheelSpeed, false); - // return true if there was no movement so rest of screen can scroll - return dX == horizontalDragPosition && dY == verticalDragPosition; - } - ); - } - - function removeMousewheel() - { - container.unbind(mwEvent); - } - - function nil() - { - return false; - } - - function initFocusHandler() - { - pane.find(':input,a').unbind('focus.jsp').bind( - 'focus.jsp', - function(e) - { - scrollToElement(e.target, false); - } - ); - } - - function removeFocusHandler() - { - pane.find(':input,a').unbind('focus.jsp'); - } - - function initKeyboardNav() - { - var keyDown, elementHasScrolled, validParents = []; - isScrollableH && validParents.push(horizontalBar[0]); - isScrollableV && validParents.push(verticalBar[0]); - - // IE also focuses elements that don't have tabindex set. - pane.focus( - function() - { - elem.focus(); - } - ); - - elem.attr('tabindex', 0) - .unbind('keydown.jsp keypress.jsp') - .bind( - 'keydown.jsp', - function(e) - { - if (e.target !== this && !(validParents.length && $(e.target).closest(validParents).length)){ - return; - } - var dX = horizontalDragPosition, dY = verticalDragPosition; - switch(e.keyCode) { - case 40: // down - case 38: // up - case 34: // page down - case 32: // space - case 33: // page up - case 39: // right - case 37: // left - keyDown = e.keyCode; - keyDownHandler(); - break; - case 35: // end - scrollToY(contentHeight - paneHeight); - keyDown = null; - break; - case 36: // home - scrollToY(0); - keyDown = null; - break; - } - - elementHasScrolled = e.keyCode == keyDown && dX != horizontalDragPosition || dY != verticalDragPosition; - return !elementHasScrolled; - } - ).bind( - 'keypress.jsp', // For FF/ OSX so that we can cancel the repeat key presses if the JSP scrolls... - function(e) - { - if (e.keyCode == keyDown) { - keyDownHandler(); - } - return !elementHasScrolled; - } - ); - - if (settings.hideFocus) { - elem.css('outline', 'none'); - if ('hideFocus' in container[0]){ - elem.attr('hideFocus', true); - } - } else { - elem.css('outline', ''); - if ('hideFocus' in container[0]){ - elem.attr('hideFocus', false); - } - } - - function keyDownHandler() - { - var dX = horizontalDragPosition, dY = verticalDragPosition; - switch(keyDown) { - case 40: // down - jsp.scrollByY(settings.keyboardSpeed, false); - break; - case 38: // up - jsp.scrollByY(-settings.keyboardSpeed, false); - break; - case 34: // page down - case 32: // space - jsp.scrollByY(paneHeight * settings.scrollPagePercent, false); - break; - case 33: // page up - jsp.scrollByY(-paneHeight * settings.scrollPagePercent, false); - break; - case 39: // right - jsp.scrollByX(settings.keyboardSpeed, false); - break; - case 37: // left - jsp.scrollByX(-settings.keyboardSpeed, false); - break; - } - - elementHasScrolled = dX != horizontalDragPosition || dY != verticalDragPosition; - return elementHasScrolled; - } - } - - function removeKeyboardNav() - { - elem.attr('tabindex', '-1') - .removeAttr('tabindex') - .unbind('keydown.jsp keypress.jsp'); - } - - function observeHash() - { - if (location.hash && location.hash.length > 1) { - var e, - retryInt, - hash = escape(location.hash.substr(1)) // hash must be escaped to prevent XSS - ; - try { - e = $('#' + hash + ', a[name="' + hash + '"]'); - } catch (err) { - return; - } - - if (e.length && pane.find(hash)) { - // nasty workaround but it appears to take a little while before the hash has done its thing - // to the rendered page so we just wait until the container's scrollTop has been messed up. - if (container.scrollTop() === 0) { - retryInt = setInterval( - function() - { - if (container.scrollTop() > 0) { - scrollToElement(e, true); - $(document).scrollTop(container.position().top); - clearInterval(retryInt); - } - }, - 50 - ); - } else { - scrollToElement(e, true); - $(document).scrollTop(container.position().top); - } - } - } - } - - function hijackInternalLinks() - { - // only register the link handler once - if ($(document.body).data('jspHijack')) { - return; - } - - // remember that the handler was bound - $(document.body).data('jspHijack', true); - - // use live handler to also capture newly created links - $(document.body).delegate('a[href*=#]', 'click', function(event) { - // does the link point to the same page? - // this also takes care of cases with a -Tag or Links not starting with the hash # - // e.g. when the current url already is index.html - var href = this.href.substr(0, this.href.indexOf('#')), - locationHref = location.href, - hash, - element, - container, - jsp, - scrollTop, - elementTop; - if (location.href.indexOf('#') !== -1) { - locationHref = location.href.substr(0, location.href.indexOf('#')); - } - if (href !== locationHref) { - // the link points to another page - return; - } - - // check if jScrollPane should handle this click event - hash = escape(this.href.substr(this.href.indexOf('#') + 1)); - - // find the element on the page - element; - try { - element = $('#' + hash + ', a[name="' + hash + '"]'); - } catch (e) { - // hash is not a valid jQuery identifier - return; - } - - if (!element.length) { - // this link does not point to an element on this page - return; - } - - container = element.closest('.jspScrollable'); - jsp = container.data('jsp'); - - // jsp might be another jsp instance than the one, that bound this event - // remember: this event is only bound once for all instances. - jsp.scrollToElement(element, true); - - if (container[0].scrollIntoView) { - // also scroll to the top of the container (if it is not visible) - scrollTop = $(window).scrollTop(); - elementTop = element.offset().top; - if (elementTop < scrollTop || elementTop > scrollTop + $(window).height()) { - container[0].scrollIntoView(); - } - } - - // jsp handled this event, prevent the browser default (scrolling :P) - event.preventDefault(); - }); - } - - // Init touch on iPad, iPhone, iPod, Android - function initTouch() - { - var startX, - startY, - touchStartX, - touchStartY, - moved, - moving = false; - - container.unbind('touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick').bind( - 'touchstart.jsp', - function(e) - { - var touch = e.originalEvent.touches[0]; - startX = contentPositionX(); - startY = contentPositionY(); - touchStartX = touch.pageX; - touchStartY = touch.pageY; - moved = false; - moving = true; - } - ).bind( - 'touchmove.jsp', - function(ev) - { - if(!moving) { - return; - } - - var touchPos = ev.originalEvent.touches[0], - dX = horizontalDragPosition, dY = verticalDragPosition; - - jsp.scrollTo(startX + touchStartX - touchPos.pageX, startY + touchStartY - touchPos.pageY); - - moved = moved || Math.abs(touchStartX - touchPos.pageX) > 5 || Math.abs(touchStartY - touchPos.pageY) > 5; - - // return true if there was no movement so rest of screen can scroll - return dX == horizontalDragPosition && dY == verticalDragPosition; - } - ).bind( - 'touchend.jsp', - function(e) - { - moving = false; - /*if(moved) { - return false; - }*/ - } - ).bind( - 'click.jsp-touchclick', - function(e) - { - if(moved) { - moved = false; - return false; - } - } - ); - } - - function destroy(){ - var currentY = contentPositionY(), - currentX = contentPositionX(); - elem.removeClass('jspScrollable').unbind('.jsp'); - elem.replaceWith(originalElement.append(pane.children())); - originalElement.scrollTop(currentY); - originalElement.scrollLeft(currentX); - - // clear reinitialize timer if active - if (reinitialiseInterval) { - clearInterval(reinitialiseInterval); - } - } - - // Public API - $.extend( - jsp, - { - // Reinitialises the scroll pane (if it's internal dimensions have changed since the last time it - // was initialised). The settings object which is passed in will override any settings from the - // previous time it was initialised - if you don't pass any settings then the ones from the previous - // initialisation will be used. - reinitialise: function(s) - { - s = $.extend({}, settings, s); - initialise(s); - }, - // Scrolls the specified element (a jQuery object, DOM node or jQuery selector string) into view so - // that it can be seen within the viewport. If stickToTop is true then the element will appear at - // the top of the viewport, if it is false then the viewport will scroll as little as possible to - // show the element. You can also specify if you want animation to occur. If you don't provide this - // argument then the animateScroll value from the settings object is used instead. - scrollToElement: function(ele, stickToTop, animate) - { - scrollToElement(ele, stickToTop, animate); - }, - // Scrolls the pane so that the specified co-ordinates within the content are at the top left - // of the viewport. animate is optional and if not passed then the value of animateScroll from - // the settings object this jScrollPane was initialised with is used. - scrollTo: function(destX, destY, animate) - { - scrollToX(destX, animate); - scrollToY(destY, animate); - }, - // Scrolls the pane so that the specified co-ordinate within the content is at the left of the - // viewport. animate is optional and if not passed then the value of animateScroll from the settings - // object this jScrollPane was initialised with is used. - scrollToX: function(destX, animate) - { - scrollToX(destX, animate); - }, - // Scrolls the pane so that the specified co-ordinate within the content is at the top of the - // viewport. animate is optional and if not passed then the value of animateScroll from the settings - // object this jScrollPane was initialised with is used. - scrollToY: function(destY, animate) - { - scrollToY(destY, animate); - }, - // Scrolls the pane to the specified percentage of its maximum horizontal scroll position. animate - // is optional and if not passed then the value of animateScroll from the settings object this - // jScrollPane was initialised with is used. - scrollToPercentX: function(destPercentX, animate) - { - scrollToX(destPercentX * (contentWidth - paneWidth), animate); - }, - // Scrolls the pane to the specified percentage of its maximum vertical scroll position. animate - // is optional and if not passed then the value of animateScroll from the settings object this - // jScrollPane was initialised with is used. - scrollToPercentY: function(destPercentY, animate) - { - scrollToY(destPercentY * (contentHeight - paneHeight), animate); - }, - // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then - // the value of animateScroll from the settings object this jScrollPane was initialised with is used. - scrollBy: function(deltaX, deltaY, animate) - { - jsp.scrollByX(deltaX, animate); - jsp.scrollByY(deltaY, animate); - }, - // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then - // the value of animateScroll from the settings object this jScrollPane was initialised with is used. - scrollByX: function(deltaX, animate) - { - var destX = contentPositionX() + Math[deltaX<0 ? 'floor' : 'ceil'](deltaX), - percentScrolled = destX / (contentWidth - paneWidth); - positionDragX(percentScrolled * dragMaxX, animate); - }, - // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then - // the value of animateScroll from the settings object this jScrollPane was initialised with is used. - scrollByY: function(deltaY, animate) - { - var destY = contentPositionY() + Math[deltaY<0 ? 'floor' : 'ceil'](deltaY), - percentScrolled = destY / (contentHeight - paneHeight); - positionDragY(percentScrolled * dragMaxY, animate); - }, - // Positions the horizontal drag at the specified x position (and updates the viewport to reflect - // this). animate is optional and if not passed then the value of animateScroll from the settings - // object this jScrollPane was initialised with is used. - positionDragX: function(x, animate) - { - positionDragX(x, animate); - }, - // Positions the vertical drag at the specified y position (and updates the viewport to reflect - // this). animate is optional and if not passed then the value of animateScroll from the settings - // object this jScrollPane was initialised with is used. - positionDragY: function(y, animate) - { - positionDragY(y, animate); - }, - // This method is called when jScrollPane is trying to animate to a new position. You can override - // it if you want to provide advanced animation functionality. It is passed the following arguments: - // * ele - the element whose position is being animated - // * prop - the property that is being animated - // * value - the value it's being animated to - // * stepCallback - a function that you must execute each time you update the value of the property - // You can use the default implementation (below) as a starting point for your own implementation. - animate: function(ele, prop, value, stepCallback) - { - var params = {}; - params[prop] = value; - ele.animate( - params, - { - 'duration' : settings.animateDuration, - 'easing' : settings.animateEase, - 'queue' : false, - 'step' : stepCallback - } - ); - }, - // Returns the current x position of the viewport with regards to the content pane. - getContentPositionX: function() - { - return contentPositionX(); - }, - // Returns the current y position of the viewport with regards to the content pane. - getContentPositionY: function() - { - return contentPositionY(); - }, - // Returns the width of the content within the scroll pane. - getContentWidth: function() - { - return contentWidth; - }, - // Returns the height of the content within the scroll pane. - getContentHeight: function() - { - return contentHeight; - }, - // Returns the horizontal position of the viewport within the pane content. - getPercentScrolledX: function() - { - return contentPositionX() / (contentWidth - paneWidth); - }, - // Returns the vertical position of the viewport within the pane content. - getPercentScrolledY: function() - { - return contentPositionY() / (contentHeight - paneHeight); - }, - // Returns whether or not this scrollpane has a horizontal scrollbar. - getIsScrollableH: function() - { - return isScrollableH; - }, - // Returns whether or not this scrollpane has a vertical scrollbar. - getIsScrollableV: function() - { - return isScrollableV; - }, - // Gets a reference to the content pane. It is important that you use this method if you want to - // edit the content of your jScrollPane as if you access the element directly then you may have some - // problems (as your original element has had additional elements for the scrollbars etc added into - // it). - getContentPane: function() - { - return pane; - }, - // Scrolls this jScrollPane down as far as it can currently scroll. If animate isn't passed then the - // animateScroll value from settings is used instead. - scrollToBottom: function(animate) - { - positionDragY(dragMaxY, animate); - }, - // Hijacks the links on the page which link to content inside the scrollpane. If you have changed - // the content of your page (e.g. via AJAX) and want to make sure any new anchor links to the - // contents of your scroll pane will work then call this function. - hijackInternalLinks: $.noop, - // Removes the jScrollPane and returns the page to the state it was in before jScrollPane was - // initialised. - destroy: function() - { - destroy(); - } - } - ); - - initialise(s); - } - - // Pluginifying code... - settings = $.extend({}, $.fn.jScrollPane.defaults, settings); - - // Apply default speed - $.each(['arrowButtonSpeed', 'trackClickSpeed', 'keyboardSpeed'], function() { - settings[this] = settings[this] || settings.speed; - }); - - return this.each( - function() - { - var elem = $(this), jspApi = elem.data('jsp'); - if (jspApi) { - jspApi.reinitialise(settings); - } else { - $("script",elem).filter('[type="text/javascript"],:not([type])').remove(); - jspApi = new JScrollPane(elem, settings); - elem.data('jsp', jspApi); - } - } - ); - }; - - $.fn.jScrollPane.defaults = { - showArrows : false, - maintainPosition : true, - stickToBottom : false, - stickToRight : false, - clickOnTrack : true, - autoReinitialise : false, - autoReinitialiseDelay : 500, - verticalDragMinHeight : 0, - verticalDragMaxHeight : 99999, - horizontalDragMinWidth : 0, - horizontalDragMaxWidth : 99999, - contentWidth : undefined, - animateScroll : false, - animateDuration : 300, - animateEase : 'linear', - hijackInternalLinks : false, - verticalGutter : 4, - horizontalGutter : 4, - mouseWheelSpeed : 3, - arrowButtonSpeed : 0, - arrowRepeatFreq : 50, - arrowScrollOnHover : false, - trackClickSpeed : 0, - trackClickRepeatFreq : 70, - verticalArrowPositions : 'split', - horizontalArrowPositions : 'split', - enableKeyboardNavigation : true, - hideFocus : false, - keyboardSpeed : 0, - initialDelay : 300, // Delay before starting repeating - speed : 30, // Default speed when others falsey - scrollPagePercent : .8 // Percent of visible area scrolled when pageUp/Down or track area pressed - }; - -})(jQuery,this); - diff --git a/lib/jquery.jscrollpane-2.0.17/jquery.mousewheel.js b/lib/jquery.jscrollpane-2.0.17/jquery.mousewheel.js deleted file mode 100644 index 9d65c7162b..0000000000 --- a/lib/jquery.jscrollpane-2.0.17/jquery.mousewheel.js +++ /dev/null @@ -1,117 +0,0 @@ -/*! Copyright (c) 2013 Brandon Aaron (http://brandonaaron.net) - * Licensed under the MIT License (LICENSE.txt). - * - * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. - * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. - * Thanks to: Seamus Leahy for adding deltaX and deltaY - * - * Version: 3.1.3 - * - * Requires: 1.2.2+ - */ - -(function (factory) { - if ( typeof define === 'function' && define.amd ) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS style for Browserify - module.exports = factory; - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll']; - var toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll']; - var lowestDelta, lowestDeltaXY; - - if ( $.event.fixHooks ) { - for ( var i = toFix.length; i; ) { - $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; - } - } - - $.event.special.mousewheel = { - setup: function() { - if ( this.addEventListener ) { - for ( var i = toBind.length; i; ) { - this.addEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = handler; - } - }, - - teardown: function() { - if ( this.removeEventListener ) { - for ( var i = toBind.length; i; ) { - this.removeEventListener( toBind[--i], handler, false ); - } - } else { - this.onmousewheel = null; - } - } - }; - - $.fn.extend({ - mousewheel: function(fn) { - return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); - }, - - unmousewheel: function(fn) { - return this.unbind("mousewheel", fn); - } - }); - - - function handler(event) { - var orgEvent = event || window.event, - args = [].slice.call(arguments, 1), - delta = 0, - deltaX = 0, - deltaY = 0, - absDelta = 0, - absDeltaXY = 0, - fn; - event = $.event.fix(orgEvent); - event.type = "mousewheel"; - - // Old school scrollwheel delta - if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta; } - if ( orgEvent.detail ) { delta = orgEvent.detail * -1; } - - // New school wheel delta (wheel event) - if ( orgEvent.deltaY ) { - deltaY = orgEvent.deltaY * -1; - delta = deltaY; - } - if ( orgEvent.deltaX ) { - deltaX = orgEvent.deltaX; - delta = deltaX * -1; - } - - // Webkit - if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY; } - if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = orgEvent.wheelDeltaX * -1; } - - // Look for lowest delta to normalize the delta values - absDelta = Math.abs(delta); - if ( !lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta; } - absDeltaXY = Math.max(Math.abs(deltaY), Math.abs(deltaX)); - if ( !lowestDeltaXY || absDeltaXY < lowestDeltaXY ) { lowestDeltaXY = absDeltaXY; } - - // Get a whole value for the deltas - fn = delta > 0 ? 'floor' : 'ceil'; - delta = Math[fn](delta / lowestDelta); - deltaX = Math[fn](deltaX / lowestDeltaXY); - deltaY = Math[fn](deltaY / lowestDeltaXY); - - // Add event and delta to the front of the arguments - args.unshift(event, delta, deltaX, deltaY); - - return ($.event.dispatch || $.event.handle).apply(this, args); - } - -})); diff --git a/lib/jquery.jscrollpane-2.0.17/mwheelIntent.js b/lib/jquery.jscrollpane-2.0.17/mwheelIntent.js deleted file mode 100644 index 0a86d0589c..0000000000 --- a/lib/jquery.jscrollpane-2.0.17/mwheelIntent.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @author trixta - * @version 1.2 - */ -(function($){ - -var mwheelI = { - pos: [-260, -260] - }, - minDif = 3, - doc = document, - root = doc.documentElement, - body = doc.body, - longDelay, shortDelay -; - -function unsetPos(){ - if(this === mwheelI.elem){ - mwheelI.pos = [-260, -260]; - mwheelI.elem = false; - minDif = 3; - } -} - -$.event.special.mwheelIntent = { - setup: function(){ - var jElm = $(this).bind('mousewheel', $.event.special.mwheelIntent.handler); - if( this !== doc && this !== root && this !== body ){ - jElm.bind('mouseleave', unsetPos); - } - jElm = null; - return true; - }, - teardown: function(){ - $(this) - .unbind('mousewheel', $.event.special.mwheelIntent.handler) - .unbind('mouseleave', unsetPos) - ; - return true; - }, - handler: function(e, d){ - var pos = [e.clientX, e.clientY]; - if( this === mwheelI.elem || Math.abs(mwheelI.pos[0] - pos[0]) > minDif || Math.abs(mwheelI.pos[1] - pos[1]) > minDif ){ - mwheelI.elem = this; - mwheelI.pos = pos; - minDif = 250; - - clearTimeout(shortDelay); - shortDelay = setTimeout(function(){ - minDif = 10; - }, 200); - clearTimeout(longDelay); - longDelay = setTimeout(function(){ - minDif = 3; - }, 1500); - e = $.extend({}, e, {type: 'mwheelIntent'}); - return ($.event.dispatch || $.event.handle).apply(this, arguments); - } - } -}; -$.fn.extend({ - mwheelIntent: function(fn) { - return fn ? this.bind("mwheelIntent", fn) : this.trigger("mwheelIntent"); - }, - - unmwheelIntent: function(fn) { - return this.unbind("mwheelIntent", fn); - } -}); - -$(function(){ - body = doc.body; - //assume that document is always scrollable, doesn't hurt if not - $(doc).bind('mwheelIntent.mwheelIntentDefault', $.noop); -}); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/Gruntfile.js b/lib/mobiscroll-2.6.0/Gruntfile.js deleted file mode 100644 index aae24c5656..0000000000 --- a/lib/mobiscroll-2.6.0/Gruntfile.js +++ /dev/null @@ -1,74 +0,0 @@ -module.exports = function(grunt) { - - var name = "mobiscroll"; - var version = "2.6.0"; - var base = "wv.date"; - - var lib = "lib/" + name + "-" + version + "/"; - var ext = "src/ext/" + base + "/" + name + "-" + version + "/"; - var debug_js = ext + name + ".js"; - var debug_css = ext + name + ".css"; - var min_js = ext + name + ".min.js"; - var min_css = ext + name + ".min.css"; - - var css = [ - lib + "mobiscroll.core.css", - lib + "mobiscroll.jqm.css", - lib + "mobiscroll.android.css", - lib + "mobiscroll.android-ics.css", - lib + "mobiscroll.ios.css", - lib + "mobiscroll.sense-ui.css", - lib + "mobiscroll.wp.css", - lib + "mobiscroll.animation.css" - ]; - - var js = [ - lib + "mobiscroll.core.js", - lib + "mobiscroll.datetime.js", - lib + "mobiscroll.select.js", - lib + "mobiscroll.jqm.js", - lib + "mobiscroll.ios.js", - lib + "mobiscroll.android.js", - lib + "mobiscroll.android-ics.js", - lib + "mobiscroll.wp.js" - ]; - - var uglifyFiles = {}; - uglifyFiles[min_js] = [debug_js]; - - var cssminFiles = {}; - cssminFiles[min_css] = [debug_css]; - - grunt.initConfig({ - concat: { - js: { - src: js, - dest: debug_js - }, - css: { - src: css, - dest: debug_css - } - }, - - uglify: { - js: { - files: uglifyFiles - } - }, - - cssmin: { - css: { - files: cssminFiles - } - } - }); - - grunt.file.setBase("../.."); - grunt.loadNpmTasks("grunt-contrib-concat"); - grunt.loadNpmTasks("grunt-contrib-cssmin"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - - grunt.registerTask("default", ["concat", "uglify", "cssmin"]); - -}; diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.de.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.de.js deleted file mode 100644 index 311287984d..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.de.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.de = $.extend($.mobiscroll.i18n.de, { - // Core - setText: 'OK', - cancelText: 'Abbrechen', - // Datetime component - dateFormat: 'dd.mm.yy', - dateOrder: 'ddmmyy', - dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - dayNamesShort: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - dayText: 'Tag', - hourText: 'Stunde', - minuteText: 'Minuten', - monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], - monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - monthText: 'Monat', - secText: 'Sekunden', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Jahr', - nowText: 'Jetzt', - // Calendar component - dateText: 'Datum', - timeText: 'Zeit', - calendarText: 'Kalender', - // Measurement components - wholeText: 'Ganze Zahl', - fractionText: 'Bruchzahl', - unitText: 'Maßeinheit', - // Time / Timespan component - labels: ['Jahre', 'Monate', 'Tage', 'Stunden', 'Minuten', 'Sekunden', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Start', - stopText: 'Stop', - resetText: 'Reset', - lapText: 'Lap', - hideText: 'Hide' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.es.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.es.js deleted file mode 100644 index d02d4aa165..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.es.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.es = $.extend($.mobiscroll.i18n.es, { - // Core - setText: 'Aceptar', - cancelText: 'Cancelar', - // Datetime component - dateFormat: 'dd/mm/yy', - dateOrder: 'ddmmyy', - dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], - dayNamesShort: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], - dayText: 'Día', - hourText: 'Horas', - minuteText: 'Minutos', - monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], - monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'], - monthText: 'Mes', - secText: 'Segundos', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Año', - nowText: 'Ahora', - // Calendar component - dateText: 'Fecha', - timeText: 'Tiempo', - calendarText: 'Calendario', - // Measurement components - wholeText: 'Entero', - fractionText: 'Fracción', - unitText: 'Unidad', - // Time / Timespan component - labels: ['Años', 'Meses', 'Días', 'Horas', 'Minutos', 'Segundos', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Iniciar', - stopText: 'Deténgase', - resetText: 'Reinicializar', - lapText: 'Lap', - hideText: 'Esconder' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.fr.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.fr.js deleted file mode 100644 index ee7e35e3a8..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.fr.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.fr = $.extend($.mobiscroll.i18n.fr, { - // Core - setText: 'Terminé', - cancelText: 'Annuler', - // Datetime component - dateFormat: 'dd/mm/yy', - dateOrder: 'ddmmyy', - dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'], - dayNamesShort: ['Dim.', 'Lun.', 'Mar.', 'Mer.', 'Jeu.', 'Ven.', 'Sam.'], - dayText: 'Jour', - monthText: 'Mois', - monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'], - monthNamesShort: ['Janv.', 'Févr.', 'Mars', 'Avril', 'Mai', 'Juin', 'Juil.', 'Août', 'Sept.', 'Oct.', 'Nov.', 'Déc.'], - hourText: 'Heures', - minuteText: 'Minutes', - secText: 'Secondes', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Année', - nowText: 'Maintenant', - // Calendar component - dateText: 'Date', - timeText: 'Heure', - calendarText: 'Calendrier', - // Measurement components - wholeText: 'Entier', - fractionText: 'Fraction', - unitText: 'Unité', - // Time / Timespan component - labels: ['Ans', 'Mois', 'Jours', 'Heures', 'Minutes', 'Secondes', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Indít', - stopText: 'Megállít', - resetText: 'Visszaállít', - lapText: 'Lap', - hideText: 'Elrejt' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.hu.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.hu.js deleted file mode 100644 index 3b0dcec7a9..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.hu.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.hu = $.extend($.mobiscroll.i18n.hu, { - // Core - setText: 'OK', - cancelText: 'Mégse', - // Datetime component - dateFormat: 'dd.mm.yy', - dateOrder: 'ddmmyy', - dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], - dayNamesShort: ['Va', 'Hé', 'Ke', 'Sze', 'Csü', 'Pé', 'Szo'], - dayText: 'Nap', - hourText: 'Óra', - minuteText: 'Perc', - monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], - monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], - monthText: 'Hónap', - secText: 'Másodperc', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Év', - nowText: 'Most', - // Calendar component - dateText: 'Dátum', - timeText: 'Idő', - calendarText: 'Naptár', - // Measurement components - wholeText: 'Egész', - fractionText: 'Tört', - unitText: 'Egység', - // Time / Timespan component - labels: ['Év', 'Hónap', 'Nap', 'Óra', 'Perc', 'Másodperc', ''], - labelsShort: ['Év', 'Hó.', 'Nap', 'Óra', 'Perc', 'Mp.', ''], - // Timer component - startText: 'Indít', - stopText: 'Megállít', - resetText: 'Visszaállít', - lapText: 'Lap', - hideText: 'Elrejt' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.it.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.it.js deleted file mode 100644 index 38c6c13db0..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.it.js +++ /dev/null @@ -1,39 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.it = $.extend($.mobiscroll.i18n.it, { - // Core - setText: 'OK', - cancelText: 'Annulla', - // Datetime component - dateFormat: 'dd-mm-yyyy', - dateOrder: 'ddmmyy', - dayNames: ['Domenica', 'LunedÌ', 'MertedÌ', 'MercoledÌ', 'GiovedÌ', 'VenerdÌ', 'Sabato'], - dayNamesShort: ['Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa'], - dayText: 'Giorno', - hourText: 'Ore', - minuteText: 'Minuti', - monthNames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], - monthNamesShort: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'], - monthText: 'Mese', - secText: 'Secondi', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Anno', - // Calendar component - dateText: 'Data', - timeText: 'Volta', - calendarText: 'Calendario', - // Measurement components - wholeText: 'Intero', - fractionText: 'Frazione', - unitText: 'Unità', - // Time / Timespan component - labels: ['Anni', 'Mesi', 'Giorni', 'Ore', 'Minuti', 'Secondi', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Inizio', - stopText: 'Arresto', - resetText: 'Ripristina', - lapText: 'Lap', - hideText: 'Nascondi' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.ja.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.ja.js deleted file mode 100644 index 2e609edb68..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.ja.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.ja = $.extend($.mobiscroll.i18n.ja, { - // Core - setText: 'セット', - cancelText: 'キャンセル', - // Datetime component - dateFormat: 'yy年mm月dd日', - dateOrder: 'yymmdd', - dayNames: ['日','月','火','水','木','金','土'], - dayNamesShort: ['日','月','火','水','木','金','土'], - dayText: '日', - hourText: '時', - minuteText: '分', - monthNames: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'], - monthNamesShort: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'], - monthText: '月', - secText: '秒', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: '年', - nowText: '今', - // Calendar component - dateText: '日付', - timeText: '時間', - calendarText: 'カレンダー', - // Measurement components - wholeText: '全数', - fractionText: '分数', - unitText: '単位', - // Time / Timespan component - labels: ['年間', '月間', '日間', '時間', '分', '秒', ''], - labelsShort: ['年間', '月間', '日間', '時間', '分', '秒', ''], - // Timer component - startText: '開始', - stopText: '停止', - resetText: 'リセット', - lapText: 'ラップ', - hideText: '隠す' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.nl.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.nl.js deleted file mode 100644 index 554ae13705..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.nl.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.nl = $.extend($.mobiscroll.i18n.nl, { - // Core - setText: 'Instellen', - cancelText: 'Annuleer', - // Datetime component - dateFormat: 'dd/mm/yy', - dateOrder: 'ddmmyy', - dayNames: ['zondag', 'maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'], - dayNamesShort: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - dayText: 'Dag', - hourText: 'Uur', - minuteText: 'Minuten', - monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], - monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - monthText: 'Maand', - secText: 'Seconden', - timeFormat: 'hh:ii A', - timeWheels: 'hhiiA', - yearText: 'Jaar', - nowText: 'Nu', - // Calendar component - dateText: 'Datum', - timeText: 'Tijd', - calendarText: 'Kalender', - // Measurement components - wholeText: 'geheel', - fractionText: 'fractie', - unitText: 'eenheid', - // Time / Timespan component - labels: ['Jaren', 'Maanden', 'Dagen', 'Uren', 'Minuten', 'Seconden', ''], - labelsShort: ['j', 'm', 'd', 'u', 'min', 'sec', ''], - // Timer component - startText: 'Start', - stopText: 'Stop', - resetText: 'Reset', - lapText: 'Lap', - hideText: 'Verbergen' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.no.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.no.js deleted file mode 100644 index 99205b3323..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.no.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.no = $.extend($.mobiscroll.i18n.no, { - // Core - setText: 'OK', - cancelText: 'Avbryt', - // Datetime component - dateFormat: 'dd.mm.yy', - dateOrder: 'ddmmyy', - dayNames: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'], - dayNamesShort: ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'], - dayText: 'Dag', - hourText: 'Time', - minuteText: 'Minutt', - monthNames: ['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'], - monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], - monthText: 'Måned', - secText: 'Sekund', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'År', - nowText: 'Nå', - // Calendar component - dateText: 'Dato', - timeText: 'Tid', - calendarText: 'Kalender', - // Measurement components - wholeText: 'Hele', - fractionText: 'Fraksjon', - unitText: 'Enhet', - // Time / Timespan component - labels: ['År', 'Måneder', 'Dager', 'Timer', 'Minutter', 'Sekunder', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Start', - stopText: 'Stopp', - resetText: 'Tilbakestille', - lapText: 'Runde', - hideText: 'Skjul' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.pt-BR.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.pt-BR.js deleted file mode 100644 index 0f6ef9cd70..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.pt-BR.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Translation by: Ivan Gomes - * - */ -(function ($) { - $.mobiscroll.i18n['pt-BR'] = $.extend($.mobiscroll.i18n['pt-BR'], { - // Core - setText: 'Selecionar', - cancelText: 'Cancelar', - // Datetime component - dateFormat: 'dd/mm/yy', - dateOrder: 'ddMMyy', - dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], - dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], - dayText: 'Dia', - hourText: 'Hora', - minuteText: 'Minutos', - monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], - monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'], - monthText: 'Mês', - secText: 'Segundo', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: 'Ano', - // Calendar component - dateText: 'Data', - timeText: 'Tempo', - calendarText: 'Calendário', - // Measurement components - wholeText: 'Inteiro', - fractionText: 'Fração', - unitText: 'Unidade', - // Time / Timespan component - labels: ['Anos', 'Meses', 'Dias', 'Horas', 'Minutos', 'Segundos', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Começar', - stopText: 'Pare', - resetText: 'Reinicializar', - lapText: 'Lap', - hideText: 'Esconder' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.tr.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.tr.js deleted file mode 100644 index 862b0d2838..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.tr.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.tr = $.extend($.mobiscroll.i18n.tr, { - // Core - setText: 'Seç', - cancelText: 'İptal', - // Datetime component - dateFormat: 'dd.mm.yy', - dateOrder: 'ddmmyy', - dayNames: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - dayNamesShort: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - dayText: 'Gün', - hourText: 'Saat', - minuteText: 'Dakika', - monthNames: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'], - monthNamesShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - monthText: 'Ay', - secText: 'Saniye', - timeFormat: 'hh:ii A', - timeWheels: 'hhiiA', - yearText: 'Yıl', - nowText: 'Şimdi', - // Calendar component - dateText: 'Tarih', - timeText: 'Zaman', - calendarText: 'Takvim', - // Measurement components - wholeText: 'Tam', - fractionText: 'Kesir', - unitText: 'Birim', - // Time / Timespan component - labels: ['Yıl', 'Ay', 'Gün', 'Saat', 'Dakika', 'Saniye', ''], - labelsShort: ['Yıl', 'Ay', 'Gün', 'Sa', 'Dak', 'Sn', ''], - // Timer component - startText: 'Başla', - stopText: 'Durdur', - resetText: 'Sıfırla', - lapText: 'Tur', - hideText: 'Gizle' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.zh.js b/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.zh.js deleted file mode 100644 index 421b097a87..0000000000 --- a/lib/mobiscroll-2.6.0/i18n/mobiscroll.i18n.zh.js +++ /dev/null @@ -1,40 +0,0 @@ -(function ($) { - $.mobiscroll.i18n.zh = $.extend($.mobiscroll.i18n.zh, { - // Core - setText: '确定', - cancelText: '取消', - // Datetime component - dateFormat: 'dd/mm/yy', - dateOrder: 'ddmmyy', - dayNames: ['周日','周一','周二','周三','周四','周五','周六'], - dayNamesShort: ['日','一','二','三','四','五','六'], - dayText: '日', - hourText: '时', - minuteText: '分', - monthNames: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'], - monthNamesShort: ['一','二','三','四','五','六','七','八','九','十','十一','十二'], - monthText: '月', - secText: '秒', - timeFormat: 'HH:ii', - timeWheels: 'HHii', - yearText: '年', - nowText: '当前', - // Calendar component - dateText: '日', - timeText: '时间', - calendarText: '日历', - // Measurement components - wholeText: 'Whole', - fractionText: 'Fraction', - unitText: 'Unit', - // Time / Timespan component - labels: ['Years', 'Months', 'Days', 'Hours', 'Minutes', 'Seconds', ''], - labelsShort: ['Yrs', 'Mths', 'Days', 'Hrs', 'Mins', 'Secs', ''], - // Timer component - startText: 'Start', - stopText: 'Stop', - resetText: 'Reset', - lapText: 'Lap', - hideText: 'Hide' - }); -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.android-ics.css b/lib/mobiscroll-2.6.0/mobiscroll.android-ics.css deleted file mode 100644 index 4ab9ab46fb..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.android-ics.css +++ /dev/null @@ -1,204 +0,0 @@ -/* Android ICS skin */ -.android-ics .dw { - padding: 0; - color: #31b6e7; - background: #292829; -} -.android-ics .dw .dwwc, -.android-ics .dw .dwwl, -.android-ics .dw .dww, -.android-ics .dw .dwb, -.android-ics .dw .dwpm .dww { - background: none; -} -.android-ics .dwwr { - padding: 0; -} -.android-ics .dwc { - padding: 30px 10px 1px 10px; -} -.android-ics .dwhl { - padding: 1px 10px; -} -.android-ics .dwv { - height: 36px; - line-height: 36px; - padding: 0; - border-bottom: 2px solid #31b6e7; - font-size: 18px; -} -.android-ics .dwwl { - margin: 0 2px; -} -.android-ics .dww, -.android-ics .dw .dwpm .dwwl, -.android-ics .dw .dwpm .dww { - border: 0; -} -.android-ics .dww .dw-li { - color: #fff; - font-size: 18px; - text-shadow: none; -} -.android-ics .dww .dw-li.dw-hl { - background: #31b6e7; - background: rgba(49,182,231,.5); -} -.android-ics .dwwo { - background: linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#282828),color-stop(0.52, rgba(40,40,40,0)),color-stop(0.48, rgba(40,40,40,0)),to(#282828)); - background: -moz-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); - background: -o-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%); -} -.android-ics .dw .dwwb { - background: #292829; - box-shadow: none; - -webkit-box-shadow: none; -} -.android-ics .dwwb span { - display: none; -} -.android-ics .dwwb:after { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; - color: #7e7e7e; - width: 0; - height: 0; - border-width: 8px; - border-style: solid; - content: ''; -} -.android-ics .dwwbm { - top: 0; - bottom: auto; -} -.android-ics .dwwbp { - bottom: 0; - top: auto; -} -.android-ics .dwwbm:after { - border-color: transparent transparent #7e7e7e transparent; -} -.android-ics .dwwbp:after { - border-color: #7e7e7e transparent transparent transparent; -} -.android-ics .dw .dwwl .dwb-a { - background: #292829; -} -.android-ics .dwwbm.dwb-a:after { - border-color: transparent transparent #319abd transparent; -} -.android-ics .dwwbp.dwb-a:after { - border-color: #319abd transparent transparent transparent; -} -.android-ics .dw .dwwol { - width: 60%; - left: 20%; - height: 36px; - border-top: 2px solid #31b6e7; - border-bottom: 2px solid #31b6e7; - margin-top: -20px; - display: block; -} -.android-ics .dwbc { - border-top: 1px solid #424542; - padding: 0; -} -.android-ics .dw .dwb { - height: 36px; - line-height: 36px; - padding: 0; - margin: 0; - font-weight: normal; - text-shadow: none; - box-shadow: none; - border-radius: 0; - -webkit-border-radius: 0; - -webkit-box-shadow: none; -} -.android-ics .dw .dwb-a { - background: #29799c; -} -.android-ics .dwb-s .dwb, .android-ics .dwb-n .dwb { - border-right: 1px solid #424542; -} -/* Docked */ -.android-ics.dw-bottom .dw, .android-ics.dw-top .dw { - border-radius: 0; - -webkit-border-radius: 0; -} -/* Multiple select */ -.android-ics .dwwms .dwwol { - display: none; -} -.android-ics .dwwms .dw-li { - padding-left: 5px; - padding-right: 36px; -} -.android-ics .dwwms .dw-li:after { - content: ''; - position: absolute; - top: 50%; - left: auto; - right: 10px; - width: 14px; - height: 14px; - margin-top: -9px; - color: #31b6e7; - line-height: 14px; - border: 1px solid #424542; - text-shadow: 0 0 5px #29799c; -} -.android-ics .dwwms .dw-msel:after { - content: '✔'; -} -/* Light version */ -.android-ics.light .dw { - background: #f5f5f5; -} -.android-ics.light .dww .dw-li { - color: #000; -} -.android-ics.light .dwwo { - background: linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#f5f5f5),color-stop(0.52, rgba(245,245,245,0)),color-stop(0.48, rgba(245,245,245,0)),to(#f5f5f5)); - background: -moz-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); - background: -o-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%); -} -.android-ics.light .dw .dwwb { - background: #f5f5f5; - color: #f5f5f5; -} -.android-ics.light .dwbc { - border-top: 1px solid #dbdbdb; -} -.android-ics.light .dwb { - color: #000; -} -.android-ics.light .dwb-a { - color: #fff; -} -.android-ics.light .dwb-s .dwb, .android-ics.light .dwb-n .dwb { - border-right: 1px solid #dbdbdb; -} -/* Bubble positioning */ -.android-ics .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #292829 transparent; -} -.android-ics .dw-bubble-top .dw-arr { - border-color: #292829 transparent transparent transparent; -} -/* Bubble positioning */ -.android-ics.light .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #f5f5f5 transparent; -} -.android-ics.light .dw-bubble-top .dw-arr { - border-color: #f5f5f5 transparent transparent transparent; -} -/* Multiple select */ -.android-ics.light .dwwms .dw-li:after { - text-shadow: 0 0 5px #31b6e7; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.android-ics.js b/lib/mobiscroll-2.6.0/mobiscroll.android-ics.js deleted file mode 100644 index 199ed6ad59..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.android-ics.js +++ /dev/null @@ -1,18 +0,0 @@ -(function ($) { - var theme = { - defaults: { - dateOrder: 'Mddyy', - mode: 'mixed', - rows: 5, - width: 70, - height: 36, - showLabel: false, - useShortLabels: true - } - }; - - $.mobiscroll.themes['android-ics'] = theme; - $.mobiscroll.themes['android-ics light'] = theme; - -})(jQuery); - diff --git a/lib/mobiscroll-2.6.0/mobiscroll.android.css b/lib/mobiscroll-2.6.0/mobiscroll.android.css deleted file mode 100644 index 599d39f2ed..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.android.css +++ /dev/null @@ -1,76 +0,0 @@ -/* Android Skin */ -.android .dw { - padding: 0; - background: #000; - border: 2px solid #555; - color: #fff; -} -.android .dwv { - padding: 10px; - border-bottom: 1px solid #333; -} -.android .dwwr { - padding: 0; -} -.android .dww { - top: 0; -} -.android .dwwc { - background: #000; -} -.android .dw .dwpm .dww, -.android .dw .dwpm .dwwl { - border: 0; - background: #fff; -} -.android .dw .dwpm .dww { - margin: 0; -} -.android .dwpm .dww .dw-li { - color: #000; - text-shadow: none; -} -.android .dwbc { - padding: 5px 1px; - background: #9c9c9c; -} -.android .dw .dwb { - margin: 0 5px; - background: #ccc; - background: linear-gradient(#eee,#ccc); - background: -webkit-gradient(linear,left bottom,left top,from(#ccc),to(#eee)); - background: -moz-linear-gradient(#eee,#ccc); - background: -o-linear-gradient(#eee,#ccc); - color: #000; - font-weight: normal; - text-shadow: none; - border-radius: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; -} -.android .dw .dwb-a, .android .dw .dwwl .dwb-a { - background: #ffb25a; - background: linear-gradient(#ffb25a,#ef6100); - background: -webkit-gradient(linear,left bottom,left top,from(#ef6100),to(#ffb25a)); - background: -moz-linear-gradient(#ffb25a,#ef6100); - background: -o-linear-gradient(#ffb25a,#ef6100); -} -/* Bubble positioning */ -.android .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #000 transparent; -} -.android .dw-bubble-top .dw-arr { - border-color: #9c9c9c transparent transparent transparent; -} -/* Docked */ -.android.dw-top .dw, -.android.dw-bottom .dw { - border-right: 0; - border-left: 0; -} -.android.dw-top .dw { - border-top: 0; -} -.android.dw-bottom .dw { - border-bottom: 0; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.android.js b/lib/mobiscroll-2.6.0/mobiscroll.android.js deleted file mode 100644 index 29b214bebf..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.android.js +++ /dev/null @@ -1,13 +0,0 @@ -(function ($) { - - $.mobiscroll.themes.android = { - defaults: { - dateOrder: 'Mddyy', - mode: 'clickpick', - height: 50, - showLabel: false - } - } - -})(jQuery); - diff --git a/lib/mobiscroll-2.6.0/mobiscroll.animation.css b/lib/mobiscroll-2.6.0/mobiscroll.animation.css deleted file mode 100644 index cb89a42c7a..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.animation.css +++ /dev/null @@ -1,637 +0,0 @@ -.dw-trans .dw-persp { - overflow: hidden; - perspective: 1000px; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; -} -.dw-trans .dwwb, -.dw-trans .dwwo { - -webkit-backface-visibility: hidden; -} -.dw-in, -.dw-out { - animation-duration: 350ms; - -webkit-animation-duration: 350ms; - -moz-animation-duration: 350ms; -} -.dw-in { - animation-timing-function: ease-out; - -webkit-animation-timing-function: ease-out; - -moz-animation-timing-function: ease-out; -} -.dw-out { - animation-timing-function: ease-in; - -webkit-animation-timing-function: ease-in; - -moz-animation-timing-function: ease-in; -} -.dw-flip, -.dw-swing, -.dw-slidehorizontal, -.dw-slidevertical, -.dw-slidedown, -.dw-slideup, -.dw-fade { - backface-visibility: hidden; - transform: translateX(0); - -webkit-backface-visibility: hidden; - -webkit-transform: translateX(0); - -moz-backface-visibility: hidden; - -moz-transform: translateX(0); -} -.dw-swing, -.dw-slidehorizontal, -.dw-slidevertical, -.dw-slidedown, -.dw-slideup, -.dw-fade { - transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -moz-transform-origin: 0 0; -} -.dw-flip, -.dw-pop { - transform-origin: 50% 50%; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; -} -.dw-pop.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-p-in; - -webkit-animation-name: dw-p-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-p-in; - -moz-transform: scale(1); -} -.dw-pop.dw-out { - opacity: 0; - animation-name: dw-p-out; - -webkit-animation-name: dw-p-out; - -moz-animation-name: dw-p-out; -} -.dw-flip.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-fl-in; - -webkit-animation-name: dw-fl-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-fl-in; - -moz-transform: scale(1); -} -.dw-flip.dw-out { - opacity: 0; - animation-name: dw-fl-out; - -webkit-animation-name: dw-fl-out; - -moz-animation-name: dw-fl-out; -} -.dw-swing.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-sw-in; - -webkit-animation-name: dw-sw-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sw-in; - -moz-transform: scale(1); -} -.dw-swing.dw-out { - opacity: 0; - animation-name: dw-sw-out; - -webkit-animation-name: dw-sw-out; - -moz-animation-name: dw-sw-out; -} -.dw-slidehorizontal.dw-in { - opacity: 1; - transform: scale(1); - animation-name: dw-sh-in; - -webkit-animation-name: dw-sh-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sh-in; - -moz-transform: scale(1); -} -.dw-slidehorizontal.dw-out { - opacity: 0; - animation-name: dw-sh-out; - -webkit-animation-name: dw-sh-out; - -moz-animation-name: dw-sh-out; -} -.dw-slidevertical.dw-in { - opacity: 1; - animation-name: dw-dw-sv-in; - transform: scale(1); - -webkit-animation-name: dw-dw-sv-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-dw-sv-in; - -moz-transform: scale(1); -} -.dw-slidevertical.dw-out { - opacity: 0; - animation-name: dw-sv-out; - -webkit-animation-name: dw-sv-out; - -moz-animation-name: dw-sv-out; -} -.dw-slidedown.dw-in { - animation-name: dw-sd-in; - transform: scale(1); - -webkit-animation-name: dw-sd-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-sd-in; - -moz-transform: scale(1); -} -.dw-slidedown.dw-out { - animation-name: dw-sd-out; - -webkit-animation-name: dw-sd-out; - -moz-animation-name: dw-sd-out; -} -.dw-slideup.dw-in { - transform: scale(1); - animation-name: dw-su-in; - -webkit-animation-name: dw-su-in; - -webkit-transform: scale(1); - -moz-animation-name: dw-su-in; - -moz-transform: scale(1); -} -.dw-slideup.dw-out { - animation-name: dw-su-out; - -webkit-animation-name: dw-su-out; - -moz-animation-name: dw-su-out; -} -.dw-fade.dw-in { - opacity: 1; - animation-name: dw-f-in; - -webkit-animation-name: dw-f-in; - -moz-animation-name: dw-f-in; -} -.dw-fade.dw-out { - opacity: 0; - animation-name: dw-f-out; - -webkit-animation-name: dw-f-out; - -moz-animation-name: dw-f-out; -} -/* Fade in */ -@keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-webkit-keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@-moz-keyframes dw-f-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -/* Fade out */ -@keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@-webkit-keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@-moz-keyframes dw-f-out { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -/* Pop in */ -@keyframes dw-p-in { - from { - opacity: 0; - transform: scale(0.8); - } - to { - opacity: 1; - transform: scale(1); - } -} -@-webkit-keyframes dw-p-in { - from { - opacity: 0; - -webkit-transform: scale(0.8); - } - to { - opacity: 1; - -webkit-transform: scale(1); - } -} -@-moz-keyframes dw-p-in { - from { - opacity: 0; - -moz-transform: scale(0.8); - } - to { - opacity: 1; - -moz-transform: scale(1); - } -} -/* Pop out */ -@keyframes dw-p-out { - from { - opacity: 1; - transform: scale(1); - } - to { - opacity: 0; - transform: scale(0.8); - } -} -@-webkit-keyframes dw-p-out { - from { - opacity: 1; - -webkit-transform: scale(1); - } - to { - opacity: 0; - -webkit-transform: scale(0.8); - } -} -@-moz-keyframes dw-p-out { - from { - opacity: 1; - -moz-transform: scale(1); - } - to { - opacity: 0; - -moz-transform: scale(0.8); - } -} -/* Flip in */ -@keyframes dw-fl-in { - from { - opacity: 0; - transform: rotateY(90deg); - } - to { - opacity: 1; - transform: rotateY(0); - } -} -@-webkit-keyframes dw-fl-in { - from { - opacity: 0; - -webkit-transform: rotateY(90deg); - } - to { - opacity: 1; - -webkit-transform: rotateY(0); - } -} -@-moz-keyframes dw-fl-in { - from { - opacity: 0; - -moz-transform: rotateY(90deg); - } - to { - opacity: 1; - -moz-transform: rotateY(0); - } -} -/* Flip out */ -@keyframes dw-fl-out { - from { - opacity: 1; - transform: rotateY(0deg); - } - to { - opacity: 0; - transform: rotateY(-90deg); - } -} -@-webkit-keyframes dw-fl-out { - from { - opacity: 1; - -webkit-transform: rotateY(0deg); - } - to { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } -} -@-moz-keyframes dw-fl-out { - from { - opacity: 1; - -moz-transform: rotateY(0deg); - } - to { - opacity: 0; - -moz-transform: rotateY(-90deg); - } -} -/* Swing in */ -@keyframes dw-sw-in { - from { - opacity: 0; - transform: rotateY(-90deg); - } - to { - opacity: 1; - transform: rotateY(0deg); - } -} -@-webkit-keyframes dw-sw-in { - from { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } - to { - opacity: 1; - -webkit-transform: rotateY(0deg); - } -} -@-moz-keyframes dw-sw-in { - from { - opacity: 0; - -moz-transform: rotateY(-90deg); - } - to { - opacity: 1; - -moz-transform: rotateY(0deg); - } -} -/* Swing out */ -@keyframes dw-sw-out { - from { - opacity: 1; - transform: rotateY(0deg); - } - to { - opacity: 0; - transform: rotateY(-90deg); - } -} -@-webkit-keyframes dw-sw-out { - from { - opacity: 1; - -webkit-transform: rotateY(0deg); - } - to { - opacity: 0; - -webkit-transform: rotateY(-90deg); - } -} -@-moz-keyframes dw-sw-out { - from { - opacity: 1; - -moz-transform: rotateY(0deg); - } - to { - opacity: 0; - -moz-transform: rotateY(-90deg); - } -} -/* Slide horizontal in */ -@keyframes dw-sh-in { - from { - opacity: 0; - transform: translateX(-100%); - } - to { - opacity: 1; - transform: translateX(0); - } -} -@-webkit-keyframes dw-sh-in { - from { - opacity: 0; - -webkit-transform: translateX(-100%); - } - to { - opacity: 1; - -webkit-transform: translateX(0); - } -} -@-moz-keyframes dw-sh-in { - from { - opacity: 0; - -moz-transform: translateX(-100%); - } - to { - opacity: 1; - -moz-transform: translateX(0); - } -} -/* Slide horizontal out */ -@keyframes dw-sh-out { - from { - opacity: 1; - transform: translateX(0); - } - to { - opacity: 0; - transform: translateX(100%); - } -} -@-webkit-keyframes dw-sh-out { - from { - opacity: 1; - -webkit-transform: translateX(0); - } - to { - opacity: 0; - -webkit-transform: translateX(100%); - } -} -@-moz-keyframes dw-sh-out { - from { - opacity: 1; - -moz-transform: translateX(0); - } - to { - opacity: 0; - -moz-transform: translateX(100%); - } -} -/* Slide vertical in */ -@keyframes dw-dw-sv-in { - from { - opacity: 0; - transform: translateY(-100%); - } - to { - opacity: 1; - transform: translateY(0); - } -} -@-webkit-keyframes dw-dw-sv-in { - from { - opacity: 0; - -webkit-transform: translateY(-100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-dw-sv-in { - from { - opacity: 0; - -moz-transform: translateY(-100%); - } - to { - opacity: 1; - -moz-transform: translateY(0); - } -} -/* Slide vertical out */ -@keyframes dw-sv-out { - from { - opacity: 1; - transform: translateY(0); - } - to { - opacity: 0; - transform: translateY(100%); - } -} -@-webkit-keyframes dw-sv-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 0; - -webkit-transform: translateY(100%); - } -} -@-moz-keyframes dw-sv-out { - from { - opacity: 1; - -moz-transform: translateY(0); - } - to { - opacity: 0; - -moz-transform: translateY(100%); - } -} -/* Slide Down In */ -@keyframes dw-sd-in { - from { - transform: translateY(-100%); - } - to { - transform: translateY(0); - } -} -@-webkit-keyframes dw-sd-in { - from { - opacity: 1; - -webkit-transform: translateY(-100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-sd-in { - from { - -moz-transform: translateY(-100%); - } - to { - -moz-transform: translateY(0); - } -} -/* Slide down out */ -@keyframes dw-sd-out { - from { - transform: translateY(0); - } - to { - transform: translateY(-100%); - } -} -@-webkit-keyframes dw-sd-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 1; - -webkit-transform: translateY(-100%); - } -} -@-moz-keyframes dw-sd-out { - from { - -moz-transform: translateY(0); - } - to { - -moz-transform: translateY(-100%); - } -} -/* Slide Up In */ -@keyframes dw-su-in { - from { - transform: translateY(100%); - } - to { - transform: translateY(0); - } -} -@-webkit-keyframes dw-su-in { - from { - opacity: 1; - -webkit-transform: translateY(100%); - } - to { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes dw-su-in { - from { - -moz-transform: translateY(100%); - } - to { - -moz-transform: translateY(0); - } -} -/* Slide up out */ -@keyframes dw-su-out { - from { - transform: translateY(0); - } - to { - transform: translateY(100%); - } -} -@-webkit-keyframes dw-su-out { - from { - opacity: 1; - -webkit-transform: translateY(0); - } - to { - opacity: 1; - -webkit-transform: translateY(100%); - } -} -@-moz-keyframes dw-su-out { - from { - -moz-transform: translateY(0); - } - to { - -moz-transform: translateY(100%); - } -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.core.css b/lib/mobiscroll-2.6.0/mobiscroll.core.css deleted file mode 100644 index 53a02bf6b4..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.core.css +++ /dev/null @@ -1,365 +0,0 @@ -/* Datewheel overlay */ -.dw { - position: absolute; - top: 5%; - left: 0; - z-index: 1001; - color: #fff; - font-family: arial, verdana, sans-serif; - font-size: 12px; - text-shadow: none; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -ms-touch-action: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; -} -.dwi { - position: static; - display: inline-block; -} -.dwwr { - min-width: 170px; - zoom: 1; - padding: 0 10px; - text-align: center; -} -/* Datewheel overlay background */ -.dw-persp, .dwo { - width: 100%; - height: auto; - position: absolute; - top: 0; - left: 0; - z-index: 1001; -} -.dwo { - background: #000; - opacity: .7; - filter: Alpha(Opacity=70); - display:none; -} -/* Bubble positionings */ -.dw-bubble .dw { - margin: 20px 0; -} -.dw-bubble .dw-arrw { - position: absolute; - left: 0; - width: 100%; -} -.dw-bubble-top .dw-arrw { - bottom: -36px; -} -.dw-bubble-bottom .dw-arrw { - top: -36px; -} -.dw-bubble .dw-arrw-i { - margin: 0 30px; - position: relative; - height: 36px; -} -.dw-bubble .dw-arr { - display: block; -} -.dw-arr { - display: none; - position: absolute; - left: 0; - width: 0; - height: 0; - border-width: 18px 18px; - border-style: solid; - margin-left: -18px; -} -.dw-bubble-bottom .dw-arr { - top: 0; - border-color: transparent transparent #fff transparent; -} -.dw-bubble-top .dw-arr { - bottom: 0; - border-color: #fff transparent transparent transparent; -} -/* Datewheel wheel container wrapper */ -.dwc { - padding: 30px 2px 5px 2px; - display: inline-block; -} -/* Datewheel label */ -.dwl { - text-align: center; - line-height: 30px; - height: 30px; - white-space: nowrap; - position: absolute; - top: -30px; - width: 100%; -} -/* Datewheel value */ -.dwv { - padding: 10px 0; - border-bottom: 1px solid #000; -} -/* Datewheel wheel container */ -.dwrc { - -webkit-border-radius: 3px; - border-radius: 3px; -} -.dwwc { - margin: 0; - padding: 0 2px; - position: relative; - background: #000; - zoom: 1; -} -/* Datewheel wheels */ -.dwwl { - margin: 4px 2px; - padding: 0 2px; - position: relative; - z-index: 5; -} -.dwww { - position: relative; - padding: 1px; -} -.dww { - overflow: hidden; - position: relative; - z-index: 2; -} -.dw-moz .dww { - opacity: .99; /* Fixes Firefox translate overflow bug */ -} -.dwsc .dwwl { - background: #888; - background: linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.35, #333),color-stop(0.50, #888),color-stop(0.65, #333),to(#000)); - background: -webkit-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); - background: -moz-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%); -} -.dwsc .dww { - color: #fff; - background: #444; - background: linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.45, #444),color-stop(0.55, #444),to(#000)); - background: -webkit-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); - background: -moz-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%); -} -.dw-bf { - -webkit-perspective: 1000; - -webkit-backface-visibility: hidden; -} -.dw-ul { - position: relative; - z-index: 2; -} -.dw-li { - padding: 0 5px; - display: block; - text-align: center; - line-height: 40px; - font-size: 26px; - white-space: nowrap; - text-shadow: 0 1px 1px #000; - vertical-align: bottom; - opacity: .3; - filter: Alpha(Opacity=30); -} -/* Higlighted */ -.dw-li.dw-hl { - background: #fff; - background: rgba(255,255,255,.3); -} -/* Valid entry */ -.dw-li.dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -/* Hidden entry */ -.dw-li.dw-h { - visibility: hidden; -} -.dw-i { - position: relative; - height: 100%; -} -/* Wheel +/- buttons */ -.dwwb { - position: absolute; - z-index: 4; - left: 0; - cursor: pointer; - width: 100%; - height: 40px; - text-align: center; - opacity: 1; - transition: opacity .2s linear; - -webkit-transition: opacity .2s linear; -} -.dwa .dwwb { - opacity: 0; -} -.dwwbp { - top: 0; - -webkit-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; - font-size: 40px; -} -.dwwbm { - bottom: 0; - -webkit-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - font-size: 32px; - font-weight: bold; -} -.dwpm .dwwc { - background: transparent; -} -.dwpm .dwwl { - padding: 0; -} -.dwpm .dw-li { - text-shadow: none; -} -.dwpm .dwwol { - display: none; -} -/* Datewheel wheel overlay */ -.dwwo { - position: absolute; - z-index: 3; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.52, rgba(44,44,44,0)),color-stop(0.48, rgba(44,44,44,0)),to(#000)); - background: -webkit-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); - background: -moz-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%); -} -/* Background line */ -.dwwol { - position: absolute; - z-index: 1; - top: 50%; - left: 0; - width: 100%; - height: 0; - margin-top: -1px; - border-top: 1px solid #333; - border-bottom: 1px solid #555; -} -/* Datewheel button */ -.dwbg .dwb { - cursor: pointer; - overflow: hidden; - display: block; - height: 40px; - line-height: 40px; - padding: 0 15px; - margin: 0 2px; - font-size: 14px; - font-weight: bold; - text-decoration: none; - text-shadow: 0 -1px 1px #000; - border-radius: 5px; - box-shadow: 0 1px 3px rgba(0,0,0,0.5); - color: #fff; - background: #000; - background: linear-gradient(#6e6e6e 50%,#000 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #000),color-stop(0.5, #6e6e6e)); - background: -webkit-linear-gradient(#6e6e6e 50%,#000 50%); - background: -moz-linear-gradient(#6e6e6e 50%,#000 50%); - white-space: nowrap; - text-overflow: ellipsis; - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5); - -webkit-border-radius: 5px; - -webkit-backface-visibility: hidden; -} -/* Datewheel button container */ -.dwbc { - padding: 5px 0; - text-align: center; -} -/* Datewheel button wrapper */ -.dwbw { - display: inline-block; - width: 50%; - position: relative; - z-index: 5; -} -.dwbc-p .dwbw { - width: 33.33%; -} -/* Hidden label */ -.dwhl { - padding-top: 10px; -} -.dwhl .dwl { - display: none; -} -/* Multiple selection */ -.dwms .dwwms .dw-li { - padding: 0 40px; - position: relative; -} -.dwms .dw-msel:after { - width: 40px; - text-align: center; - position: absolute; - top: 0; - left: 0; - content: '✔'; -} -/* Backgrounds */ -.dwbg { - background: rgba(38,43,49,0.85); - border-radius: 3px; - -webkit-border-radius: 3px; -} -.dwbg .dwpm .dwwl { - border: 1px solid #aaa; -} -.dwbg .dwpm .dww { - color: #000; - background: #fff; - -webkit-border-radius: 3px; -} -.dwbg .dwwb { - background: #ccc; - color: #888; - text-shadow: 0 -1px 1px #333; - box-shadow: 0 0 5px #333; - -webkit-box-shadow: 0 0 5px #333; -} -.dwbg .dwwbp { - background: linear-gradient(#f7f7f7,#bdbdbd); - background: -webkit-gradient(linear,left bottom,left top,from(#bdbdbd),to(#f7f7f7)); - background: -webkit-linear-gradient(#f7f7f7,#bdbdbd); - background: -moz-linear-gradient(#f7f7f7,#bdbdbd); -} -.dwbg .dwwbm { - background: linear-gradient(#bdbdbd,#f7f7f7); - background: -webkit-gradient(linear,left bottom,left top,from(#f7f7f7),to(#bdbdbd)); - background: -webkit-linear-gradient(#bdbdbd,#f7f7f7); - background: -moz-linear-gradient(#bdbdbd,#f7f7f7); -} -.dwbg .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840 50%,#3c7500 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #3c7500),color-stop(0.5, #94c840)); - background: -webkit-linear-gradient(#94c840 50%,#3c7500 50%); - background: -moz-linear-gradient(#94c840 50%,#3c7500 50%); -} -.dwbg .dwwl .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840,#3c7500); - background: -webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840)); - background: -webkit-linear-gradient(#94c840,#3c7500); - background: -moz-linear-gradient(#94c840,#3c7500); -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.core.js b/lib/mobiscroll-2.6.0/mobiscroll.core.js deleted file mode 100644 index eaaf167395..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.core.js +++ /dev/null @@ -1,1078 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true, nomen: true */ -/*! - * jQuery MobiScroll v2.6.0 - * http://mobiscroll.com - * - * Copyright 2010-2013, Acid Media - * Licensed under the MIT license. - * - */ -(function ($) { - - function Scroller(elem, settings) { - var m, - hi, - v, - dw, - ww, // Window width - wh, // Window height - rwh, - mw, // Modal width - mh, // Modal height - anim, - debounce, - theme, - lang, - click, - scrollable, - moved, - start, - startTime, - stop, - p, - min, - max, - target, - index, - timer, - readOnly, - that = this, - ms = $.mobiscroll, - e = elem, - elm = $(e), - s = extend({}, defaults), - pres = {}, - iv = {}, - pos = {}, - pixels = {}, - wheels = [], - input = elm.is('input'), - visible = false, - onStart = function (e) { - // Scroll start - if (testTouch(e) && !move && !isReadOnly(this) && !click) { - // Prevent scroll - e.preventDefault(); - - move = true; - scrollable = s.mode != 'clickpick'; - target = $('.dw-ul', this); - setGlobals(target); - moved = iv[index] !== undefined; // Don't allow tap, if still moving - p = moved ? getCurrentPosition(target) : pos[index]; - start = getCoord(e, 'Y'); - startTime = new Date(); - stop = start; - scroll(target, index, p, 0.001); - - if (scrollable) { - target.closest('.dwwl').addClass('dwa'); - } - - $(document).bind(MOVE_EVENT, onMove).bind(END_EVENT, onEnd); - } - }, - onMove = function (e) { - if (scrollable) { - e.preventDefault(); - e.stopPropagation(); - stop = getCoord(e, 'Y'); - scroll(target, index, constrain(p + (start - stop) / hi, min - 1, max + 1)); - } - moved = true; - }, - onEnd = function (e) { - var time = new Date() - startTime, - val = constrain(p + (start - stop) / hi, min - 1, max + 1), - speed, - dist, - tindex, - ttop = target.offset().top; - - if (time < 300) { - speed = (stop - start) / time; - dist = (speed * speed) / s.speedUnit; - if (stop - start < 0) { - dist = -dist; - } - } else { - dist = stop - start; - } - - tindex = Math.round(p - dist / hi); - - if (!dist && !moved) { // this is a "tap" - var idx = Math.floor((stop - ttop) / hi), - li = $('.dw-li', target).eq(idx), - hl = scrollable; - - if (event('onValueTap', [li]) !== false) { - tindex = idx; - } else { - hl = true; - } - - if (hl) { - li.addClass('dw-hl'); // Highlight - setTimeout(function () { - li.removeClass('dw-hl'); - }, 200); - } - } - - if (scrollable) { - calc(target, tindex, 0, true, Math.round(val)); - } - - move = false; - target = null; - - $(document).unbind(MOVE_EVENT, onMove).unbind(END_EVENT, onEnd); - }, - onBtnStart = function (e) { - $(document).bind(END_EVENT, onBtnEnd); - // Active button - if (!$(this).hasClass('dwb-d')) { - $(this).addClass('dwb-a'); - } - // +/- buttons - if ($(this).hasClass('dwwb')) { - var w = $(this).closest('.dwwl'); - if (testTouch(e) && !isReadOnly(w) && !w.hasClass('dwa')) { - e.stopPropagation(); - e.preventDefault(); - click = true; - // + Button - var t = w.find('.dw-ul'), - func = $(this).hasClass('dwwbp') ? plus : minus; - - setGlobals(t); - clearInterval(timer); - timer = setInterval(function () { func(t); }, s.delay); - func(t); - } - } - }, - onBtnEnd = function (e) { - if (click) { - clearInterval(timer); - click = false; - } - $(document).unbind(END_EVENT, onBtnEnd); - $('.dwb-a', dw).removeClass('dwb-a'); - }, - onScroll = function (e) { - if (!isReadOnly(this)) { - e.preventDefault(); - e = e.originalEvent; - var delta = e.wheelDelta ? (e.wheelDelta / 120) : (e.detail ? (-e.detail / 3) : 0), - t = $('.dw-ul', this); - - setGlobals(t); - calc(t, Math.round(pos[index] - delta), delta < 0 ? 1 : 2); - } - }; - - // Private functions - - function isReadOnly(wh) { - if ($.isArray(s.readonly)) { - var i = $('.dwwl', dw).index(wh); - return s.readonly[i]; - } - return s.readonly; - } - - function generateWheelItems(i) { - var html = '
', - ww = wheels[i], - w = ww.values ? ww : convert(ww), - l = 1, - values = w.values, - keys = w.keys || values; - - $.each(values, function (j, v) { - if (l % 20 == 0) { - html += '
'; - } - html += '
' + v + '
'; - l++; - }); - - html += '
'; - return html; - } - - function setGlobals(t) { - min = $('.dw-li', t).index($('.dw-v', t).eq(0)); - max = $('.dw-li', t).index($('.dw-v', t).eq(-1)); - index = $('.dw-ul', dw).index(t); - } - - function formatHeader(v) { - var t = s.headerText; - return t ? (typeof t === 'function' ? t.call(e, v) : t.replace(/\{value\}/i, v)) : ''; - } - - function read() { - that.temp = ((input && that.val !== null && that.val != elm.val()) || that.values === null) ? s.parseValue(elm.val() || '', that) : that.values.slice(0); - setVal(); - } - - function getCurrentPosition(t) { - var style = window.getComputedStyle ? getComputedStyle(t[0]) : t[0].style, - matrix, - px; - - if (has3d) { - $.each(['t', 'webkitT', 'MozT', 'OT', 'msT'], function (i, v) { - if (style[v + 'ransform'] !== undefined) { - matrix = style[v + 'ransform']; - return false; - } - }); - matrix = matrix.split(')')[0].split(', '); - px = matrix[13] || matrix[5]; - } else { - px = style.top.replace('px', ''); - } - - return Math.round(m - (px / hi)); - } - - function ready(t, i) { - clearTimeout(iv[i]); - delete iv[i]; - t.closest('.dwwl').removeClass('dwa'); - } - - function scroll(t, index, val, time, active) { - - var px = (m - val) * hi, - style = t[0].style, - i; - - if (px == pixels[index] && iv[index]) { - return; - } - - if (time && px != pixels[index]) { - // Trigger animation start event - event('onAnimStart', [dw, index, time]); - } - - pixels[index] = px; - - style[pr + 'Transition'] = 'all ' + (time ? time.toFixed(3) : 0) + 's ease-out'; - - if (has3d) { - style[pr + 'Transform'] = 'translate3d(0,' + px + 'px,0)'; - } else { - style.top = px + 'px'; - } - - if (iv[index]) { - ready(t, index); - } - - if (time && active !== undefined) { - t.closest('.dwwl').addClass('dwa'); - iv[index] = setTimeout(function () { - ready(t, index); - }, time * 1000); - } - - pos[index] = val; - } - - function scrollToPos(time, index, manual, dir, active) { - - // Call validation event - if (event('validate', [dw, index, time]) !== false) { - - // Set scrollers to position - $('.dw-ul', dw).each(function (i) { - var t = $(this), - cell = $('.dw-li[data-val="' + that.temp[i] + '"]', t), - cells = $('.dw-li', t), - v = cells.index(cell), - l = cells.length, - sc = i == index || index === undefined; - - // Scroll to a valid cell - if (!cell.hasClass('dw-v')) { - var cell1 = cell, - cell2 = cell, - dist1 = 0, - dist2 = 0; - - while (v - dist1 >= 0 && !cell1.hasClass('dw-v')) { - dist1++; - cell1 = cells.eq(v - dist1); - } - - while (v + dist2 < l && !cell2.hasClass('dw-v')) { - dist2++; - cell2 = cells.eq(v + dist2); - } - - // If we have direction (+/- or mouse wheel), the distance does not count - if (((dist2 < dist1 && dist2 && dir !== 2) || !dist1 || (v - dist1 < 0) || dir == 1) && cell2.hasClass('dw-v')) { - cell = cell2; - v = v + dist2; - } else { - cell = cell1; - v = v - dist1; - } - } - - if (!(cell.hasClass('dw-sel')) || sc) { - // Set valid value - that.temp[i] = cell.attr('data-val'); - - // Add selected class to cell - $('.dw-sel', t).removeClass('dw-sel'); - cell.addClass('dw-sel'); - - // Scroll to position - scroll(t, i, v, sc ? time : 0.1, sc ? active : false); - } - }); - - // Reformat value if validation changed something - v = s.formatResult(that.temp); - if (s.display == 'inline') { - setVal(manual, 0, true); - } else { - $('.dwv', dw).html(formatHeader(v)); - } - - if (manual) { - event('onChange', [v]); - } - } - - } - - function event(name, args) { - var ret; - args.push(that); - $.each([theme.defaults, pres, settings], function (i, v) { - if (v[name]) { // Call preset event - ret = v[name].apply(e, args); - } - }); - return ret; - } - - function calc(t, val, dir, anim, orig) { - val = constrain(val, min, max); - - var cell = $('.dw-li', t).eq(val), - o = orig === undefined ? val : orig, - idx = index, - time = anim ? (val == o ? 0.1 : Math.abs((val - o) * s.timeUnit)) : 0; - - // Set selected scroller value - that.temp[idx] = cell.attr('data-val'); - - scroll(t, idx, val, time, orig); - - setTimeout(function () { - // Validate - scrollToPos(time, idx, true, dir, orig); - }, 10); - } - - function plus(t) { - var val = pos[index] + 1; - calc(t, val > max ? min : val, 1, true); - } - - function minus(t) { - var val = pos[index] - 1; - calc(t, val < min ? max : val, 2, true); - } - - function setVal(fill, time, noscroll, temp) { - - if (visible && !noscroll) { - scrollToPos(time); - } - - v = s.formatResult(that.temp); - - if (!temp) { - that.values = that.temp.slice(0); - that.val = v; - } - - if (fill) { - if (input) { - elm.val(v).trigger('change'); - } - } - } - - // Public functions - - that.position = function (check) { - - if (s.display == 'inline' || (ww === $(window).width() && rwh === $(window).height() && check) || (event('onPosition', [dw]) === false)) { - return; - } - - var w, - l, - t, - aw, // anchor width - ah, // anchor height - ap, // anchor position - at, // anchor top - al, // anchor left - arr, // arrow - arrw, // arrow width - arrl, // arrow left - scroll, - totalw = 0, - minw = 0, - st = $(window).scrollTop(), - wr = $('.dwwr', dw), - d = $('.dw', dw), - css = {}, - anchor = s.anchor === undefined ? elm : s.anchor; - - ww = $(window).width(); - rwh = $(window).height(); - wh = window.innerHeight; // on iOS we need innerHeight - wh = wh || rwh; - - if (/modal|bubble/.test(s.display)) { - $('.dwc', dw).each(function () { - w = $(this).outerWidth(true); - totalw += w; - minw = (w > minw) ? w : minw; - }); - w = totalw > ww ? minw : totalw; - wr.width(w).css('white-space', totalw > ww ? '' : 'nowrap'); - } - - mw = d.outerWidth(); - mh = d.outerHeight(true); - - if (s.display == 'modal') { - l = (ww - mw) / 2; - t = st + (wh - mh) / 2; - } else if (s.display == 'bubble') { - scroll = true; - arr = $('.dw-arrw-i', dw); - ap = anchor.offset(); - at = ap.top; - al = ap.left; - - // horizontal positioning - aw = anchor.outerWidth(); - ah = anchor.outerHeight(); - l = al - (d.outerWidth(true) - aw) / 2; - l = l > (ww - mw) ? (ww - (mw + 20)) : l; - l = l >= 0 ? l : 20; - - // vertical positioning - t = at - mh; // above the input - if ((t < st) || (at > st + wh)) { // if doesn't fit above or the input is out of the screen - d.removeClass('dw-bubble-top').addClass('dw-bubble-bottom'); - t = at + ah; // below the input - } else { - d.removeClass('dw-bubble-bottom').addClass('dw-bubble-top'); - } - - // Calculate Arrow position - arrw = arr.outerWidth(); - arrl = al + aw / 2 - (l + (mw - arrw) / 2); - - // Limit Arrow position - $('.dw-arr', dw).css({ left: constrain(arrl, 0, arrw) }); - } else { - css.width = '100%'; - if (s.display == 'top') { - t = st; - } else if (s.display == 'bottom') { - t = st + wh - mh; - } - } - - css.top = t < 0 ? 0 : t; - css.left = l; - d.css(css); - - // If top + modal height > doc height, increase doc height - $('.dw-persp', dw).height(0).height(t + mh > $(document).height() ? t + mh : $(document).height()); - - // Scroll needed - if (scroll && ((t + mh > st + wh) || (at > st + wh))) { - $(window).scrollTop(t + mh - wh); - } - }; - - /** - * Enables the scroller and the associated input. - */ - that.enable = function () { - s.disabled = false; - if (input) { - elm.prop('disabled', false); - } - }; - - /** - * Disables the scroller and the associated input. - */ - that.disable = function () { - s.disabled = true; - if (input) { - elm.prop('disabled', true); - } - }; - - /** - * Gets the selected wheel values, formats it, and set the value of the scroller instance. - * If input parameter is true, populates the associated input element. - * @param {Array} values - Wheel values. - * @param {Boolean} [fill=false] - Also set the value of the associated input element. - * @param {Number} [time=0] - Animation time - * @param {Boolean} [temp=false] - If true, then only set the temporary value.(only scroll there but not set the value) - */ - that.setValue = function (values, fill, time, temp) { - that.temp = $.isArray(values) ? values.slice(0) : s.parseValue.call(e, values + '', that); - setVal(fill, time, false, temp); - }; - - that.getValue = function () { - return that.values; - }; - - that.getValues = function () { - var ret = [], - i; - - for (i in that._selectedValues) { - ret.push(that._selectedValues[i]); - } - return ret; - }; - - /** - * Changes the values of a wheel, and scrolls to the correct position - */ - that.changeWheel = function (idx, time) { - if (dw) { - var i = 0, - nr = idx.length; - - $.each(s.wheels, function (j, wg) { - $.each(wg, function (k, w) { - if ($.inArray(i, idx) > -1) { - wheels[i] = w; - $('.dw-ul', dw).eq(i).html(generateWheelItems(i)); - nr--; - if (!nr) { - that.position(); - scrollToPos(time, undefined, true); - return false; - } - } - i++; - }); - if (!nr) { - return false; - } - }); - } - }; - - /** - * Return true if the scroller is currently visible. - */ - that.isVisible = function () { - return visible; - }; - - that.tap = function (el, handler) { - var startX, - startY; - - if (s.tap) { - el.bind('touchstart', function (e) { - e.preventDefault(); - startX = getCoord(e, 'X'); - startY = getCoord(e, 'Y'); - }).bind('touchend', function (e) { - // If movement is less than 20px, fire the click event handler - if (Math.abs(getCoord(e, 'X') - startX) < 20 && Math.abs(getCoord(e, 'Y') - startY) < 20) { - handler.call(this, e); - } - tap = true; - setTimeout(function () { - tap = false; - }, 300); - }); - } - - el.bind('click', function (e) { - if (!tap) { - // If handler was not called on touchend, call it on click; - handler.call(this, e); - } - }); - - }; - - /** - * Shows the scroller instance. - * @param {Boolean} prevAnim - Prevent animation if true - */ - that.show = function (prevAnim) { - if (s.disabled || visible) { - return false; - } - - if (s.display == 'top') { - anim = 'slidedown'; - } - - if (s.display == 'bottom') { - anim = 'slideup'; - } - - // Parse value from input - read(); - - event('onBeforeShow', []); - - // Create wheels - var l = 0, - mAnim = ''; - - if (anim && !prevAnim) { - mAnim = 'dw-' + anim + ' dw-in'; - } - // Create wheels containers - var html = '
' + (s.display == 'inline' ? '
' : '
' + '
' + (s.headerText ? '
' : '')) + '
'; - - $.each(s.wheels, function (i, wg) { // Wheel groups - html += '
'; - $.each(wg, function (j, w) { // Wheels - wheels[l] = w; - html += ''; - l++; - }); - - html += '
' + (s.mode != 'scroller' ? '
+
' : '') + '
' + (w.label || j) + '
'; - // Create wheel values - html += generateWheelItems(l); - html += '
'; - }); - - html += '
' + (s.display != 'inline' ? '
' + s.setText + '' + (s.button3 ? '' + s.button3Text + '' : '') + '' + s.cancelText + '
' : '') + '
'; - dw = $(html); - - scrollToPos(); - - event('onMarkupReady', [dw]); - - // Show - if (s.display != 'inline') { - dw.appendTo('body'); - if (anim && !prevAnim) { - dw.addClass('dw-trans'); - // Remove animation class - setTimeout(function () { - dw.removeClass('dw-trans').find('.dw').removeClass(mAnim); - }, 350); - } - } else if (elm.is('div')) { - elm.html(dw); - } else { - dw.insertAfter(elm); - } - - event('onMarkupInserted', [dw]); - - visible = true; - - // Theme init - theme.init(dw, that); - - if (s.display != 'inline') { - // Init buttons - that.tap($('.dwb-s span', dw), function () { - if (that.hide(false, 'set') !== false) { - setVal(true, 0, true); - event('onSelect', [that.val]); - } - }); - - that.tap($('.dwb-c span', dw), function () { - that.cancel(); - }); - - if (s.button3) { - that.tap($('.dwb-n span', dw), s.button3); - } - - // prevent scrolling if not specified otherwise - if (s.scrollLock) { - dw.bind('touchmove', function (e) { - if (mh <= wh && mw <= ww) { - e.preventDefault(); - } - }); - } - - // Disable inputs to prevent bleed through (Android bug) and set autocomplete to off (for Firefox) - /*$('input,select,button').each(function () { - if (!this.disabled) { - $(this).addClass('dwtd').prop('disabled', true).data('autocomplete', $(this).attr('autocomplete')).attr('autocomplete', 'off'); - } - });*/ - - // Set position - that.position(); - $(window).bind('orientationchange.dw resize.dw', function () { - // Sometimes scrollTop is not correctly set, so we wait a little - clearTimeout(debounce); - debounce = setTimeout(function () { - that.position(true); - }, 100); - }); - } - - // Events - dw.delegate('.dwwl', 'DOMMouseScroll mousewheel', onScroll).delegate('.dwb-e', START_EVENT, onBtnStart).delegate('.dwwl', START_EVENT, onStart); - - event('onShow', [dw, v]); - }; - - /** - * Hides the scroller instance. - */ - that.hide = function (prevAnim, btn) { - // If onClose handler returns false, prevent hide - if (!visible || event('onClose', [v, btn]) === false) { - return false; - } - - // Re-enable temporary disabled fields - $('.dwtd').each(function () { - $(this).prop('disabled', false).removeClass('dwtd'); - if ($(this).data('autocomplete')) { - $(this).attr('autocomplete', $(this).data('autocomplete')); - } else { - $(this).removeAttr('autocomplete'); - } - }); - elm.blur(); - - // Hide wheels and overlay - if (dw) { - if (s.display != 'inline' && anim && !prevAnim) { - dw.addClass('dw-trans').find('.dw').addClass('dw-' + anim + ' dw-out'); - setTimeout(function () { - dw.remove(); - dw = null; - }, 350); - } else { - dw.remove(); - dw = null; - } - visible = false; - pixels = {}; - // Stop positioning on window resize - $(window).unbind('.dw'); - } - }; - - /** - * Cancel and hide the scroller instance. - */ - that.cancel = function () { - if (that.hide(false, 'cancel') !== false) { - event('onCancel', [that.val]); - } - }; - - /** - * Scroller initialization. - */ - that.init = function (ss) { - // Get theme defaults - theme = extend({ defaults: {}, init: empty }, ms.themes[ss.theme || s.theme]); - - // Get language defaults - lang = ms.i18n[ss.lang || s.lang]; - - extend(settings, ss); // Update original user settings - extend(s, theme.defaults, lang, settings); - - that.settings = s; - - // Unbind all events (if re-init) - elm.unbind('.dw'); - - var preset = ms.presets[s.preset]; - - if (preset) { - pres = preset.call(e, that); - extend(s, pres, settings); // Load preset settings - } - - // Set private members - m = Math.floor(s.rows / 2); - hi = s.height; - anim = s.animate; - - if (visible) { - that.hide(); - } - - if (s.display == 'inline') { - that.show(); - } else { - read(); - if (input && s.showOnFocus) { - // Set element readonly, save original state - if (readOnly === undefined) { - readOnly = e.readOnly; - } - e.readOnly = true; - // Init show datewheel - elm.bind('focus.dw', function () { that.show(); }); - } - } - }; - - that.trigger = function (name, params) { - return event(name, params); - }; - - that.option = function (opt, value) { - var obj = {}; - if (typeof opt === 'object') { - obj = opt; - } else { - obj[opt] = value; - } - that.init(obj); - }; - - that.destroy = function () { - that.hide(); - elm.unbind('.dw'); - delete scrollers[e.id]; - if (input) { - e.readOnly = readOnly; - } - }; - - that.getInst = function () { - return that; - }; - - that.values = null; - that.val = null; - that.temp = null; - that._selectedValues = {}; - - that.init(settings); - } - - function testProps(props) { - var i; - for (i in props) { - if (mod[props[i]] !== undefined) { - return true; - } - } - return false; - } - - function testPrefix() { - var prefixes = ['Webkit', 'Moz', 'O', 'ms'], - p; - - for (p in prefixes) { - if (testProps([prefixes[p] + 'Transform'])) { - return '-' + prefixes[p].toLowerCase(); - } - } - return ''; - } - - function testTouch(e) { - if (e.type === 'touchstart') { - touch = true; - /*setTimeout(function () { - touch = false; // Reset if mouse event was not fired - }, 500);*/ - } else if (touch) { - touch = false; - return false; - } - return true; - } - - function getCoord(e, c) { - var org = e.originalEvent, - ct = e.changedTouches; - return ct || (org && org.changedTouches) ? (org ? org.changedTouches[0]['page' + c] : ct[0]['page' + c]) : e['page' + c]; - - } - - function constrain(val, min, max) { - return Math.max(min, Math.min(val, max)); - } - - function convert(w) { - var ret = { - values: [], - keys: [] - }; - $.each(w, function (k, v) { - ret.keys.push(k); - ret.values.push(v); - }); - return ret; - } - - function init(that, options, args) { - var ret = that; - - // Init - if (typeof options === 'object') { - return that.each(function () { - if (!this.id) { - uuid += 1; - this.id = 'mobiscroll' + uuid; - } - scrollers[this.id] = new Scroller(this, options); - }); - } - - // Method call - if (typeof options === 'string') { - that.each(function () { - var r, - inst = scrollers[this.id]; - - if (inst && inst[options]) { - r = inst[options].apply(this, Array.prototype.slice.call(args, 1)); - if (r !== undefined) { - ret = r; - return false; - } - } - }); - } - - return ret; - } - - var move, - tap, - touch, - date = new Date(), - uuid = date.getTime(), - scrollers = {}, - empty = function () {}, - mod = document.createElement('modernizr').style, - has3d = testProps(['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective']), - prefix = testPrefix(), - pr = prefix.replace(/^\-/, '').replace('moz', 'Moz'), - extend = $.extend, - START_EVENT = 'touchstart mousedown', - MOVE_EVENT = 'touchmove mousemove', - END_EVENT = 'touchend mouseup', - defaults = { - // Options - width: 70, - height: 40, - rows: 3, - delay: 300, - disabled: false, - readonly: false, - showOnFocus: true, - showLabel: true, - wheels: [], - theme: '', - headerText: '{value}', - display: 'modal', - mode: 'scroller', - preset: '', - lang: 'en-US', - setText: 'Set', - cancelText: 'Cancel', - scrollLock: true, - tap: true, - speedUnit: 0.0012, - timeUnit: 0.1, - formatResult: function (d) { - return d.join(' '); - }, - parseValue: function (value, inst) { - var val = value.split(' '), - ret = [], - i = 0, - keys; - - $.each(inst.settings.wheels, function (j, wg) { - $.each(wg, function (k, w) { - w = w.values ? w : convert(w); - keys = w.keys || w.values; - if ($.inArray(val[i], keys) !== -1) { - ret.push(val[i]); - } else { - ret.push(keys[0]); - } - i++; - }); - }); - return ret; - } - }; - - $(document).bind('mouseover mouseup mousedown click', function (e) { // Prevent standard behaviour on body click - if (tap) { - e.stopPropagation(); - e.preventDefault(); - return false; - } - }); - - $.fn.mobiscroll = function (method) { - extend(this, $.mobiscroll.shorts); - return init(this, method, arguments); - }; - - $.mobiscroll = $.mobiscroll || { - /** - * Set settings for all instances. - * @param {Object} o - New default settings. - */ - setDefaults: function (o) { - extend(defaults, o); - }, - presetShort: function (name) { - this.shorts[name] = function (method) { - return init(this, extend(method, { preset: name }), arguments); - }; - }, - shorts: {}, - presets: {}, - themes: {}, - i18n: {} - }; - - $.scroller = $.scroller || $.mobiscroll; - $.fn.scroller = $.fn.scroller || $.fn.mobiscroll; - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.datetime.js b/lib/mobiscroll-2.6.0/mobiscroll.datetime.js deleted file mode 100644 index 191374f429..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.datetime.js +++ /dev/null @@ -1,676 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -(function ($) { - - var ms = $.mobiscroll, - date = new Date(), - defaults = { - dateFormat: 'mm/dd/yy', - dateOrder: 'mmddy', - timeWheels: 'hhiiA', - timeFormat: 'hh:ii A', - startYear: date.getFullYear() - 100, - endYear: date.getFullYear() + 1, - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - shortYearCutoff: '+10', - monthText: 'Month', - dayText: 'Day', - yearText: 'Year', - hourText: 'Hours', - minuteText: 'Minutes', - secText: 'Seconds', - ampmText: ' ', - nowText: 'Now', - showNow: false, - stepHour: 1, - stepMinute: 1, - stepSecond: 1, - separator: ' ' - }, - preset = function (inst) { - var that = $(this), - html5def = {}, - format; - // Force format for html5 date inputs (experimental) - if (that.is('input')) { - switch (that.attr('type')) { - case 'date': - format = 'yy-mm-dd'; - break; - case 'datetime': - format = 'yy-mm-ddTHH:ii:ssZ'; - break; - case 'datetime-local': - format = 'yy-mm-ddTHH:ii:ss'; - break; - case 'month': - format = 'yy-mm'; - html5def.dateOrder = 'mmyy'; - break; - case 'time': - format = 'HH:ii:ss'; - break; - } - // Check for min/max attributes - var min = that.attr('min'), - max = that.attr('max'); - if (min) { - html5def.minDate = ms.parseDate(format, min); - } - if (max) { - html5def.maxDate = ms.parseDate(format, max); - } - } - - // Set year-month-day order - var i, - k, - keys, - values, - wg, - start, - end, - orig = $.extend({}, inst.settings), - s = $.extend(inst.settings, defaults, html5def, orig), - offset = 0, - wheels = [], - ord = [], - o = {}, - f = { y: 'getFullYear', m: 'getMonth', d: 'getDate', h: getHour, i: getMinute, s: getSecond, a: getAmPm }, - p = s.preset, - dord = s.dateOrder, - tord = s.timeWheels, - regen = dord.match(/D/), - ampm = tord.match(/a/i), - hampm = tord.match(/h/), - hformat = p == 'datetime' ? s.dateFormat + s.separator + s.timeFormat : p == 'time' ? s.timeFormat : s.dateFormat, - defd = new Date(), - stepH = s.stepHour, - stepM = s.stepMinute, - stepS = s.stepSecond, - mind = s.minDate || new Date(s.startYear, 0, 1), - maxd = s.maxDate || new Date(s.endYear, 11, 31, 23, 59, 59); - - format = format || hformat; - - if (p.match(/date/i)) { - - // Determine the order of year, month, day wheels - $.each(['y', 'm', 'd'], function (j, v) { - i = dord.search(new RegExp(v, 'i')); - if (i > -1) { - ord.push({ o: i, v: v }); - } - }); - ord.sort(function (a, b) { return a.o > b.o ? 1 : -1; }); - $.each(ord, function (i, v) { - o[v.v] = i; - }); - - wg = []; - for (k = 0; k < 3; k++) { - if (k == o.y) { - offset++; - values = []; - keys = []; - start = mind.getFullYear(); - end = maxd.getFullYear(); - for (i = start; i <= end; i++) { - keys.push(i); - values.push(dord.match(/yy/i) ? i : (i + '').substr(2, 2)); - } - addWheel(wg, keys, values, s.yearText); - } else if (k == o.m) { - offset++; - values = []; - keys = []; - for (i = 0; i < 12; i++) { - var str = dord.replace(/[dy]/gi, '').replace(/mm/, i < 9 ? '0' + (i + 1) : i + 1).replace(/m/, (i + 1)); - keys.push(i); - values.push(str.match(/MM/) ? str.replace(/MM/, '' + s.monthNames[i] + '') : str.replace(/M/, '' + s.monthNamesShort[i] + '')); - } - addWheel(wg, keys, values, s.monthText); - } else if (k == o.d) { - offset++; - values = []; - keys = []; - for (i = 1; i < 32; i++) { - keys.push(i); - values.push(dord.match(/dd/i) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.dayText); - } - } - wheels.push(wg); - } - - if (p.match(/time/i)) { - - // Determine the order of hours, minutes, seconds wheels - ord = []; - $.each(['h', 'i', 's', 'a'], function (i, v) { - i = tord.search(new RegExp(v, 'i')); - if (i > -1) { - ord.push({ o: i, v: v }); - } - }); - ord.sort(function (a, b) { - return a.o > b.o ? 1 : -1; - }); - $.each(ord, function (i, v) { - o[v.v] = offset + i; - }); - - wg = []; - for (k = offset; k < offset + 4; k++) { - if (k == o.h) { - offset++; - values = []; - keys = []; - for (i = 0; i < (hampm ? 12 : 24); i += stepH) { - keys.push(i); - values.push(hampm && i == 0 ? 12 : tord.match(/hh/i) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.hourText); - } else if (k == o.i) { - offset++; - values = []; - keys = []; - for (i = 0; i < 60; i += stepM) { - keys.push(i); - values.push(tord.match(/ii/) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.minuteText); - } else if (k == o.s) { - offset++; - values = []; - keys = []; - for (i = 0; i < 60; i += stepS) { - keys.push(i); - values.push(tord.match(/ss/) && i < 10 ? '0' + i : i); - } - addWheel(wg, keys, values, s.secText); - } else if (k == o.a) { - offset++; - var upper = tord.match(/A/); - addWheel(wg, [0, 1], upper ? ['AM', 'PM'] : ['am', 'pm'], s.ampmText); - } - } - - wheels.push(wg); - } - - function get(d, i, def) { - if (o[i] !== undefined) { - return +d[o[i]]; - } - if (def !== undefined) { - return def; - } - return defd[f[i]] ? defd[f[i]]() : f[i](defd); - } - - function addWheel(wg, k, v, lbl) { - wg.push({ - values: v, - keys: k, - label: lbl - }); - } - - function step(v, st) { - return Math.floor(v / st) * st; - } - - function getHour(d) { - var hour = d.getHours(); - hour = hampm && hour >= 12 ? hour - 12 : hour; - return step(hour, stepH); - } - - function getMinute(d) { - return step(d.getMinutes(), stepM); - } - - function getSecond(d) { - return step(d.getSeconds(), stepS); - } - - function getAmPm(d) { - return ampm && d.getHours() > 11 ? 1 : 0; - } - - function getDate(d) { - var hour = get(d, 'h', 0); - return new Date(get(d, 'y'), get(d, 'm'), get(d, 'd', 1), get(d, 'a') ? hour + 12 : hour, get(d, 'i', 0), get(d, 's', 0)); - } - - // Extended methods - // --- - - /** - * Sets the selected date - * - * @param {Date} d Date to select. - * @param {Boolean} [fill=false] Also set the value of the associated input element. Default is true. - * @return {Object} jQuery object to maintain chainability - */ - inst.setDate = function (d, fill, time, temp) { - var i; - - // Set wheels - for (i in o) { - inst.temp[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d); - } - inst.setValue(inst.temp, fill, time, temp); - }; - - /** - * Returns the currently selected date. - * - * @param {Boolean} [temp=false] If true, return the currently shown date on the picker, otherwise the last selected one - * @return {Date} - */ - inst.getDate = function (temp) { - return getDate(temp ? inst.temp : inst.values); - }; - - // --- - - return { - button3Text: s.showNow ? s.nowText : undefined, - button3: s.showNow ? function () { inst.setDate(new Date(), false, 0.3, true); } : undefined, - wheels: wheels, - headerText: function (v) { - return ms.formatDate(hformat, getDate(inst.temp), s); - }, - /** - * Builds a date object from the wheel selections and formats it to the given date/time format - * @param {Array} d - An array containing the selected wheel values - * @return {String} - The formatted date string - */ - formatResult: function (d) { - return ms.formatDate(format, getDate(d), s); - }, - /** - * Builds a date object from the input value and returns an array to set wheel values - * @return {Array} - An array containing the wheel values to set - */ - parseValue: function (val) { - var d = new Date(), - i, - result = []; - try { - d = ms.parseDate(format, val, s); - } catch (e) { - } - // Set wheels - for (i in o) { - result[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d); - } - return result; - }, - /** - * Validates the selected date to be in the minDate / maxDate range and sets unselectable values to disabled - * @param {Object} dw - jQuery object containing the generated html - * @param {Integer} [i] - Index of the changed wheel, not set for initial validation - */ - validate: function (dw, i) { - var temp = inst.temp, //.slice(0), - mins = { y: mind.getFullYear(), m: 0, d: 1, h: 0, i: 0, s: 0, a: 0 }, - maxs = { y: maxd.getFullYear(), m: 11, d: 31, h: step(hampm ? 11 : 23, stepH), i: step(59, stepM), s: step(59, stepS), a: 1 }, - minprop = true, - maxprop = true; - $.each(['y', 'm', 'd', 'a', 'h', 'i', 's'], function (x, i) { - if (o[i] !== undefined) { - var min = mins[i], - max = maxs[i], - maxdays = 31, - val = get(temp, i), - t = $('.dw-ul', dw).eq(o[i]), - y, - m; - if (i == 'd') { - y = get(temp, 'y'); - m = get(temp, 'm'); - maxdays = 32 - new Date(y, m, 32).getDate(); - max = maxdays; - if (regen) { - $('.dw-li', t).each(function () { - var that = $(this), - d = that.data('val'), - w = new Date(y, m, d).getDay(), - str = dord.replace(/[my]/gi, '').replace(/dd/, d < 10 ? '0' + d : d).replace(/d/, d); - $('.dw-i', that).html(str.match(/DD/) ? str.replace(/DD/, '' + s.dayNames[w] + '') : str.replace(/D/, '' + s.dayNamesShort[w] + '')); - }); - } - } - if (minprop && mind) { - min = mind[f[i]] ? mind[f[i]]() : f[i](mind); - } - if (maxprop && maxd) { - max = maxd[f[i]] ? maxd[f[i]]() : f[i](maxd); - } - if (i != 'y') { - var i1 = $('.dw-li', t).index($('.dw-li[data-val="' + min + '"]', t)), - i2 = $('.dw-li', t).index($('.dw-li[data-val="' + max + '"]', t)); - $('.dw-li', t).removeClass('dw-v').slice(i1, i2 + 1).addClass('dw-v'); - if (i == 'd') { // Hide days not in month - $('.dw-li', t).removeClass('dw-h').slice(maxdays).addClass('dw-h'); - } - } - if (val < min) { - val = min; - } - if (val > max) { - val = max; - } - if (minprop) { - minprop = val == min; - } - if (maxprop) { - maxprop = val == max; - } - // Disable some days - if (s.invalid && i == 'd') { - var idx = []; - // Disable exact dates - if (s.invalid.dates) { - $.each(s.invalid.dates, function (i, v) { - if (v.getFullYear() == y && v.getMonth() == m) { - idx.push(v.getDate() - 1); - } - }); - } - // Disable days of week - if (s.invalid.daysOfWeek) { - var first = new Date(y, m, 1).getDay(), - j; - $.each(s.invalid.daysOfWeek, function (i, v) { - for (j = v - first; j < maxdays; j += 7) { - if (j >= 0) { - idx.push(j); - } - } - }); - } - // Disable days of month - if (s.invalid.daysOfMonth) { - $.each(s.invalid.daysOfMonth, function (i, v) { - v = (v + '').split('/'); - if (v[1]) { - if (v[0] - 1 == m) { - idx.push(v[1] - 1); - } - } else { - idx.push(v[0] - 1); - } - }); - } - $.each(idx, function (i, v) { - $('.dw-li', t).eq(v).removeClass('dw-v'); - }); - } - - // Set modified value - temp[o[i]] = val; - } - }); - } - }; - }; - - $.each(['date', 'time', 'datetime'], function (i, v) { - ms.presets[v] = preset; - ms.presetShort(v); - }); - - /** - * Format a date into a string value with a specified format. - * @param {String} format - Output format. - * @param {Date} date - Date to format. - * @param {Object} settings - Settings. - * @return {String} - Returns the formatted date string. - */ - ms.formatDate = function (format, date, settings) { - if (!date) { - return null; - } - var s = $.extend({}, defaults, settings), - look = function (m) { // Check whether a format character is doubled - var n = 0; - while (i + 1 < format.length && format.charAt(i + 1) == m) { - n++; - i++; - } - return n; - }, - f1 = function (m, val, len) { // Format a number, with leading zero if necessary - var n = '' + val; - if (look(m)) { - while (n.length < len) { - n = '0' + n; - } - } - return n; - }, - f2 = function (m, val, s, l) { // Format a name, short or long as requested - return (look(m) ? l[val] : s[val]); - }, - i, - output = '', - literal = false; - - for (i = 0; i < format.length; i++) { - if (literal) { - if (format.charAt(i) == "'" && !look("'")) { - literal = false; - } else { - output += format.charAt(i); - } - } else { - switch (format.charAt(i)) { - case 'd': - output += f1('d', date.getDate(), 2); - break; - case 'D': - output += f2('D', date.getDay(), s.dayNamesShort, s.dayNames); - break; - case 'o': - output += f1('o', (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3); - break; - case 'm': - output += f1('m', date.getMonth() + 1, 2); - break; - case 'M': - output += f2('M', date.getMonth(), s.monthNamesShort, s.monthNames); - break; - case 'y': - output += (look('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); - break; - case 'h': - var h = date.getHours(); - output += f1('h', (h > 12 ? (h - 12) : (h == 0 ? 12 : h)), 2); - break; - case 'H': - output += f1('H', date.getHours(), 2); - break; - case 'i': - output += f1('i', date.getMinutes(), 2); - break; - case 's': - output += f1('s', date.getSeconds(), 2); - break; - case 'a': - output += date.getHours() > 11 ? 'pm' : 'am'; - break; - case 'A': - output += date.getHours() > 11 ? 'PM' : 'AM'; - break; - case "'": - if (look("'")) { - output += "'"; - } else { - literal = true; - } - break; - default: - output += format.charAt(i); - } - } - } - return output; - }; - - /** - * Extract a date from a string value with a specified format. - * @param {String} format - Input format. - * @param {String} value - String to parse. - * @param {Object} settings - Settings. - * @return {Date} - Returns the extracted date. - */ - ms.parseDate = function (format, value, settings) { - var def = new Date(); - - if (!format || !value) { - return def; - } - - value = (typeof value == 'object' ? value.toString() : value + ''); - - var s = $.extend({}, defaults, settings), - shortYearCutoff = s.shortYearCutoff, - year = def.getFullYear(), - month = def.getMonth() + 1, - day = def.getDate(), - doy = -1, - hours = def.getHours(), - minutes = def.getMinutes(), - seconds = 0, //def.getSeconds(), - ampm = -1, - literal = false, // Check whether a format character is doubled - lookAhead = function (match) { - var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); - if (matches) { - iFormat++; - } - return matches; - }, - getNumber = function (match) { // Extract a number from the string value - lookAhead(match); - var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)))), - digits = new RegExp('^\\d{1,' + size + '}'), - num = value.substr(iValue).match(digits); - - if (!num) { - return 0; - } - //throw 'Missing number at position ' + iValue; - iValue += num[0].length; - return parseInt(num[0], 10); - }, - getName = function (match, s, l) { // Extract a name from the string value and convert to an index - var names = (lookAhead(match) ? l : s), - i; - - for (i = 0; i < names.length; i++) { - if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) { - iValue += names[i].length; - return i + 1; - } - } - return 0; - //throw 'Unknown name at position ' + iValue; - }, - checkLiteral = function () { - //if (value.charAt(iValue) != format.charAt(iFormat)) - //throw 'Unexpected literal at position ' + iValue; - iValue++; - }, - iValue = 0, - iFormat; - - for (iFormat = 0; iFormat < format.length; iFormat++) { - if (literal) { - if (format.charAt(iFormat) == "'" && !lookAhead("'")) { - literal = false; - } else { - checkLiteral(); - } - } else { - switch (format.charAt(iFormat)) { - case 'd': - day = getNumber('d'); - break; - case 'D': - getName('D', s.dayNamesShort, s.dayNames); - break; - case 'o': - doy = getNumber('o'); - break; - case 'm': - month = getNumber('m'); - break; - case 'M': - month = getName('M', s.monthNamesShort, s.monthNames); - break; - case 'y': - year = getNumber('y'); - break; - case 'H': - hours = getNumber('H'); - break; - case 'h': - hours = getNumber('h'); - break; - case 'i': - minutes = getNumber('i'); - break; - case 's': - seconds = getNumber('s'); - break; - case 'a': - ampm = getName('a', ['am', 'pm'], ['am', 'pm']) - 1; - break; - case 'A': - ampm = getName('A', ['am', 'pm'], ['am', 'pm']) - 1; - break; - case "'": - if (lookAhead("'")) { - checkLiteral(); - } else { - literal = true; - } - break; - default: - checkLiteral(); - } - } - } - if (year < 100) { - year += new Date().getFullYear() - new Date().getFullYear() % 100 + - (year <= (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)) ? 0 : -100); - } - if (doy > -1) { - month = 1; - day = doy; - do { - var dim = 32 - new Date(year, month - 1, 32).getDate(); - if (day <= dim) { - break; - } - month++; - day -= dim; - } while (true); - } - hours = (ampm == -1) ? hours : ((ampm && hours < 12) ? (hours + 12) : (!ampm && hours == 12 ? 0 : hours)); - var date = new Date(year, month - 1, day, hours, minutes, seconds); - if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) { - throw 'Invalid date'; - } - return date; - }; - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.ios.css b/lib/mobiscroll-2.6.0/mobiscroll.ios.css deleted file mode 100644 index dbc3a42d34..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.ios.css +++ /dev/null @@ -1,240 +0,0 @@ -/* iOS Skin */ -.ios .dw { - min-width: 134px; - padding: 0; - border: 1px solid #2d3034; - background: none; - color: #fff; - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dwo { - background: none; -} -.ios .dwwr { - position: relative; - margin-top: 40px; - background: #50515d; - background: linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); - background: -webkit-gradient(linear,left top,left bottom,from(#9f9fa6),color-stop(0.5, #484a55),color-stop(0.5, #272836),to(#282a39)); - background: -webkit-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); - background: -moz-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39); -} -.ios .dwi .dwwr { - margin-top: 0; -} -.ios .dwv { - display: none; -} -.ios .dwc { - padding: 30px 2px; - margin: 0; -} -.ios .dwhl { - padding: 10px 2px; -} -.ios .dwwc { - background: transparent; -} -.ios .dwwl { - margin: 4px 0; - border-left: 1px solid #000; - border-right: 1px solid #000; - background: #cbcce0; - background: linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#2c2c38),color-stop(0.35, #cbcce0),color-stop(0.65, #cbcce0),to(#2c2c38)); - background: -webkit-linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - background: -moz-linear-gradient(#2c2c38 0%,#cbcce0 35%, #cbcce0 65%,#2c2c38 100%); - box-shadow: 0 1px 1px rgba(255,255,255,0.3); - -webkit-box-shadow: 0 1px 1px rgba(255,255,255,0.3); -} -.ios td:first-child .dwwl { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; -} -.ios td:last-child .dwwl { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; -} -.ios .dwsc .dwwl { - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dwsc .dww { - background: #fff; - background: linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.10, #999),color-stop(0.30, #fff),color-stop(0.70, #fff),color-stop(0.90, #999),to(#333)); - background: -webkit-linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - background: -moz-linear-gradient(#333 0%,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%); - border-radius: 0; - -webkit-border-radius: 0; -} -.ios .dw .dwpm .dww { - background: linear-gradient(#333,#fff 48%,#fff 52%,#333); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.48, #fff),color-stop(0.52, #fff),to(#333)); - background: -webkit-linear-gradient(#333 0%,#fff 48%,#fff 52%,#333 100%); - background: -moz-linear-gradient(#333 0%,#fff 48%,#fff 52%,#333 100%); -} -.ios .dw .dwpm .dwwl { - margin: 4px 2px; - border: 1px solid #000; -} -.ios .dw .dwpm .dww { - margin: 0; - border: 0; -} -.ios .dww .dw-li { - color: #000; - font-size: 20px; - font-weight: bold; - text-align: right; - text-shadow: none; -} -.ios .dww .dw-li.dw-hl { - background: linear-gradient(#0288f3,#005de6); - background: -webkit-gradient(linear,left bottom,left top,from(#0288f3),to(#005de6)); - background: -webkit-linear-gradient(#0288f3,#005de6); - background: -moz-linear-gradient(#0288f3,#005de6); - color: #fff; -} -.ios .dwwo { - background: linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1, rgba(153,153,153,0)),color-stop(0.9, rgba(153,153,153,0)),to(#333)); - background: -webkit-linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); - background: -moz-linear-gradient(#333 0%,rgba(153,153,153,0) 10%, rgba(153,153,153,0) 90%, #333 100%); -} -.ios .dwwol { - height: 28px; - padding: 1px; - margin-top: -16px; - border-color: #7b8699; - background: #6f75b0; - background: linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, rgba(111, 117, 176, 0.5)),color-stop(0.5, rgba(151, 157, 197, 0.5))); - background: -webkit-linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - background: -moz-linear-gradient(rgba(151, 157, 197, 0.5) 50%,rgba(111, 117, 176, 0.5) 50%); - z-index: 10; - left: -1px; - box-shadow: 0 1px 3px rgba(0,0,0,0.5); - -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5); - filter: alpha(opacity=50); -} -.ios .dww .dwwol { - display: none; -} -.ios .dw .dwbc { - position: absolute; - top: -40px; - left: 0; - width: 100%; - height: 28px; - padding: 5px 0; - background: #454545; - background: linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - background: -webkit-gradient(linear,left top,left bottom,from(rgba(69,69,69,0.7)),color-stop(0.5, rgba(37,37,37,0.7)),color-stop(0.5, rgba(16,16,16,0.7)),to(rgba(0,0,0,0.7))); - background: -webkit-linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - background: -moz-linear-gradient(rgba(69,69,69,0.7),rgba(37,37,37,0.7) 50%,rgba(16,16,16,0.7) 50%,rgba(0,0,0,0.7)); - border-bottom: 1px solid #888; - border-bottom: 1px solid rgba(255,255,255,0.5); - border-top: 1px solid #888; - border-top: 1px solid rgba(255,255,255,0.5); -} -.ios .dw .dwb { - margin: 0 5px; - padding: 0 10px; - display: inline-block; - font-size: 12px; - height: 26px; - line-height: 26px; - border: 1px solid #1f1f1f; - background: #1a1a1a; - background: linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - background: -webkit-gradient(linear,left top,left bottom,from(#7b7b7b),color-stop(0.5, #1a1a1a),color-stop(0.5, #000)); - background: -webkit-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - background: -moz-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%); - box-shadow: 0 1px 0 rgba(255,255,255,0.3); - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.3); -} -.ios .dwb-s .dwb { - border: 1px solid #194aab; - background: #194aab; - background: linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); - background: -webkit-gradient(linear,left top,left bottom,from(#82aaff),color-stop(0.5,#3162c4),color-stop(0.5,#194aab)); - background: -webkit-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); - background: -moz-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%); -} -.ios .dwb-a { - opacity: .8; - filter: alpha(opacity=80); -} -.ios .dw .dwwb { - color: #fff; - border: 0; - background: #3f4e68; - background: linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#3f4e68),color-stop(0.5, #75859f),color-stop(0.5, #808ea6),to(#c7d1e2)); - background: -webkit-linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); - background: -moz-linear-gradient(#c7d1e2 0%,#808ea6 50%,#75859f 50%,#3f4e68 100%); -} -.ios .dw .dwwl .dwb-a { - background: #252c36; - background: linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); - background: -webkit-gradient(linear,left bottom,left top,from(#252c36),color-stop(0.5, #171e28),color-stop(0.5, #272e38),to(#6b6e75)); - background: -webkit-linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); - background: -moz-linear-gradient(#6b6e75 0%,#272e38 50%,#171e28 50%,#252c36 100%); -} -.ios .dwb-s, .ios .dwb-n { - width: auto; - float: right; - text-align: right; -} -.ios .dwb-c { - width: auto; - float: left; - text-align: left; -} -/* Bubble positioning */ -.ios.dw-bubble .dw { - padding: 6px; - background: #afafaf; - background: linear-gradient(#afafaf, #1b2530 30%); - background: -webkit-gradient(linear,left top,left bottom,from(#afafaf),color-stop(0.3, #1b2530)); - background: -webkit-linear-gradient(#afafaf, #1b2530 30%); - background: -moz-linear-gradient(#afafaf, #1b2530 30%); - box-shadow: 0 0 25px rgba(0,0,0,0.7); - border-radius: 5px; - -webkit-border-radius: 5px; - -webkit-box-shadow: 0 0 25px rgba(0,0,0,0.7); -} -.ios .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #2d3034 transparent; -} -.ios .dw-bubble-bottom .dw-arr:after { - content: ''; - position: absolute; - top: -16px; - left: -17px; - border: 17px solid #afafaf; - border-color: transparent transparent #afafaf transparent; -} -.ios .dw-bubble-top .dw-arr { - border-color: #1b2530 transparent transparent transparent; -} -/* Multiple select */ -.ios .dwwms .dwwol { - display: none; -} -.ios .dwwms .dw-li { - padding: 0 5px 0 30px; - text-align: left; -} -.ios .dw-msel:after { - width: 30px; -} -.ios .dww .dw-msel { - color: #215085; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.ios.js b/lib/mobiscroll-2.6.0/mobiscroll.ios.js deleted file mode 100644 index 984e24264f..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.ios.js +++ /dev/null @@ -1,15 +0,0 @@ -(function ($) { - - $.mobiscroll.themes.ios = { - defaults: { - dateOrder: 'MMdyy', - rows: 5, - height: 30, - width: 55, - headerText: false, - showLabel: false, - useShortLabels: true - } - } - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.jqm.css b/lib/mobiscroll-2.6.0/mobiscroll.jqm.css deleted file mode 100644 index c70e96ee70..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.jqm.css +++ /dev/null @@ -1,88 +0,0 @@ -/* jQuery Mobile Theme */ -.jqm .dwo { - background: none; -} -.jqm .dw { - padding: 6px; - z-index: 1003; -} -.jqm .dwv { - position: static; - width: auto; - padding: .7em 15px .7em 15px; - border: 0; -} -.jqm .dwwr { - border: 0; - padding: 0; -} -.jqm .dwpm .dwwo { - background: none; -} -.jqm .dwc { - padding: 30px 5px 5px 5px; - } -.jqm .dwhl { - padding: 5px; -} -.jqm .dwwb { - margin: 0; - border: 0; -} -.jqm .dwwb span { - padding: 0; -} -.jqm .dwwbp .ui-btn-inner { - font-size: 40px; - border-radius: 3px 3px 0 0; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; -} -.jqm .dwwbm .ui-btn-inner { - font-size: 32px; - border-radius: 0 0 3px 3px; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; -} -.jqm .dwwbp span { - font-weight: normal; -} -.jqm .dwbc { - padding: 0; -} -.jqm .dwbc .ui-btn { - margin: .5em 5px; -} -.jqm .dwbc .ui-btn-inner { - font-size: 12px; -} -.jqm .dwpm .dwl { - border: 0; - background: none; -} -/* Bubble positioning */ -.jqm .dw-bubble-bottom .dw-arr -{ - border-color: transparent transparent #444 transparent; -} -.jqm .dw-bubble-top .dw-arr -{ - border-color: #222 transparent transparent transparent; -} -/* Docked */ -.jqm.dw-bottom .dw, .jqm.dw-top .dw { - padding: 0; - border-radius: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; -} -.jqm.dw-top .dw { - border-right: 0; - border-top: 0; - border-left: 0; -} -.jqm.dw-bottom .dw { - border-bottom: 0; - border-right: 0; - border-left: 0; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.jqm.js b/lib/mobiscroll-2.6.0/mobiscroll.jqm.js deleted file mode 100644 index eb65854822..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.jqm.js +++ /dev/null @@ -1,30 +0,0 @@ -(function ($) { - - $.mobiscroll.themes.jqm = { - defaults: { - jqmBorder: 'a', - jqmBody: 'c', - jqmHeader: 'b', - jqmWheel: 'd', - jqmClickPick: 'c', - jqmSet: 'b', - jqmCancel: 'c' - }, - init: function (elm, inst) { - var s = inst.settings; - $('.dw', elm).removeClass('dwbg').addClass('ui-overlay-shadow ui-corner-all ui-body-' + s.jqmBorder); - $('.dwb-s span', elm).attr('data-role', 'button').attr('data-theme', s.jqmSet); - $('.dwb-n span', elm).attr('data-role', 'button').attr('data-theme', s.jqmCancel); - $('.dwb-c span', elm).attr('data-role', 'button').attr('data-theme', s.jqmCancel); - $('.dwwb', elm).attr('data-role', 'button').attr('data-theme', s.jqmClickPick); - $('.dwv', elm).addClass('ui-header ui-bar-' + s.jqmHeader); - $('.dwwr', elm).addClass('ui-body-' + s.jqmBody); - $('.dwpm .dwwl', elm).addClass('ui-body-' + s.jqmWheel); - $('.dwpm .dwl', elm).addClass('ui-body-' + s.jqmBody); - elm.trigger('create'); - // Hide on overlay click - $('.dwo', elm).click(function () { inst.cancel(); }); - } - }; - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.jqmobi.js b/lib/mobiscroll-2.6.0/mobiscroll.jqmobi.js deleted file mode 100644 index 6fb3981251..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.jqmobi.js +++ /dev/null @@ -1,230 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -if (!window['jQuery']) { - - var jQuery = jq; - - (function ($) { - var document = window.document, - classSelectorRE = /^\.([\w-]+)$/, - idSelectorRE = /^#([\w-]+)$/, - tagSelectorRE = /^[\w-]+$/, - tempParent = document.createElement('div'), - emptyArray = [], - slice = emptyArray.slice; - - function isNumeric(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - } - - function matches(element, selector) { - if (!element || element.nodeType !== 1) { - return false; - } - - var matchesSelector = element.webkitMatchesSelector || element.mozMatchesSelector || - element.oMatchesSelector || element.matchesSelector; - - if (matchesSelector) { - return matchesSelector.call(element, selector) - } - // fall back to performing a selector: - var match, parent = element.parentNode, temp = !parent - if (temp) (parent = tempParent).appendChild(element) - match = ~qsa(parent, selector).indexOf(element) - temp && tempParent.removeChild(element) - return match - } - - function qsa(element, selector){ - var found - return (element === document && idSelectorRE.test(selector)) ? - ( (found = element.getElementById(RegExp.$1)) ? [found] : emptyArray ) : - (element.nodeType !== 1 && element.nodeType !== 9) ? emptyArray : - slice.call( - classSelectorRE.test(selector) ? element.getElementsByClassName(RegExp.$1) : - tagSelectorRE.test(selector) ? element.getElementsByTagName(selector) : - element.querySelectorAll(selector) - ) - } - - function camelize(str) { - return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }); - } - - ['width', 'height'].forEach(function(dimension){ - $.fn[dimension] = function(value){ - - var body = document.body, - html = document.documentElement, - offset, Dimension = dimension.replace(/./, function(m){return m[0].toUpperCase()}) - if (value === undefined) return this[0] == window ? document.documentElement['client' + Dimension] : - this[0] == document ? Math.max(body['scroll' + Dimension], body['offset' + Dimension], html['client' + Dimension], html['scroll' + Dimension], html['offset' + Dimension]) : //document.documentElement['offset' + Dimension] : - (offset = this.offset()) && offset[dimension] - else return this.each(function(idx){ - var el = $(this) - el.css(dimension, value) - }) - } - }); - - ['width', 'height'].forEach(function(dimension) { - var offset, Dimension = dimension.replace(/./, function(m) {return m[0].toUpperCase()}); - $.fn['outer' + Dimension] = function(margin) { - var elem = this; - if (elem) { - var size = elem[0]['offset' + Dimension]; - var sides = {'width': ['left', 'right'], 'height': ['top', 'bottom']}; - sides[dimension].forEach(function(side) { - if (margin) size += parseInt(elem.css(camelize('margin-' + side)), 10); - }); - return size; - } - else { - return null; - } - }; - }); - - ["Left", "Top"].forEach(function(name, i) { - var method = "scroll" + name; - function isWindow( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - } - function getWindow( elem ) { - return isWindow( elem ) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; - } - - $.fn[method] = function( val ) { - var elem, win; - if (val === undefined) { - elem = this[0]; - if (!elem) { - return null; - } - win = getWindow(elem); - // Return the scroll offset - return win ? ("pageXOffset" in win) ? win[i ? "pageYOffset" : "pageXOffset"] : - win.document.documentElement[method] || - win.document.body[method] : - elem[method]; - } - - // Set the scroll offset - this.each(function() { - win = getWindow(this); - if (win) { - var xCoord = !i ? val : $(win).scrollLeft(); - var yCoord = i ? val : $(win).scrollTop(); - win.scrollTo(xCoord, yCoord); - } - else { - this[method] = val; - } - }); - } - }); - - $.fn.is = function (selector) { - return this.length > 0 && matches(this[0], selector); - }; - - $.fn.prop = function (name, value) { - return (value === undefined) ? (this[0] ? this[0][name] : undefined) : this.each(function (idx) { this[name] = value; }); - }; - - $.fn.focus = function (handler) { - if (handler === undefined) { - $(this).trigger('focus'); - } else { - $(this).bind('focus', handler); - } - }; - - $.fn.blur = function (handler) { - if (handler === undefined) { - $(this).trigger('blur'); - } else { - $(this).bind('blur', handler); - } - }; - - $.fn.click = function (handler) { - if (handler === undefined) { - $(this).trigger('click'); - } else { - $(this).bind('click', handler); - } - }; - - $.fn.eq = function (i) { - return $($(this).get(i)); - }; - - $.fn.index = function (element) { - return element ? this.indexOf($(element)[0]) : this.length ? this.parent().children().indexOf(this[0]) : -1; - }; - - $.fn.slice = function () { - return $(slice.apply(this, arguments)); - }; - - $.fn.before = function (elm) { - $(elm).insertBefore(this); - return this; - }; - - $.fn.appendTo = function (elm) { - $(elm).append(this); - return this; - }; - - $.fn.pluck = function (property) { - return this.map(function () { return this[property]; }); - }; - - $.fn.prev = function () { - var p = this.pluck('previousElementSibling'); - return p[0][0] ? $(p[0]) : $([]); - }; - - $.fn.next = function () { - var n = this.pluck('nextElementSibling'); - return n[0][0] ? $(n[0]) : $([]); - }; - - $.inArray = function (value, array, fromIndex) { - var i = fromIndex || 0; - while (i < array.length) { - if (array[i++] == value) { - return --i; - } - } - return -1; - }; - - $.isPlainObject = function (v) { - return $.isObject(v); - }; - - $.fn._css = $.fn.css; - $.fn.css = function (attr, val, obj) { - if ($.isObject(attr)) { - var i; - for (i in attr) { - $(this)._css(i, isNumeric(attr[i]) ? attr[i] + 'px' : attr[i], obj); - } - return this; - } else { - return $(this)._css(attr, isNumeric(val) ? val + 'px' : val, obj); - } - }; - - $._extend = $.extend; - $.extend = function () { - arguments[0] = arguments[0] || {}; - return $._extend.apply(this, arguments); - }; - - })(jQuery); - -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.jqmwidget.js b/lib/mobiscroll-2.6.0/mobiscroll.jqmwidget.js deleted file mode 100644 index 95ce9be864..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.jqmwidget.js +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright (c) 2012 Sergio Gabriel Teves -All rights reserved. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -(function($, undefined ) { - - $.widget( "mobile.jqmMobiscroll", $.mobile.widget, { - options: { - theme: 'jqm', - preset: 'date', - animate: 'pop' - }, - _create: function() { - var input = this.element, - o = $.extend(this.options, input.jqmData('options')); - input.mobiscroll(o); - } - }); - - $(document).bind("pagebeforecreate", function(c) { - // Convert date inputs to normal inputs - $('input[type="date"]:jqmData(role="mobiscroll")', c.target).prop('type', 'text'); - }); - - $(document).bind("pagecreate create", function(c) { - $(document).trigger("mobiscrollbeforecreate"); - - $(':jqmData(role="mobiscroll")', c.target).each(function() { - if (typeof ($(this).data("mobiscroll")) === "undefined") { - $(this).jqmMobiscroll(); - } - }) - }); - -})( jQuery ); - diff --git a/lib/mobiscroll-2.6.0/mobiscroll.list.js b/lib/mobiscroll-2.6.0/mobiscroll.list.js deleted file mode 100644 index 265f9c324c..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.list.js +++ /dev/null @@ -1,404 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -(function ($) { - var ms = $.mobiscroll, - defaults = { - invalid: [], - showInput: true, - inputClass: '' - }, - preset = function (inst) { - var orig = $.extend({}, inst.settings), - s = $.extend(inst.settings, defaults, orig), - elm = $(this), - input, - prevent, - id = this.id + '_dummy', - lvl = 0, - ilvl = 0, - timer = {}, - wa = s.wheelArray || createWheelArray(elm), - labels = generateLabels(lvl), - currWheelVector = [], - fwv = firstWheelVector(wa), - w = generateWheelsFromVector(fwv, lvl); - - /** - * Disables the invalid items on the wheels - * @param {Object} dw - the jQuery mobiscroll object - * @param {Number} nrWheels - the number of the current wheels - * @param {Array} whArray - The wheel array objects containing the wheel tree - * @param {Array} whVector - the wheel vector containing the current keys - */ - function setDisabled(dw, nrWheels, whArray, whVector) { - var i = 0; - while (i < nrWheels) { - var currWh = $('.dwwl' + i, dw), - inv = getInvalidKeys(whVector, i, whArray); - $.each(inv, function (i, v) { - $('.dw-li[data-val="' + v + '"]', currWh).removeClass('dw-v'); - }); - i++; - } - } - - /** - * Returns the invalid keys of one wheel as an array - * @param {Array} whVector - the wheel vector used to search for the wheel in the wheel array - * @param {Number} index - index of the wheel in the wheel vector, that we are interested in - * @param {Array} whArray - the wheel array we are searching in - * @return {Array} - list of invalid keys - */ - function getInvalidKeys(whVector, index, whArray) { - var i = 0, - n, - whObjA = whArray, - invalids = []; - - while (i < index) { - var ii = whVector[i]; - //whObjA = whObjA[ii].children; - for (n in whObjA) { - if (whObjA[n].key == ii) { - whObjA = whObjA[n].children; - break; - } - } - i++; - } - i = 0; - while (i < whObjA.length) { - if (whObjA[i].invalid) { - invalids.push(whObjA[i].key); - } - i++; - } - return invalids; - } - - /** - * Creates a Boolean vector with true values (except one) that can be used as the readonly vector - * n - the length of the vector - * i - the index of the value that's going to be false - */ - function createROVector(n, i) { - var a = []; - while (n) { - a[--n] = true; - } - a[i] = false; - return a; - } - - /** - * Creates a labels vector, from values if they are defined, otherwise from numbers - * l - the length of the vector - */ - function generateLabels(l) { - var a = [], - i; - for (i = 0; i < l; i++) { - a[i] = s.labels && s.labels[i] ? s.labels[i] : i; - } - return a; - } - - /** - * Creates the wheel array from the vector provided - * wv - wheel vector containing the values that should be selected on the wheels - * l - the length of the wheel array - */ - function generateWheelsFromVector(wv, l, index) { - var i = 0, j, obj, chInd, - w = [], - wtObjA = wa; - - if (l) { // if length is defined we need to generate that many wheels (even if they are empty) - for (j = 0; j < l; j++) { - w[j] = [{}]; - //w[j] = {}; - //w[j][labels[j]] = {}; // each wheel will have a label generated by the generateLabels method - } - } - while (i < wv.length) { // we generate the wheels until the length of the wheel vector - //w[i] = {}; - //w[i][labels[i]] = getWheelFromObjA(wtObjA); - w[i] = [getWheelFromObjA(wtObjA, labels[i])]; - - j = 0; - chInd = undefined; - - while (j < wtObjA.length && chInd === undefined) { - if (wtObjA[j].key == wv[i] && ((index !== undefined && i <= index) || index === undefined)) { - chInd = j; - } - j++; - } - - if (chInd !== undefined && wtObjA[chInd].children) { - i++; - wtObjA = wtObjA[chInd].children; - } else if ((obj = getFirstValidItemObjOrInd(wtObjA)) && obj.children) { - i++; - wtObjA = obj.children; - } else { - return w; - } - } - return w; - } - - /** - * Returns the first valid Wheel Node Object or its index from a Wheel Node Object Array - * getInd - if it is true then the return value is going to be the index, otherwise the object itself - */ - function getFirstValidItemObjOrInd(wtObjA, getInd) { - if (!wtObjA) { - return false; - } - - var i = 0, - obj; - - while (i < wtObjA.length) { - if (!(obj = wtObjA[i++]).invalid) { - return getInd ? i - 1 : obj; - } - } - return false; - } - - function getWheelFromObjA(objA, lbl) { - var wheel = { - keys: [], - values: [], - label: lbl - }, - j = 0; - - while (j < objA.length) { - wheel.values.push(objA[j].value); - wheel.keys.push(objA[j].key); - j++; - //wheel[objA[j].key] = objA[j++].value; - } - return wheel; - } - - /** - * Hides the last i number of wheels - * i - the last number of wheels that has to be hidden - */ - function hideWheels(dw, i) { - $('.dwc', dw).css('display', '').slice(i).hide(); - } - - /** - * Generates the first wheel vector from the wheeltree - * wt - the wheel tree object - * uses the lvl global variable to determine the length of the vector - */ - function firstWheelVector(wa) { - var t = [], - ndObjA = wa, - obj, - ok = true, - i = 0; - - while (ok) { - obj = getFirstValidItemObjOrInd(ndObjA); - t[i++] = obj.key; - if (ok = obj.children) { - ndObjA = obj.children; - } - } - return t; - } - - /** - * Calculates the level of a wheel vector and the new wheel vector, depending on current wheel vector and the index of the changed wheel - * wv - current wheel vector - * index - index of the changed wheel - */ - function calcLevelOfVector2(wv, index) { - var t = [], - ndObjA = wa, - lvl = 0, - next = false, - i, - childName, - chInd; - - if (wv[lvl] !== undefined && lvl <= index) { - i = 0; - - childName = wv[lvl]; - chInd = undefined; - - while (i < ndObjA.length && chInd === undefined) { - if (ndObjA[i].key == wv[lvl] && !ndObjA[i].invalid) { - chInd = i; - } - i++; - } - } else { - chInd = getFirstValidItemObjOrInd(ndObjA, true); - childName = ndObjA[chInd].key; - } - - next = chInd !== undefined ? ndObjA[chInd].children : false; - - t[lvl] = childName; - - while (next) { - ndObjA = ndObjA[chInd].children; - lvl++; - next = false; - chInd = undefined; - - if (wv[lvl] !== undefined && lvl <= index) { - i = 0; - - childName = wv[lvl]; - chInd = undefined; - - while (i < ndObjA.length && chInd === undefined) { - if (ndObjA[i].key == wv[lvl] && !ndObjA[i].invalid) { - chInd = i; - } - i++; - } - } else { - chInd = getFirstValidItemObjOrInd(ndObjA, true); - chInd = chInd === false ? undefined : chInd; - childName = ndObjA[chInd].key; - } - next = chInd !== undefined && getFirstValidItemObjOrInd(ndObjA[chInd].children) ? ndObjA[chInd].children : false; - t[lvl] = childName; - } - return { - lvl: lvl + 1, - nVector: t - }; // return the calculated level and the wheel vector as an object - } - - function createWheelArray(ul) { - var wheelArray = []; - - lvl = lvl > ilvl++ ? lvl : ilvl; - - ul.children('li').each(function (index) { - var that = $(this), - c = that.clone(); - - c.children('ul,ol').remove(); - - var v = c.html().replace(/^\s\s*/, '').replace(/\s\s*$/, ''), - inv = that.data('invalid') ? true : false, - wheelObj = { - key: that.data('val') || index, - value: v, - invalid: inv, - children: null - }, - nest = that.children('ul,ol'); - - if (nest.length) { - wheelObj.children = createWheelArray(nest); - } - - wheelArray.push(wheelObj); - }); - - ilvl--; - return wheelArray; - } - - $('#' + id).remove(); // Remove input if exists - - if (s.showInput) { - input = $('').insertBefore(elm); - inst.settings.anchor = input; // give the core the input element for the bubble positioning - - if (s.showOnFocus) { - input.focus(function () { - inst.show(); - }); - } - } - - if (!s.wheelArray) { - elm.hide().closest('.ui-field-contain').trigger('create'); - } - - return { - width: 50, - wheels: w, - headerText: false, - onBeforeShow: function (dw) { - var t = inst.temp; - currWheelVector = t.slice(0); - inst.settings.wheels = generateWheelsFromVector(t, lvl, lvl); - prevent = true; - }, - onSelect: function (v, inst) { - if (input) { - input.val(v); - } - }, - onChange: function (v, inst) { - if (input && s.display == 'inline') { - input.val(v); - } - }, - onClose: function () { - if (input) { - input.blur(); - } - }, - onShow: function (dw) { - $('.dwwl', dw).bind('mousedown touchstart', function () { - clearTimeout(timer[$('.dwwl', dw).index(this)]); - }); - }, - validate: function (dw, index, time) { - var t = inst.temp; - if ((index !== undefined && currWheelVector[index] != t[index]) || (index === undefined && !prevent)) { - inst.settings.wheels = generateWheelsFromVector(t, null, index); - var args = [], - i = (index || 0) + 1, - o = calcLevelOfVector2(t, index); - if (index !== undefined) { - inst.temp = o.nVector.slice(0); - } - while (i < o.lvl) { - args.push(i++); - } - hideWheels(dw, o.lvl); - currWheelVector = inst.temp.slice(0); - if (args.length) { - prevent = true; - inst.settings.readonly = createROVector(lvl, index); - clearTimeout(timer[index]); - timer[index] = setTimeout(function () { - inst.changeWheel(args); - inst.settings.readonly = false; - }, time * 1000); - return false; - } - setDisabled(dw, o.lvl, wa, inst.temp); - } else { - var o = calcLevelOfVector2(t, t.length); - setDisabled(dw, o.lvl, wa, t); - hideWheels(dw, o.lvl); - } - prevent = false; - } - }; - }; - - $.each(['list', 'image', 'treelist'], function (i, v) { - ms.presets[v] = preset; - ms.presetShort(v); - }); - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.select.js b/lib/mobiscroll-2.6.0/mobiscroll.select.js deleted file mode 100644 index 14ba288366..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.select.js +++ /dev/null @@ -1,351 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -(function ($) { - - var defaults = { - inputClass: '', - invalid: [], - rtl: false, - group: false, - groupLabel: 'Groups' - }; - - $.mobiscroll.presetShort('select'); - - $.mobiscroll.presets.select = function (inst) { - var orig = $.extend({}, inst.settings), - s = $.extend(inst.settings, defaults, orig), - elm = $(this), - multiple = elm.prop('multiple'), - id = this.id + '_dummy', - option = multiple ? (elm.val() ? elm.val()[0] : $('option', elm).attr('value')) : elm.val(), - group = elm.find('option[value="' + option + '"]').parent(), - prev = group.index() + '', - gr = prev, - prevent, - l1 = $('label[for="' + this.id + '"]').attr('for', id), - l2 = $('label[for="' + id + '"]'), - label = s.label !== undefined ? s.label : (l2.length ? l2.text() : elm.attr('name')), - invalid = [], - origValues = [], - main = {}, - grIdx, - optIdx, - timer, - input, - roPre = s.readonly, - w; - - function genWheels() { - var cont, - wg = 0, - values = [], - keys = [], - w = [[]]; - - if (s.group) { - if (s.rtl) { - wg = 1; - } - - $('optgroup', elm).each(function (i) { - values.push($(this).attr('label')); - keys.push(i); - }); - - w[wg] = [{ - values: values, - keys: keys, - label: label - }]; - - cont = group; - wg += (s.rtl ? -1 : 1); - - } else { - cont = elm; - } - - values = []; - keys = []; - - $('option', cont).each(function () { - var v = $(this).attr('value'); - values.push($(this).text()); - keys.push(v); - if ($(this).prop('disabled')) { - invalid.push(v); - } - }); - - w[wg] = [{ - values: values, - keys: keys, - label: label - }]; - - return w; - } - - function setVal(v, fill) { - var value = []; - - if (multiple) { - var sel = [], - i = 0; - - for (i in inst._selectedValues) { - sel.push(main[i]); - value.push(i); - } - input.val(sel.join(', ')); - } else { - input.val(v); - value = fill ? inst.values[optIdx] : null; - } - - if (fill) { - prevent = true; - elm.val(value).trigger('change'); - } - } - - // if groups is true and there are no groups fall back to no grouping - if (s.group && !$('optgroup', elm).length) { - s.group = false; - } - - if (!s.invalid.length) { - s.invalid = invalid; - } - - if (s.group) { - if (s.rtl) { - grIdx = 1; - optIdx = 0; - } else { - grIdx = 0; - optIdx = 1; - } - } else { - grIdx = -1; - optIdx = 0; - } - - $('#' + id).remove(); - - input = $('').insertBefore(elm), - - $('option', elm).each(function () { - main[$(this).attr('value')] = $(this).text(); - }); - - if (s.showOnFocus) { - input.focus(function () { - inst.show(); - }); - } - - var v = elm.val() || [], - i = 0; - - for (i; i < v.length; i++) { - inst._selectedValues[v[i]] = v[i]; - } - - setVal(main[option]); - - elm.unbind('.dwsel').bind('change.dwsel', function () { - if (!prevent) { - inst.setValue(multiple ? elm.val() || [] : [elm.val()], true); - } - prevent = false; - }).hide().closest('.ui-field-contain').trigger('create'); - - // Extended methods - // --- - - if (!inst._setValue) { - inst._setValue = inst.setValue; - } - - inst.setValue = function (d, fill, time, noscroll, temp) { - var value, - v = $.isArray(d) ? d[0] : d; - - option = v !== undefined ? v : $('option', elm).attr('value'); - - if (multiple) { - inst._selectedValues = {}; - var i = 0; - for (i; i < d.length; i++) { - inst._selectedValues[d[i]] = d[i]; - } - } - - if (s.group) { - group = elm.find('option[value="' + option + '"]').parent(); - gr = group.index(); - value = s.rtl ? [option, group.index()] : [group.index(), option]; - if (gr !== prev) { // Need to regenerate wheels, if group changed - s.wheels = genWheels(); - inst.changeWheel([optIdx]); - prev = gr + ''; - } - } else { - value = [option]; - } - - inst._setValue(value, fill, time, noscroll, temp); - - // Set input/select values - if (fill) { - var changed = multiple ? true : option !== elm.val(); - setVal(main[option], changed); - } - }; - - inst.getValue = function (temp) { - var val = temp ? inst.temp : inst.values; - return val[optIdx]; - }; - - // --- - - return { - width: 50, - wheels: w, - headerText: false, - multiple: multiple, - anchor: input, - formatResult: function (d) { - return main[d[optIdx]]; - }, - parseValue: function () { - var v = elm.val() || [], - i = 0; - - if (multiple) { - inst._selectedValues = {}; - for (i; i < v.length; i++) { - inst._selectedValues[v[i]] = v[i]; - } - } - - option = multiple ? (elm.val() ? elm.val()[0] : $('option', elm).attr('value')) : elm.val(); - - group = elm.find('option[value="' + option + '"]').parent(); - gr = group.index(); - prev = gr + ''; - return s.group && s.rtl ? [option, gr] : s.group ? [gr, option] : [option]; - }, - validate: function (dw, i, time) { - if (i === undefined && multiple) { - var v = inst._selectedValues, - j = 0; - - $('.dwwl' + optIdx + ' .dw-li', dw).removeClass('dw-msel'); - - for (j in v) { - $('.dwwl' + optIdx + ' .dw-li[data-val="' + v[j] + '"]', dw).addClass('dw-msel'); - } - } - - if (i === grIdx) { - gr = inst.temp[grIdx]; - if (gr !== prev) { - group = elm.find('optgroup').eq(gr); - gr = group.index(); - option = group.find('option').eq(0).val(); - option = option || elm.val(); - s.wheels = genWheels(); - if (s.group) { - inst.temp = s.rtl ? [option, gr] : [gr, option]; - s.readonly = [s.rtl, !s.rtl]; - clearTimeout(timer); - timer = setTimeout(function () { - inst.changeWheel([optIdx]); - s.readonly = roPre; - prev = gr + ''; - }, time * 1000); - return false; - } - } else { - s.readonly = roPre; - } - } else { - option = inst.temp[optIdx]; - } - - var t = $('.dw-ul', dw).eq(optIdx); - $.each(s.invalid, function (i, v) { - $('.dw-li[data-val="' + v + '"]', t).removeClass('dw-v'); - }); - }, - onBeforeShow: function (dw) { - s.wheels = genWheels(); - if (s.group) { - inst.temp = s.rtl ? [option, group.index()] : [group.index(), option]; - } - }, - onMarkupReady: function (dw) { - $('.dwwl' + grIdx, dw).bind('mousedown touchstart', function () { - clearTimeout(timer); - }); - if (multiple) { - dw.addClass('dwms'); - $('.dwwl', dw).eq(optIdx).addClass('dwwms'); - origValues = {}; - var i; - for (i in inst._selectedValues) { - origValues[i] = inst._selectedValues[i]; - } - } - }, - onValueTap: function (li) { - if (multiple && li.hasClass('dw-v') && li.closest('.dw').find('.dw-ul').index(li.closest('.dw-ul')) == optIdx) { - var val = li.attr('data-val'); - if (li.hasClass('dw-msel')) { - delete inst._selectedValues[val]; - } else { - inst._selectedValues[val] = val; - } - li.toggleClass('dw-msel'); - - if (s.display == 'inline') { - setVal(val, true); - } - return false; - } - }, - onSelect: function (v) { - setVal(v, true); - if (s.group) { - inst.values = null; - } - }, - onCancel: function () { - if (s.group) { - inst.values = null; - } - if (multiple) { - inst._selectedValues = {}; - var i; - for (i in origValues) { - inst._selectedValues[i] = origValues[i]; - } - } - }, - onChange: function (v) { - if (s.display == 'inline' && !multiple) { - input.val(v); - prevent = true; - elm.val(inst.temp[optIdx]).trigger('change'); - } - }, - onClose: function () { - input.blur(); - } - }; - }; - -})(jQuery); diff --git a/lib/mobiscroll-2.6.0/mobiscroll.sense-ui.css b/lib/mobiscroll-2.6.0/mobiscroll.sense-ui.css deleted file mode 100644 index e856fce6da..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.sense-ui.css +++ /dev/null @@ -1,61 +0,0 @@ -/* Sense UI Skin */ -.sense-ui .dw { - padding: 0; - background: #333; - border: 2px solid #fff; - color: #fff; -} -.sense-ui .dwwr { - padding: 0; -} -.sense-ui .dwv { - padding: 5px 10px; - border-bottom: 1px solid #666; - text-align: left; -} -.sense-ui .dwwc { - background: #333; -} -.sense-ui .dw .dwpm .dwwl, -.sense-ui .dw .dwpm .dww { - background: #fff; - border: 0; - padding: 0; -} -.sense-ui .dwbc { - padding: 5px 1px; - background: #000; - background: linear-gradient(#666 50%,#000 50%); - background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #000),color-stop(0.5, #666)); - background: -moz-linear-gradient(#666 50%,#000 50%); - background: -o-linear-gradient(#666 50%,#000 50%); -} -.sense-ui .dw .dwb { - margin: 0 5px; - border: 1px solid #333; - background: #222; - background: linear-gradient(#444,#000); - background: -webkit-gradient(linear,left bottom,left top,from(#000),to(#444)); - background: -moz-linear-gradient(#444,#000); - background: -o-linear-gradient(#444,#000); - box-shadow: inset 0 0 5px #000; -} -.sense-ui .dw .dwb-a { - background: #3c7500; - background: linear-gradient(#94c840,#3c7500); - background: -webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840)); - background: -moz-linear-gradient(#94c840,#3c7500); - background: -o-linear-gradient(#94c840,#3c7500); -} -/* Docked */ -.sense-ui.dw-top .dw { - border: 0; - border-radius: 0; - -webkit-border-radius: 0; -} -.sense-ui.dw-bottom .dw { - border: 0; - border-top: 1px solid #666; - border-radius: 0; - -webkit-border-radius: 0; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.wp.css b/lib/mobiscroll-2.6.0/mobiscroll.wp.css deleted file mode 100644 index fd237dcf60..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.wp.css +++ /dev/null @@ -1,404 +0,0 @@ -.wp .dw { - background: #1f1f1f; - border-radius: 0; - -webkit-border-radius: 0; -} -.wp .dwwr { - padding: 10px; -} -.wp .dwv { - display: none; -} -.wp .dwc { - padding: 30px 0 0 0; - vertical-align: middle; -} -.wp .dwhl { - padding: 0; -} -.wp .dwwc { - padding: 3px; - background: none; -} -.wp .dwwl { - margin: 0; - padding: 0 2px; - background: none; -} -.wp .dwl { - color: #fff; -} -.wp .dw .dwwl .dww { - background: none; - border: 0; - color: #fff; -} -.wp .dw-li { - position: relative; - padding: 0; - font-size: 26px; - letter-spacing: -1px; - text-align: left; - text-shadow: none; - opacity: 0; - box-sizing: border-box; - filter: Alpha(Opacity=0); - /*transition: opacity .3s linear;*/ - -webkit-box-sizing: border-box; - /*-webkit-transition: opacity .3s linear;*/ - -moz-box-sizing: border-box; - /*-moz-transition: opacity .3s linear;*/ -} -.wp .dw-i { - position: relative; - top: 4%; - height: 92%; - padding: 0 5px; - border: 1px solid #4c4c4c; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - filter: inherit; -} -.wp .wpa .dw-li, .wp .dwa .dw-li { - opacity: .3; - filter: Alpha(Opacity=30); -} -.wp .wpa .dw-v, .wp .dwa .dw-v, .wp .wpam .dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dw-day, .wp .dw-mon { - display: block; - color: #a9a9a9; - line-height: 18px; - font-size: 11px; - letter-spacing: normal; - position: absolute; - bottom: 0; - filter: inherit; -} -.wp .dw-sel { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dw .dw-sel .dw-i { - color: #fff; - background: #4c4c4c; - /*transition: all .1s linear; - -webkit-transition: all .1s linear; - -moz-transition: all .1s linear;*/ -} -.wp .dw-sel .dw-day, .wp .dw-sel .dw-mon { - color: #fff; -} -.wp .dw-hl { - background: none; -} -.wp .dw-hl .dw-i { - background: #4c4c4c; -} -.wp .dwa .dww .dw-sel .dw-i { - border: 1px solid #4c4c4c; - background-color: transparent; -} -.wp .dwa .dw-day, .wp .dwa .dw-month { - color: #a9a9a9; -} -.wp .dwwo { - display: none; -} -.wp .dwwol { - display: none; -} -.wp .dwbc { - padding: 0; -} -.wp .dwbw { - float: none; - width: auto; -} -.wp .dw .dwb { - position: relative; - top: 0; - min-width: 32px; - display: inline-block; - height: 20px; - padding: 29px 5px 0 5px; - background: none; - box-shadow: none; - line-height: 20px; - font-size: 11px; - font-weight: normal; - text-transform: lowercase; - text-shadow: none; - transition: top .1s linear; - -webkit-box-shadow: none; - -webkit-transition: top .1s linear; - -moz-transition: top .1s linear; -} -.wp .dwb:after { - content: ''; - position: absolute; - top: 3px; - left: 50%; - width: 26px; - height: 26px; - margin: 0 -13px; - background: url(wp_icons.png) center center no-repeat; -} -.wp .dwb-s .dwb:after { - background-position: 0 0; -} -.wp .dwb-c .dwb:after { - background-position: -26px 0; -} -.wp .dwb-n .dwb:after { - background-position: -52px 0; -} -.wp .dwb-s .dwb-a:after { - background-position: 0 -26px; -} -.wp .dwb-c .dwb-a:after { - background-position: -26px -26px; -} -.wp .dwb-n .dwb-a:after { - background-position: -52px -26px; -} -.wp .dwb.dwb-a { - top: -3px; -} -/* +/- buttons */ -.wp .dw .dwwl .dwb-a { - background: #1f1f1f; -} -.wp .dw .dwpm .dwwl { - border: 0; -} -.wp .dw .dwwb { - background: #1f1f1f; - border-radius: 0; - box-shadow: none; - box-sizing: border-box; - color: #a9a9a9; - -webkit-box-shadow: none; - -webkit-border-radius: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; -} -.wp .dwwb span { - position: absolute; - top: 50%; - left: 50%; - width: 26px; - height: 0; - padding-top: 26px; - overflow: hidden; - margin: -13px; - display: block; - background: url(wp_icons.png) center center no-repeat; -} -.wp .dwwbp span { - background-position: -78px 0; -} -.wp .dwwbp.dwb-a span { - background-position: -78px -26px; -} -.wp .dwwbm span { - background-position: -104px 0; -} -.wp .dwwbm.dwb-a span { - background-position: -104px -26px; -} -/* Bubble positioning */ -.wp .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #1f1f1f transparent; -} -.wp .dw-bubble-top .dw-arr { - border-color: #1f1f1f transparent transparent transparent; -} -/* Multiple select */ -.wp .dwwms .dw-li { - opacity: .3; - filter: Alpha(Opacity=30); - padding: 0 0 0 30px; -} -.wp .dwwms .dw-v { - opacity: 1; - filter: Alpha(Opacity=100); -} -.wp .dwc .dwwms .dw-i, -.wp .dwc .dwwms .dw-sel .dw-i, -.wp .dwc .dwwms .dw-hl .dw-i, -.wp .dwc .dwwms.dwa .dw-sel .dw-i { - border: 0; - background: none; -} -.wp .dwwms .dw-li:after { - content: ''; - position: absolute; - top: 50%; - left: 5px; - width: 20px; - height: 20px; - margin-top: -10px; - font-size: 18px; - line-height: 20px; - background: #4c4c4c; - color: #fff; -} -.wp .dwwms .dw-msel:after { - content: '✔'; -} -/* Light version */ -.wp.light .dw { - background: #dedede; -} -.wp.light .dwv, -.wp.light .dwl, -.wp.light .dwb { - color: #000; -} -.wp.light .dw-li { - color: #6b6b6b; -} -.wp.light .dw-i { - border-color: #b5b5b5; -} -.wp.light .dw-sel .dw-i { - background: #b5b5b5; -} -.wp.light .dw-hl .dw-i { - color: #fff; - background: #b5b5b5; -} -.wp.light .dw-day, .wp.light .dw-mon { - color: #6b6b6b; -} -.wp.light .dw-sel .dw-day, .wp.light .dw-sel .dw-mon { - color: #fff; -} -.wp.light .dw .dwa .dw-sel .dw-i { - color: #6b6b6b; - border: 1px solid #b5b5b5; - background-color: transparent; -} -.wp.light .dw .dwc .dwa .dw-day, .wp.light .dw .dwc .dwa .dw-mon { - color: #6b6b6b; -} -.wp.light .dwb:after { - background-image: url(wp_icons_light.png); -} -.wp.light .dw .dwwb { - background: #dedede; -} -.wp.light .dwwb span { - background-image: url(wp_icons_light.png); -} -/* Bubble positioning */ -.wp.light .dw-bubble-bottom .dw-arr { - border-color: transparent transparent #dedede transparent; -} -.wp.light .dw-bubble-top .dw-arr { - border-color: #dedede transparent transparent transparent; -} -/* Multiple select */ -.wp.light .dwc .dwwms .dw-i, -.wp.light .dwwms.dwa .dw-sel .dw-i { - border: 0; - background: none; - color: #000; -} -.wp.light .dwwms .dw-li:after { - background: #b5b5b5; -} -.wp.light .wp-none .dwwms .dw-li:after { - color: #000; -} -/* Accents */ -.wp.light .wp-none .dw-sel .dw-i, .wp.light .wp-none .dw-hl .dw-i { - color: #000; -} -.wp.light .wp-none .dw-day, .wp.light .wp-none .dw-mon { - color: #6b6b6b; -} -.wp .wp-lime .dw-sel .dw-i, .wp .wp-lime .dw-hl .dw-i, .wp .wp-lime .dwwms .dw-li:after { - background: #a4c400; - border-color: #a4c400; -} -.wp .wp-green .dw-sel .dw-i, .wp .wp-green .dw-hl .dw-i, .wp .wp-green .dwwms .dw-li:after { - background: #60a917; - border-color: #60a917; -} -.wp .wp-emerald .dw-sel .dw-i, .wp .wp-emerald .dw-hl .dw-i, .wp .wp-emerald .dwwms .dw-li:after { - background: #008a00; - border-color: #008a00; -} -.wp .wp-teal .dw-sel .dw-i, .wp .wp-teal .dw-hl .dw-i, .wp .wp-teal .dwwms .dw-li:after { - background: #00aba9; - border-color: #00aba9; -} -.wp .wp-cyan .dw-sel .dw-i, .wp .wp-cyan .dw-hl .dw-i, .wp .wp-cyan .dwwms .dw-li:after { - background: #1ba1e2; - border-color: #1ba1e2; -} -.wp .wp-cobalt .dw-sel .dw-i, .wp .wp-cobalt .dw-hl .dw-i, .wp .wp-cobalt .dwwms .dw-li:after { - background: #0050ef; - border-color: #0050ef; -} -.wp .wp-indigo .dw-sel .dw-i, .wp .wp-indigo .dw-hl .dw-i, .wp .wp-indigo .dwwms .dw-li:after { - background: #6a00ff; - border-color: #6a00ff; -} -.wp .wp-violet .dw-sel .dw-i, .wp .wp-violet .dw-hl .dw-i, .wp .wp-violet .dwwms .dw-li:after { - background: #aa00ff; - border-color: #aa00ff; -} -.wp .wp-pink .dw-sel .dw-i, .wp .wp-pink .dw-hl .dw-i, .wp .wp-pink .dwwms .dw-li:after { - background: #f472d0; - border-color: #f472d0; -} -.wp .wp-magenta .dw-sel .dw-i, .wp .wp-magenta .dw-hl .dw-i, .wp .wp-magenta .dwwms .dw-li:after { - background: #d80073; - border-color: #d80073; -} -.wp .wp-crimson .dw-sel .dw-i, .wp .wp-crimson .dw-hl .dw-i, .wp .wp-crimson .dwwms .dw-li:after { - background: #a20025; - border-color: #a20025; -} -.wp .wp-red .dw-sel .dw-i, .wp .wp-red .dw-hl .dw-i, .wp .wp-red .dwwms .dw-li:after { - background: #e51400; - border-color: #e51400; -} -.wp .wp-orange .dw-sel .dw-i, .wp .wp-orange .dw-hl .dw-i, .wp .wp-orange .dwwms .dw-li:after { - background: #fa6800; - border-color: #fa6800; -} -.wp .wp-amber .dw-sel .dw-i, .wp .wp-amber .dw-hl .dw-i, .wp .wp-amber .dwwms .dw-li:after { - background: #f0a30a; - border-color: #f0a30a; -} -.wp .wp-yellow .dw-sel .dw-i, .wp .wp-yellow .dw-hl .dw-i, .wp .wp-yellow .dwwms .dw-li:after { - background: #d8c100; - border-color: #d8c100; -} -.wp .wp-brown .dw-sel .dw-i, .wp .wp-brown .dw-hl .dw-i, .wp .wp-brown .dwwms .dw-li:after { - background: #825a2c; - border-color: #825a2c; -} -.wp .wp-olive .dw-sel .dw-i, .wp .wp-olive .dw-hl .dw-i, .wp .wp-olive .dwwms .dw-li:after { - background: #6d8764; - border-color: #6d8764; -} -.wp .wp-steel .dw-sel .dw-i, .wp .wp-steel .dw-hl .dw-i, .wp .wp-steel .dwwms .dw-li:after { - background: #647687; - border-color: #647687; -} -.wp .wp-mauve .dw-sel .dw-i, .wp .wp-mauve .dw-hl .dw-i, .wp .wp-mauve .dwwms .dw-li:after { - background: #76608a; - border-color: #76608a; -} -.wp .wp-sienna .dw-sel .dw-i, .wp .wp-sienna .dw-hl .dw-i, .wp .wp-sienna .dwwms .dw-li:after { - background: #7a3b3f; - border-color: #7a3b3f; -} diff --git a/lib/mobiscroll-2.6.0/mobiscroll.wp.js b/lib/mobiscroll-2.6.0/mobiscroll.wp.js deleted file mode 100644 index a6bd5d9655..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.wp.js +++ /dev/null @@ -1,48 +0,0 @@ -(function ($) { - - var anim; - - $.mobiscroll.themes.wp = { - defaults: { - width: 70, - height: 76, - accent: 'none', - dateOrder: 'mmMMddDDyy', - showLabel: false, - onAnimStart: function (dw, i, time) { - $('.dwwl' + i, dw).addClass('wpam'); - clearTimeout(anim[i]); - anim[i] = setTimeout(function () { - $('.dwwl' + i, dw).removeClass('wpam'); - }, time * 1000 + 100); - } - }, - init: function (elm, inst) { - var click, - active; - - anim = {}; - - $('.dw', elm).addClass('wp-' + inst.settings.accent); - - //$('.dwwl', elm).bind('touchstart mousedown DOMMouseScroll mousewheel', function () { - $('.dwwl', elm).delegate('.dw-sel', 'touchstart mousedown DOMMouseScroll mousewheel', function () { - click = true; - active = $(this).closest('.dwwl').hasClass('wpa'); - $('.dwwl', elm).removeClass('wpa'); - $(this).closest('.dwwl').addClass('wpa'); - }).bind('touchmove mousemove', function () { - click = false; - }).bind('touchend mouseup', function () { - if (click && active) { - $(this).closest('.dwwl').removeClass('wpa'); - } - }); - } - }; - - $.mobiscroll.themes['wp light'] = $.mobiscroll.themes.wp; - -})(jQuery); - - diff --git a/lib/mobiscroll-2.6.0/mobiscroll.zepto.js b/lib/mobiscroll-2.6.0/mobiscroll.zepto.js deleted file mode 100644 index b693f6228b..0000000000 --- a/lib/mobiscroll-2.6.0/mobiscroll.zepto.js +++ /dev/null @@ -1,91 +0,0 @@ -/*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */ -if (!window['jQuery']) { - - var jQuery = Zepto; - - (function ($) { - - ['width', 'height'].forEach(function(dimension){ - $.fn[dimension] = function(value){ - var body = document.body, - html = document.documentElement, - offset, Dimension = dimension.replace(/./, function(m){return m[0].toUpperCase()}) - if (value === undefined) return this[0] == window ? html['client' + Dimension] : - this[0] == document ? Math.max(body['scroll' + Dimension], body['offset' + Dimension], html['client' + Dimension], html['scroll' + Dimension], html['offset' + Dimension]) : - (offset = this.offset()) && offset[dimension] - else return this.each(function(idx){ - var el = $(this) - el.css(dimension, value) - }) - } - }); - - ['width', 'height'].forEach(function (dimension) { - var offset, Dimension = dimension.replace(/./, function (m) { return m[0].toUpperCase(); }); - $.fn['outer' + Dimension] = function (margin) { - var elem = this; - if (elem) { - var size = elem[0]['offset' + Dimension], - sides = {'width': ['left', 'right'], 'height': ['top', 'bottom']}; - sides[dimension].forEach(function (side) { - if (margin) { - size += parseInt(elem.css('margin-' + side), 10); - } - }); - return size; - } else { - return null; - } - }; - }); - - ["Left", "Top"].forEach(function (name, i) { - var method = "scroll" + name; - - function isWindow(obj) { - return obj && typeof obj === "object" && "setInterval" in obj; - } - - function getWindow(elem) { - return isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; - } - - $.fn[method] = function (val) { - var elem, win; - if (val === undefined) { - elem = this[0]; - if (!elem) { - return null; - } - win = getWindow(elem); - // Return the scroll offset - return win ? ("pageXOffset" in win) ? win[i ? "pageYOffset" : "pageXOffset"] : - win.document.documentElement[method] || - win.document.body[method] : - elem[method]; - } - - // Set the scroll offset - this.each(function () { - win = getWindow(this); - if (win) { - var xCoord = !i ? val : $(win).scrollLeft(), - yCoord = i ? val : $(win).scrollTop(); - win.scrollTo(xCoord, yCoord); - } else { - this[method] = val; - } - }); - }; - }); - - // Fix zepto.js extend to work with undefined parameter - $._extend = $.extend; - $.extend = function () { - arguments[0] = arguments[0] || {}; - return $._extend.apply(this, arguments); - }; - - })(jQuery); - -} \ No newline at end of file diff --git a/lib/mobiscroll-2.6.0/wp_icons.png b/lib/mobiscroll-2.6.0/wp_icons.png deleted file mode 100644 index 22b1d7c43b..0000000000 Binary files a/lib/mobiscroll-2.6.0/wp_icons.png and /dev/null differ diff --git a/lib/mobiscroll-2.6.0/wp_icons_light.png b/lib/mobiscroll-2.6.0/wp_icons_light.png deleted file mode 100644 index 442fd74677..0000000000 Binary files a/lib/mobiscroll-2.6.0/wp_icons_light.png and /dev/null differ diff --git a/master.sh b/master.sh deleted file mode 100644 index 42601aa743..0000000000 --- a/master.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - echo "installing npm dependencies" - if ! npm install ; then - echo "ERROR: \"npm install\" failed" &>2 - exit 1 - fi - echo "setting up Python environment" - if ! ./wv-python ; then - echo "ERROR: \"./wv-python\" failed" &>2 - exit 1 - fi - echo "Cleaning dist" - if ! grunt distclean ; then - echo "ERROR: \"grunt distclean\" failed" &>2 - exit 1 - fi - echo "relocation node_module dependencies" - if ! grunt update ; then - echo "ERROR: \"grunt update\" failed" &>2 - exit 1 - fi - echo "Generating build" - if ! grunt build ; then - echo "ERROR: \"grunt build\" failed" &>2 - exit 1 - fi - echo "starting lint report. Results in lint-results.xml" - grunt jshint:report | ./bin/filter-test-report > lint-results.xml - if ! grunt lint ; then - echo "ERROR: \"grunt test\" failed" &>2 - exit 1 - fi - echo "executing unit tests. Results in test-results.xml" - grunt buster:report | ./bin/filter-test-report > test-results.xml - if ! grunt test ; then - echo "ERROR: \"grunt test\" failed" &>2 - exit 1 - fi diff --git a/package-lock.json b/package-lock.json index 3eed67ff32..5b3d256586 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "worldview", - "version": "1.10.0", + "version": "1.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -18,33 +18,81 @@ } }, "JSONStream": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "dev": true, "requires": { - "jsonparse": "0.0.5", + "jsonparse": "1.3.1", "through": "2.3.8" } }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true, + "optional": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, "requires": { "mime-types": "2.1.17", "negotiator": "0.6.1" } }, + "accessory": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/accessory/-/accessory-1.1.0.tgz", + "integrity": "sha1-eDPpg5oy3tdtJgIfNqQXB6Ug9ZM=", + "dev": true, + "requires": { + "ap": "0.2.0", + "balanced-match": "0.2.1", + "dot-parts": "1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", + "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", + "dev": true + } + } + }, "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=" + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", + "dev": true, + "optional": true, + "requires": { + "acorn": "2.7.0" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + } + } }, "acorn-jsx": { "version": "3.0.1", @@ -78,11 +126,6 @@ "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, "agent-base": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", @@ -91,15 +134,26 @@ "requires": { "extend": "3.0.1", "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -112,16 +166,33 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" } }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } }, "ansi-colorizer": { "version": "1.0.1", @@ -135,21 +206,15 @@ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, - "ansi-grid": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ansi-grid/-/ansi-grid-0.5.0.tgz", - "integrity": "sha1-v9QxIjFxSVsXvqT002WTpsIYLGg=", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "any-promise": { "version": "1.3.0", @@ -157,107 +222,36 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", "dev": true }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "archiver": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.4.10.tgz", - "integrity": "sha1-3w/qyPHRKV5ezrOiBVWQctIfR0c=", + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "iconv-lite": "0.2.11", - "readable-stream": "1.0.34" - }, - "dependencies": { - "iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - } - } + "ap": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=", + "dev": true }, "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" - }, - "dependencies": { - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", - "dev": true - } + "sprintf-js": "1.0.3" } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { "arr-flatten": "1.1.0" } @@ -265,7 +259,14 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, "array-differ": { "version": "1.0.0", @@ -291,6 +292,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-iterate": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.1.tgz", + "integrity": "sha1-hlv3+K851rCYLGCQKRSsdrwBCPY=", + "dev": true + }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", @@ -321,12 +328,8 @@ "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, "arrify": { "version": "1.0.1", @@ -342,12 +345,34 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assertion-error": { "version": "1.0.0", @@ -356,9 +381,9 @@ "dev": true }, "assertion-error-formatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.0.tgz", - "integrity": "sha1-F6JCicyEQIibVDGObRGH6+4tVJQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz", + "integrity": "sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q==", "dev": true, "requires": { "diff": "3.4.0", @@ -366,24 +391,51 @@ "repeat-string": "1.6.1" } }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "ast-types": { - "version": "0.9.14", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.14.tgz", - "integrity": "sha512-Ebvx7/0lLboCdyEmAw/4GqwBeKIijPveXNiVGhCGCNxc7z26T5he7DC6ARxu8ByKuzUZZcLog+VP8GMyZrBzJw==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", "dev": true }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true, "requires": { - "lodash": "4.15.0" + "acorn": "4.0.13" } }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true }, "autobind-decorator": { "version": "1.4.3", @@ -396,69 +448,36 @@ "integrity": "sha1-l7yFTH0Ll5+NZIneVHoNF/swf20=", "dev": true, "requires": { - "browserslist": "2.6.1", - "caniuse-lite": "1.0.30000756", + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000792", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.13", + "postcss": "6.0.16", "postcss-value-parser": "3.3.0" } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "optional": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "babel-core": { @@ -477,7 +496,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.4", @@ -488,21 +507,6 @@ "source-map": "0.5.7" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -517,6 +521,18 @@ } } }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, "babel-generator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", @@ -533,6 +549,12 @@ "trim-right": "1.0.1" }, "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -547,2250 +569,2060 @@ } } }, - "babel-helpers": { + "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-types": "6.26.0" } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" } }, - "babel-polyfill": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.16.0.tgz", - "integrity": "sha1-LUUCHfh+JqN0ttTRqcZZZNF/JCI=", + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "requires": { + "babel-helper-hoist-variables": "6.24.1", "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "regenerator-runtime": "0.9.6" + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-register": { + "babel-helper-define-map": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "requires": { - "babel-core": "6.26.0", + "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-types": "6.26.0", + "lodash": "4.17.4" }, "dependencies": { "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" - } + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "requires": { + "babel-helper-get-function-arity": "6.24.1", "babel-runtime": "6.26.0", + "babel-template": "6.26.0", "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "babylon": "6.18.0", "lodash": "4.17.4" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", "babel-messages": "6.23.0", "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } + "babel-template": "6.26.0" } }, - "babylon": { - "version": "7.0.0-beta.30", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.30.tgz", - "integrity": "sha512-hfN8RsRw5Fwm+cAdN7+0FrnJRFcGfFNYuR/yzs0P+CXSb/aK2WPBVPWqHAQ3CgrhoId/6i4oqApjCEb7j/+0ZQ==" + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.26.0" + } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true }, - "bane": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bane/-/bane-1.0.0.tgz", - "integrity": "sha1-lJ/okStCs481Lh+tIE2CXa+h/0A=", + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, "requires": { - "tweetnacl": "0.14.5" + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" } }, - "becke-ch--regex--s0-0-v1--base--pl--lib": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.2.0.tgz", - "integrity": "sha1-LnPp0h8sLm9aVFQEVjbwq5PkYTA=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "requires": { - "callsite": "1.0.0" + "babel-runtime": "6.26.0" } }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" + "babel-runtime": "6.26.0" } }, - "bl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", - "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", - "dev": true, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "requires": { - "readable-stream": "2.0.6" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "requires": { - "inherits": "2.0.3" + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, - "bluebird": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=" - }, - "body-parser": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", - "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", - "dev": true, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "requires": { - "bytes": "2.2.0", - "content-type": "1.0.4", - "debug": "2.2.0", - "depd": "1.1.1", - "http-errors": "1.3.1", - "iconv-lite": "0.4.13", - "on-finished": "2.3.0", - "qs": "5.2.0", - "raw-body": "2.1.7", - "type-is": "1.6.15" - }, - "dependencies": { - "bytes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", - "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "http-errors": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "qs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", - "dev": true - } + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "requires": { - "hoek": "2.16.3" + "babel-runtime": "6.26.0" } }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "babel-runtime": "6.26.0" } }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.26.0" + } }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "requires": { - "pako": "0.2.9" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "browserslist": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.6.1.tgz", - "integrity": "sha512-HBZwVT7ciQB9KlXM3AUMQbnQXtHWPsEUKQTiS0BEFfY5bOrMl94ORaqQD1GyuTGh69ZmYeue9QBqiw219e09eQ==", - "dev": true, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "requires": { - "caniuse-lite": "1.0.30000756", - "electron-to-chromium": "1.3.27" + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, - "browserstack-capabilities": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserstack-capabilities/-/browserstack-capabilities-0.4.0.tgz", - "integrity": "sha1-osaFKf1qgStR1K2aSr4fU2o5uSM=", - "dev": true, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "requires": { - "lodash": "3.10.1", - "sync-request": "4.1.0" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, - "browserstack-local": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.3.0.tgz", - "integrity": "sha1-/oDvBc6JVMTWJuNQLrYtYJA7Qjc=", + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "https-proxy-agent": "1.0.0", - "is-running": "2.1.0", - "sinon": "1.17.7", - "temp-fs": "0.9.9" + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" } }, - "buffer-crc32": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.1.1.tgz", - "integrity": "sha1-fhENyZU5CKt8MqzccMn5RbHLxSY=", - "dev": true + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "requires": { + "babel-runtime": "6.26.0" + } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } }, - "buster": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/buster/-/buster-0.7.12.tgz", - "integrity": "sha1-g0ocPa8vrl+iXQFYYRwNt9whiRU=", + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "async": "0.2.10", - "bane": "1.0.0", - "buster-autotest": "0.4.2", - "buster-server-cli": "0.3.4", - "buster-sinon": "0.7.2", - "buster-static": "0.6.5", - "buster-syntax": "0.4.3", - "buster-test": "0.7.14", - "buster-test-cli": "0.8.8", - "evented-logger": "1.0.1", - "formatio": "1.0.2", - "lodash": "1.0.2", - "platform": "1.0.0", - "referee": "1.0.3", - "referee-sinon": "1.0.3", - "samsam": "1.1.2", - "sinon": "1.9.1", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "regenerator-runtime": "0.10.5" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - }, - "buster-static": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.6.5.tgz", - "integrity": "sha1-9A4lZOCGr9OhU3Q1eNfJrfYeJDE=", - "dev": true, - "requires": { - "async": "0.8.0", - "buster-cli": "0.6.3", - "buster-test": "0.7.14", - "mkdirp": "0.3.5", - "ramp-resources": "1.0.5", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" - }, - "dependencies": { - "async": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.8.0.tgz", - "integrity": "sha1-7mXsdymML/FFa8RBigUtDwZDURI=", - "dev": true - } - } - }, - "formatio": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "integrity": "sha1-55kcoUT/fYz/B7uayGqbeca6R+8=", - "dev": true, - "requires": { - "samsam": "1.1.2" - } - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, - "mkdirp": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", "dev": true - }, - "sinon": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.9.1.tgz", - "integrity": "sha1-DaxiK9Pw5vlmKnQxuvZfWMNFnWk=", - "dev": true, - "requires": { - "formatio": "1.0.2", - "util": "0.10.3" - } } } }, - "buster-analyzer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/buster-analyzer/-/buster-analyzer-0.5.0.tgz", - "integrity": "sha1-KZXzmTZYPpzZEJVbmOg1e+fHopU=", - "dev": true, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.2", + "semver": "5.5.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "requires": { - "bane": "1.0.0", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "babel-plugin-transform-flow-strip-types": "6.22.0" } }, - "buster-autotest": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.4.2.tgz", - "integrity": "sha1-TY/uKYG7K5jPW4mqCu2zBOj6LIM=", - "dev": true, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "requires": { - "fs-watch-tree": "0.2.5", - "multi-glob": "0.4.0" + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" } }, - "buster-cli": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.6.3.tgz", - "integrity": "sha1-XSZTPf8MMB3jJB8IlGsf6DczMwk=", + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "ansi-colorizer": "1.0.1", - "bane": "1.0.0", - "buster-configuration": "0.7.6", - "minimatch": "3.0.4", - "posix-argv-parser": "1.0.2", - "rimraf": "1.0.9", - "stream-logger": "1.0.1" + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" }, "dependencies": { - "rimraf": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz", - "integrity": "sha1-vkgB/3bCum8cUMeOlwDrHSHyOfE=", + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "buster-configuration": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.7.6.tgz", - "integrity": "sha1-o4RYOMLg0TK2HvZYtfeEFD2LuzY=", - "dev": true, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "async": "0.1.22", - "bane": "1.0.0", - "glob": "3.1.21", - "lodash": "1.0.2", - "ramp-resources": "1.0.5", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", - "dev": true + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" } } }, - "buster-server-cli": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/buster-server-cli/-/buster-server-cli-0.3.4.tgz", - "integrity": "sha1-lbodQX/4LsBMykuyIpqAQC7Pfe8=", - "dev": true, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "buster-cli": "0.6.3", - "ejs": "0.4.3", - "paperboy": "0.0.5", - "phantom-proxy": "0.1.792", - "platform": "1.2.0", - "ramp": "1.0.6", - "ramp-resources": "1.0.5" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" }, "dependencies": { - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", - "dev": true + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "buster-sinon": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/buster-sinon/-/buster-sinon-0.7.2.tgz", - "integrity": "sha1-FUGAbyU40IYyuDPs2wgZYnkDezc=", - "dev": true - }, - "buster-syntax": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.4.3.tgz", - "integrity": "sha1-rkJRTg6sg9iQdacGp+W7kAVwsHM=", - "dev": true, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "jsdom": "0.10.6", - "uglify-js": "1.2.6" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" }, "dependencies": { - "jsdom": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-0.10.6.tgz", - "integrity": "sha1-o7HYdUVLoBZVdYKWeZOewAa/Wrg=", - "dev": true, - "optional": true, - "requires": { - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "htmlparser2": "3.9.2", - "nwmatcher": "1.3.9", - "request": "2.81.0", - "xmlhttprequest": "1.8.0" - } - }, - "nwmatcher": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", - "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", - "dev": true, - "optional": true - }, - "uglify-js": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz", - "integrity": "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0=", - "dev": true + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "buster-test": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.7.14.tgz", - "integrity": "sha1-lMCQckUYm5F1xPSimpoepMmUQoE=", - "dev": true, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "ansi-colorizer": "1.0.1", - "async": "0.1.22", - "bane": "1.0.0", - "lodash": "1.0.2", - "platform": "1.2.0", - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", - "dev": true + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, - "buster-test-cli": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/buster-test-cli/-/buster-test-cli-0.8.8.tgz", - "integrity": "sha1-6LtEdbj5ViVMDfQass92WYR700c=", + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", "dev": true, "requires": { - "ansi-colorizer": "1.0.1", - "ansi-grid": "0.5.0", - "bane": "1.0.0", - "buster-analyzer": "0.5.0", - "buster-cli": "0.6.3", - "buster-test": "0.7.14", - "ejs": "0.4.3", - "lodash": "1.0.2", - "platform": "1.2.0", - "ramp": "1.0.6", - "stack-filter": "1.0.1", - "when": "https://github.com/cujojs/when/tarball/1.8.1" - }, - "dependencies": { - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "platform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.2.0.tgz", - "integrity": "sha1-X63g01dXrcmNW09LnSwfHhOsBLA=", - "dev": true - } + "babel-core": "6.26.0", + "object-assign": "4.1.1" } }, - "bytes": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz", - "integrity": "sha1-xXSBIigSbWNp0VdpJahXnbP45aI=", - "dev": true + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } + "bail": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz", + "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=", + "dev": true }, - "callsite": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "bane": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bane/-/bane-1.1.2.tgz", + "integrity": "sha1-vGQkjMgjFgx98/I4uH/mLEThB7k=", + "dev": true }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" }, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "caniuse-db": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000756.tgz", - "integrity": "sha1-6TimuZFjDzDSJj3TRYvrZdNiJos=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000756.tgz", - "integrity": "sha1-PacBwVIbn6uHAExt58l/pH2+qtI=", + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "base64id": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "requires": { - "underscore-contrib": "0.3.0" - } - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chai-nightwatch": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", - "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, + "optional": true, "requires": { - "assertion-error": "1.0.0", - "deep-eql": "0.1.3" - } - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": "0.3.9" - } - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "tweetnacl": "0.14.5" } }, - "chromedriver": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.25.1.tgz", - "integrity": "sha1-BN4akkL/4xgnhkENvvquFHQ15n4=", - "dev": true, - "requires": { - "adm-zip": "0.4.7", - "kew": "0.5.0", - "mkdirp": "0.5.1", - "npmconf": "2.1.2", - "rimraf": "2.6.1" - } + "becke-ch--regex--s0-0-v1--base--pl--lib": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.2.0.tgz", + "integrity": "sha1-LnPp0h8sLm9aVFQEVjbwq5PkYTA=", + "dev": true }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "dev": true }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", "dev": true, "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" + "readable-stream": "2.0.6" }, "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true } } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "inherits": "2.0.3" } }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, + "bluebird": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", + "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "optional": true, "requires": { - "colors": "1.0.3" + "hoek": "4.2.0" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" }, "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "clipboard": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", - "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "browser-pack": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.3.tgz", + "integrity": "sha512-Jo+RYsn8X8OhyP9tMXXg0ueR2fW696HUu1Hf3/DeiwNean1oGiPtdgGRNuUHBpPHzBH3x4n1kzAlgOgHSIq88g==", + "dev": true, "requires": { - "good-listener": "1.2.2", - "select": "1.1.2", - "tiny-emitter": "2.0.2" + "JSONStream": "1.3.2", + "combine-source-map": "0.8.0", + "defined": "1.0.0", + "safe-buffer": "5.1.1", + "through2": "2.0.3", + "umd": "3.0.1" } }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "resolve": "1.1.7" }, "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true } } }, - "clone-regexp": { + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", + "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "assert": "1.4.1", + "browser-pack": "6.0.3", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.1.7", + "duplexer2": "0.1.4", + "events": "1.1.1", + "glob": "7.1.2", + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", + "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "module-deps": "4.1.1", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4", + "xtend": "4.0.1" + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", - "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "is-regexp": "1.0.0", - "is-supported-regexp-flag": "1.0.0" + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" } }, - "closure-util": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/closure-util/-/closure-util-1.22.0.tgz", - "integrity": "sha512-DX5IhSawO9838/fKNaH3Cx8jeeJGWORodHhTFkxCOVsr71OtXCfo/rtXsV24eq3iq31jdmgUQvlNIXEMHTlkWg==", + "browserify-css": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/browserify-css/-/browserify-css-0.13.1.tgz", + "integrity": "sha512-xA0Y5V8QHhVAoD41LhGO+NteOrAGIwAez7MrfIowNderu17L6iHDB/2nLQrLDZvFVsI2ZDOQo4O4OkbTtDiH1A==", + "dev": true, "requires": { - "acorn": "5.0.3", - "async": "2.5.0", - "fs-extra": "3.0.1", - "gaze": "1.1.2", - "get-down": "1.2.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "handlebars": "4.0.10", + "clean-css": "4.1.9", + "concat-stream": "1.6.0", + "css": "2.2.1", + "find-node-modules": "1.0.4", "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nomnom": "1.8.1", - "npmlog": "4.1.2", - "rimraf": "2.6.1", - "send": "0.15.3", - "socket.io": "2.0.1", - "temp": "0.8.3" + "mime": "1.6.0", + "through2": "2.0.3" }, "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } }, - "coffee-script": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", - "dev": true + "browserify-shim": { + "version": "3.8.14", + "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-3.8.14.tgz", + "integrity": "sha1-vxBXAmky0yU8de991xTzuHft7Gs=", + "dev": true, + "requires": { + "exposify": "0.5.0", + "mothership": "0.2.0", + "rename-function-calls": "0.1.1", + "resolve": "0.6.3", + "through": "2.3.8" + }, + "dependencies": { + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + } + } }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "color-name": "1.1.3" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" } }, - "color-diff": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", - "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", - "dev": true + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000792", + "electron-to-chromium": "1.3.31" + } }, - "colorguard": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz", - "integrity": "sha1-8/rK9cquuk71RlPZ+yW7cxd8DYQ=", + "browserstack-capabilities": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserstack-capabilities/-/browserstack-capabilities-0.4.0.tgz", + "integrity": "sha1-osaFKf1qgStR1K2aSr4fU2o5uSM=", "dev": true, "requires": { - "chalk": "1.1.3", - "color-diff": "0.1.7", - "log-symbols": "1.0.2", - "object-assign": "4.1.1", - "pipetteur": "2.0.3", - "plur": "2.1.2", - "postcss": "5.2.18", - "postcss-reporter": "1.4.1", - "text-table": "0.2.0", - "yargs": "1.3.3" + "lodash": "3.10.1", + "sync-request": "4.1.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-reporter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", - "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.18" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "yargs": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", - "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } }, - "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", - "dev": true - }, - "combine-errors": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", - "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", + "browserstack-local": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.3.0.tgz", + "integrity": "sha1-/oDvBc6JVMTWJuNQLrYtYJA7Qjc=", "dev": true, "requires": { - "custom-error-instance": "2.1.1", - "lodash.uniqby": "4.5.0" + "https-proxy-agent": "1.0.0", + "is-running": "2.1.0", + "sinon": "1.17.7", + "temp-fs": "0.9.9" } }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", + "dev": true, "requires": { - "delayed-stream": "1.0.0" + "base64-js": "1.2.1", + "ieee754": "1.1.8" } }, - "command-exists": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.2.tgz", - "integrity": "sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=", + "buffer-crc32": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.1.1.tgz", + "integrity": "sha1-fhENyZU5CKt8MqzccMn5RbHLxSY=", "dev": true }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "buster": { + "version": "github:busterjs/buster#0a0568f1169f66d0a1a19fad7fe0de9b44b934c8", + "dev": true, + "requires": { + "async": "1.5.2", + "bane": "1.1.2", + "buster-autotest": "0.6.0", + "buster-ci": "0.3.0", + "buster-server-cli": "0.4.0", + "buster-sinon": "0.7.2", + "buster-static": "0.7.0", + "buster-syntax": "0.5.0", + "buster-test": "0.8.0", + "buster-test-cli": "0.9.0", + "evented-logger": "1.0.1", + "formatio": "1.1.1", + "lodash": "3.10.1", + "platform": "1.3.4", + "referee": "1.2.0", + "referee-sinon": "1.0.3", + "samsam": "1.1.2", + "sinon": "1.17.7", + "stack-filter": "1.0.1", + "when": "3.7.8" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "buster-analyzer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/buster-analyzer/-/buster-analyzer-0.6.0.tgz", + "integrity": "sha1-lw6/ofR22MvQgiUXBtJ6f2k2bnk=", + "dev": true, + "requires": { + "bane": "1.1.2" + } }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "buster-autotest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/buster-autotest/-/buster-autotest-0.6.0.tgz", + "integrity": "sha1-Wy2Dshh2TCHxmswQXYPj4CzRMec=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "chokidar": "1.7.0", + "multi-glob": "1.0.1" + } + }, + "buster-ci": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/buster-ci/-/buster-ci-0.3.0.tgz", + "integrity": "sha1-urgk4Y4QkklHb10NxL9b5L5OaKw=", + "dev": true, + "requires": { + "async": "1.5.2", + "buster-ci-agent": "0.2.0", + "buster-server-cli": "0.4.0", + "buster-syntax": "0.5.0", + "buster-test-cli": "0.9.0", + "faye": "1.2.4", + "formatio": "1.1.1", + "stream-logger": "1.0.1", + "when": "3.7.8" + } + }, + "buster-ci-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buster-ci-agent/-/buster-ci-agent-0.2.0.tgz", + "integrity": "sha1-nVRjmYMLmVxlNSEonkff4stz2YA=", + "dev": true, + "requires": { + "async": "1.5.2", + "evented-logger": "1.0.1", + "faye": "1.2.4", + "ffi": "2.2.0", + "formatio": "1.1.1", + "ref": "1.3.5" + } + }, + "buster-cli": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/buster-cli/-/buster-cli-0.8.0.tgz", + "integrity": "sha1-I2VvBRv3uU+s2AR33FCo6yMy/9w=", + "dev": true, + "requires": { + "ansi-colorizer": "1.0.1", + "bane": "1.1.2", + "buster-configuration": "0.8.1", + "minimatch": "3.0.4", + "posix-argv-parser": "2.0.0", + "rimraf": "2.5.4", + "stream-logger": "1.0.1" + } + }, + "buster-configuration": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/buster-configuration/-/buster-configuration-0.8.1.tgz", + "integrity": "sha1-xgL1hEoMm6xsr0xoTK/2b+VyEd8=", + "dev": true, + "requires": { + "async": "1.5.2", + "bane": "1.1.2", + "glob": "5.0.15", + "lodash": "3.10.1", + "ramp-resources": "2.0.2", + "when": "3.7.8" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "core-util-is": "1.0.2", + "inflight": "1.0.6", "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true } } }, - "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "buster-server-cli": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/buster-server-cli/-/buster-server-cli-0.4.0.tgz", + "integrity": "sha1-67/SxVF1x5wAaHlsmwgH4XnguHU=", "dev": true, "requires": { - "ini": "1.3.4", - "proto-list": "1.2.4" + "buster-cli": "0.8.0", + "ejs": "2.5.7", + "finalhandler": "0.4.1", + "phantom-proxy": "0.1.792", + "platform": "1.3.4", + "ramp": "2.0.2", + "ramp-resources": "2.0.2", + "serve-static": "1.13.1" } }, - "connect": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-2.7.2.tgz", - "integrity": "sha1-EXmUY72qr5nV+b7xM78kILJuJoA=", + "buster-sinon": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/buster-sinon/-/buster-sinon-0.7.2.tgz", + "integrity": "sha1-FUGAbyU40IYyuDPs2wgZYnkDezc=", + "dev": true + }, + "buster-static": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/buster-static/-/buster-static-0.7.0.tgz", + "integrity": "sha1-bs5GvT8YJncZg7g1ZBw9EnpERaM=", "dev": true, "requires": { - "buffer-crc32": "0.1.1", - "bytes": "0.1.0", - "cookie": "0.0.5", - "cookie-signature": "0.0.1", - "debug": "2.6.7", - "formidable": "1.0.11", - "fresh": "0.1.0", - "pause": "0.0.1", - "qs": "0.5.1", - "send": "0.1.0" + "async": "1.5.2", + "buster-cli": "0.8.0", + "buster-test": "0.8.0", + "mkdirp": "0.5.1", + "ramp-resources": "2.0.2", + "stack-filter": "1.0.1", + "when": "3.7.8" + } + }, + "buster-syntax": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/buster-syntax/-/buster-syntax-0.5.0.tgz", + "integrity": "sha1-q/pGCfJYGJnqdCdLJrNnIdoYdtE=", + "dev": true, + "requires": { + "uglify-js": "2.8.29" }, "dependencies": { - "cookie": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", - "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", - "dev": true - }, - "fresh": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", - "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", - "dev": true - }, - "mime": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", - "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", - "dev": true - }, - "qs": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz", - "integrity": "sha1-n2v12axsdjhOldNtFbSJgOXkrdA=", - "dev": true - }, - "range-parser": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "send": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", - "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "debug": "2.6.7", - "fresh": "0.1.0", - "mime": "1.2.6", - "range-parser": "0.0.4" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" } } } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "buster-test": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/buster-test/-/buster-test-0.8.0.tgz", + "integrity": "sha1-sTSlqo8uGxzxB5Q/+c0mlmuN0qo=", + "dev": true, + "requires": { + "ansi-colorizer": "1.0.1", + "async": "1.5.2", + "bane": "1.1.2", + "jsdom": "7.2.2", + "lodash": "3.10.1", + "platform": "1.3.4", + "semver-compare": "1.0.0", + "when": "3.7.8" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } }, - "cookie-signature": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz", - "integrity": "sha1-E9NgO1z2O++/haiAHjeqkA20aYU=", - "dev": true + "buster-test-cli": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/buster-test-cli/-/buster-test-cli-0.9.0.tgz", + "integrity": "sha1-uxhVn79TwfmYrtMXWFzS2kAj/lM=", + "dev": true, + "requires": { + "ansi-colorizer": "1.0.1", + "bane": "1.1.2", + "buster-analyzer": "0.6.0", + "buster-cli": "0.8.0", + "buster-test": "0.8.0", + "ejs": "2.5.7", + "lodash": "3.10.1", + "platform": "1.3.4", + "ramp": "2.0.2", + "stack-filter": "1.0.1", + "when": "3.7.8" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } }, - "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "bytes": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz", + "integrity": "sha1-xXSBIigSbWNp0VdpJahXnbP45aI=", "dev": true }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" - }, - "core-util-is": { + "cachai": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved": "https://registry.npmjs.org/cachai/-/cachai-1.0.2.tgz", + "integrity": "sha1-BhZoZycx+ic3g+9fz1dKEbjf7ao=" }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.10.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "callsites": "0.2.0" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "camelcase": "2.1.1", + "map-obj": "1.0.1" }, "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true } } }, - "cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000793", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" }, "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "isexe": "2.0.0" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true } } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "requires": { - "boom": "2.10.1" - } + "caniuse-db": { + "version": "1.0.30000793", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000793.tgz", + "integrity": "sha1-PADGbkI6ehkHx92Wdpp4sq+opy4=", + "dev": true }, - "css-color-list": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz", - "integrity": "sha1-hxjoaVrnosyHh76HFfHACKfyixU=", - "dev": true, - "requires": { - "css-color-names": "0.0.1" - } + "caniuse-lite": { + "version": "1.0.30000792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", + "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=", + "dev": true }, - "css-color-names": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", - "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, - "css-rule-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", - "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "ccount": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz", + "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "css-tokenize": "1.0.1", - "duplexer2": "0.0.2", - "ldjson-stream": "1.2.1", - "through2": "0.6.5" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - } + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, - "css-tokenize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", - "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "chai-nightwatch": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", + "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" } }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "character-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz", + "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=", "dev": true }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "character-entities-html4": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz", + "integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA=", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz", + "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz", + "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=", + "dev": true + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, - "optional": true, "requires": { - "cssom": "0.3.2" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, - "cucumber": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-3.1.0.tgz", - "integrity": "sha512-DW5vY0oDTY3XtpPx8fYoKtro1JnMr7dOngZv6Ix53aJ4xhKViI/Yxbk3Q7Jaiw618/7uh1aw1RL6xKC67VyC6A==", + "chromedriver": { + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.25.1.tgz", + "integrity": "sha1-BN4akkL/4xgnhkENvvquFHQ15n4=", "dev": true, "requires": { - "assertion-error-formatter": "2.0.0", - "babel-runtime": "6.26.0", - "bluebird": "3.4.6", - "cli-table": "0.3.1", - "colors": "1.1.2", - "commander": "2.11.0", - "cucumber-expressions": "5.0.2", - "cucumber-tag-expressions": "1.0.1", - "duration": "0.2.0", - "escape-string-regexp": "1.0.5", - "figures": "2.0.0", - "gherkin": "5.0.0", - "glob": "7.1.2", - "indent-string": "3.2.0", - "is-generator": "1.0.3", - "is-stream": "1.1.0", - "lodash": "4.15.0", - "mz": "2.7.0", - "progress": "2.0.0", - "resolve": "1.5.0", - "stack-chain": "2.0.0", - "stacktrace-js": "2.0.0", - "string-argv": "0.0.2", - "title-case": "2.1.1", - "util-arity": "1.1.0", - "verror": "1.10.0" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - } + "adm-zip": "0.4.7", + "kew": "0.5.0", + "mkdirp": "0.5.1", + "npmconf": "2.1.2", + "rimraf": "2.5.4" } }, - "cucumber-expressions": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.2.tgz", - "integrity": "sha1-9OA8Jpi9Q+kgEaBV2cTOV3GLkbA=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "becke-ch--regex--s0-0-v1--base--pl--lib": "1.2.0" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, - "cucumber-html-reporter": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cucumber-html-reporter/-/cucumber-html-reporter-3.0.4.tgz", - "integrity": "sha512-uit68jymdI8Z6m+kJ5YnJPeHf5IdYXt2j52l5xLwgpcLBQRhCvr1peV9UODaCN5nLnRN9nqh1qaw4iNp1rTpvQ==", + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { - "find": "0.2.7", - "fs-extra": "3.0.1", - "js-base64": "2.3.2", - "jsonfile": "3.0.1", - "lodash": "4.17.4", - "open": "0.0.5" + "chalk": "1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" + "is-descriptor": "0.1.6" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, - "cucumber-tag-expressions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.0.1.tgz", - "integrity": "sha1-1tPEMYCgP1+0/JV/4Tgt3OXLmsg=", - "dev": true + "classnames": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", + "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "custom-error-instance": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", - "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "d": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", - "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "es5-ext": "0.10.35" + "restore-cursor": "2.0.0" } }, - "d3": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.11.0.tgz", - "integrity": "sha512-o048nfmydnbt0ciIvCUDTq9p62rZYOXzl8cKps0XVzk+5nHgeXmAS7jU4nh+3v82pUyH7t/GFm1bJRX4oIAlPw==", + "cli-spinners": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", + "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "dev": true + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, "requires": { - "d3-array": "1.2.1", - "d3-axis": "1.0.8", - "d3-brush": "1.0.4", - "d3-chord": "1.0.4", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-dsv": "1.0.7", - "d3-ease": "1.0.3", - "d3-force": "1.1.0", - "d3-format": "1.2.0", - "d3-geo": "1.8.1", - "d3-hierarchy": "1.1.5", - "d3-interpolate": "1.1.5", - "d3-path": "1.0.5", - "d3-polygon": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-queue": "3.0.7", - "d3-random": "1.1.0", - "d3-request": "1.0.6", - "d3-scale": "1.0.6", - "d3-selection": "1.1.0", - "d3-shape": "1.2.0", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5", - "d3-timer": "1.0.7", - "d3-transition": "1.1.0", - "d3-voronoi": "1.1.2", - "d3-zoom": "1.6.0" + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } } }, - "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" - }, - "d3-axis": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", - "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, - "d3-brush": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", - "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", + "clipboard": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" } }, - "d3-chord": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", - "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, "requires": { - "d3-array": "1.2.1", - "d3-path": "1.0.5" + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" } }, - "d3-collection": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", - "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" - }, - "d3-color": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", - "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" - }, - "d3-dispatch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", - "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" - }, - "d3-drag": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", - "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", - "requires": { - "d3-dispatch": "1.0.3", - "d3-selection": "1.1.0" - } - }, - "d3-dsv": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.7.tgz", - "integrity": "sha512-12szKhDhM/tM5U/Ch3hyJ7sMdcwPqMRmrUWitLLdPBMKO9Wuox95ezKZvemy/fxFbefLF/HIPKUmJMBLLuFDaQ==", - "requires": { - "commander": "2.11.0", - "iconv-lite": "0.4.19", - "rw": "1.3.3" - } - }, - "d3-ease": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", - "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" - }, - "d3-force": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", - "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", - "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-quadtree": "1.0.3", - "d3-timer": "1.0.7" - } - }, - "d3-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.0.tgz", - "integrity": "sha1-a0gLqohohdRlHcJIqPSsnaFtsHo=" - }, - "d3-geo": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.8.1.tgz", - "integrity": "sha512-PuvmWl1A1UXuaxcH55EGNhvMNAUBS0RQN2PAnxrZbDvDX56Xwkd+Yp1t1+ECkaJO3my+dnhxAyqAKMyyK+IFPQ==", - "requires": { - "d3-array": "1.2.1" - } - }, - "d3-hierarchy": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", - "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" - }, - "d3-interpolate": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz", - "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=", - "requires": { - "d3-color": "1.0.3" - } - }, - "d3-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", - "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" - }, - "d3-polygon": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", - "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" - }, - "d3-quadtree": { + "clone": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", - "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" - }, - "d3-queue": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", - "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" - }, - "d3-random": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", - "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" - }, - "d3-request": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", - "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", - "requires": { - "d3-collection": "1.0.4", - "d3-dispatch": "1.0.3", - "d3-dsv": "1.0.7", - "xmlhttprequest": "1.8.0" - } - }, - "d3-scale": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.6.tgz", - "integrity": "sha1-vOGdqA06DPQiyVQ64zIghiILNO0=", - "requires": { - "d3-array": "1.2.1", - "d3-collection": "1.0.4", - "d3-color": "1.0.3", - "d3-format": "1.2.0", - "d3-interpolate": "1.1.5", - "d3-time": "1.0.7", - "d3-time-format": "2.0.5" - } - }, - "d3-selection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz", - "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=" - }, - "d3-shape": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", - "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", - "requires": { - "d3-path": "1.0.5" - } - }, - "d3-time": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.7.tgz", - "integrity": "sha1-lMr27bt4ebuAnQ0fdXK8SEgvcnA=" - }, - "d3-time-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz", - "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=", - "requires": { - "d3-time": "1.0.7" - } - }, - "d3-timer": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", - "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true }, - "d3-transition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz", - "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=", + "clone-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", + "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", + "dev": true, "requires": { - "d3-color": "1.0.3", - "d3-dispatch": "1.0.3", - "d3-ease": "1.0.3", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-timer": "1.0.7" + "is-regexp": "1.0.0", + "is-supported-regexp-flag": "1.0.0" } }, - "d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" - }, - "d3-zoom": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.6.0.tgz", - "integrity": "sha512-viq+6rXA9JQY1wD+gpDEdlOtCeJ6IfcsNT2aVr31VTjIAIhYlO0YurQ80yDRZeMJw5P/e6nVPhGJF9D9Ade5Og==", - "requires": { - "d3-dispatch": "1.0.3", - "d3-drag": "1.2.1", - "d3-interpolate": "1.1.5", - "d3-selection": "1.1.0", - "d3-transition": "1.1.0" - } + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "q": "1.5.1" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true } } }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "dateformat": { - "version": "1.0.2-1.2.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", + "coffee-script": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", "dev": true }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "collapse-white-space": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz", + "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, "requires": { - "ms": "2.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.11", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.5.0", - "readable-stream": "1.1.14", - "touch": "0.0.3" + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" } }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "type-detect": "0.1.1" + "color-name": "1.1.3" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "color-diff": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", + "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", "dev": true }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { - "ast-types": "0.9.14", - "escodegen": "1.9.0", - "esprima": "3.1.3" + "color-name": "1.1.3" } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "colorguard": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.1.tgz", + "integrity": "sha512-qYVKTg626qpDg4/eBnPXidEPXn5+krbYqHVfyyEFBWV5z3IF4p44HKY/eE2t1ohlcrlIkDgHmFJMfQ8qMLnSFw==", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", + "chalk": "1.1.3", + "color-diff": "0.1.7", + "log-symbols": "1.0.2", "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "pipetteur": "2.0.3", + "plur": "2.1.2", + "postcss": "5.2.18", + "postcss-reporter": "1.4.1", + "text-table": "0.2.0", + "yargs": "1.3.3" }, "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegate": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz", - "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "doiuse": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", - "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", - "css-rule-stream": "1.1.0", - "duplexer2": "0.0.2", - "jsonfilter": "1.1.2", - "ldjson-stream": "1.2.1", - "lodash": "4.15.0", - "multimatch": "2.1.0", - "postcss": "5.2.18", - "source-map": "0.4.4", - "through2": "0.6.5", - "yargs": "3.10.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -2804,28 +2636,29 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "postcss-reporter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", + "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "chalk": "1.1.3", + "lodash": "4.15.0", + "log-symbols": "1.0.2", + "postcss": "5.2.18" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -2834,4441 +2667,8860 @@ "requires": { "has-flag": "1.0.0" } + }, + "yargs": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", + "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", + "dev": true } } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", "dev": true, - "optional": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true, - "optional": true - } + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", "dev": true }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "combine-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha1-9N9nQAg+VwOjGBEQwrEFUfAD2oY=", "dev": true, - "optional": true, "requires": { - "domelementtype": "1.3.0" + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" } }, - "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", "dev": true, - "optional": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "dev": true, + "requires": { + "delayed-stream": "0.0.5" + } + }, + "command-exists": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.2.tgz", + "integrity": "sha1-EoGcZPr5VEbsCuB/5sr7brNwiyI=", "dev": true }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "0.10.31", "util-deprecate": "1.0.2" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true } } }, - "duration": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.0.tgz", - "integrity": "sha1-X5xN+q//ZV3phhEu/iXFl43YUUY=", + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { - "d": "0.1.1", - "es5-ext": "0.10.35" + "ini": "1.3.5", + "proto-list": "1.2.4" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, "requires": { - "jsbn": "0.1.1" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" } }, - "editorconfig": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", - "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "connect": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.7.2.tgz", + "integrity": "sha1-EXmUY72qr5nV+b7xM78kILJuJoA=", "dev": true, "requires": { - "bluebird": "3.4.6", - "commander": "2.11.0", - "lru-cache": "3.2.0", - "semver": "5.4.1", - "sigmund": "1.0.1" + "buffer-crc32": "0.1.1", + "bytes": "0.1.0", + "cookie": "0.0.5", + "cookie-signature": "0.0.1", + "debug": "2.6.9", + "formidable": "1.0.11", + "fresh": "0.1.0", + "pause": "0.0.1", + "qs": "0.5.1", + "send": "0.1.0" }, "dependencies": { - "lru-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", - "dev": true, - "requires": { - "pseudomap": "1.0.2" - } - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "qs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.1.tgz", + "integrity": "sha1-n2v12axsdjhOldNtFbSJgOXkrdA=", "dev": true } } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, - "ejs": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.4.3.tgz", - "integrity": "sha1-gUPDZWlVuJNNtdnag+m+cxdvH08=", + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "electron-to-chromium": { - "version": "1.3.27", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", - "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=", + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true }, - "engine.io": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.3.tgz", - "integrity": "sha1-euz3G/ijEPn6IUYZmcT8wDX4qHc=", - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "uws": "0.14.5", - "ws": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", + "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", + "dev": true + }, + "cookie-signature": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz", + "integrity": "sha1-E9NgO1z2O++/haiAHjeqkA20aYU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, - "engine.io-client": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.3.tgz", - "integrity": "sha1-1wXkiYXf6LVKmMn3cFK4sIJYvgU=", + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.9", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" } }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" + "bn.js": "4.11.8", + "elliptic": "6.4.0" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "capture-stack-trace": "1.0.0" } }, - "error-stack-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", - "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "stackframe": "1.0.4" + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" } }, - "es-abstract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", - "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, + "create-react-class": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", + "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, - "es5-ext": { - "version": "0.10.35", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", - "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, + "optional": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-symbol": "3.1.1" + "boom": "5.2.0" }, "dependencies": { - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, + "optional": true, "requires": { - "es5-ext": "0.10.35" + "hoek": "4.2.0" } } } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" - }, - "dependencies": { - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.35" - } - } + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.3" } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "csprng": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz", + "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=", + "dev": true, + "requires": { + "sequin": "0.1.1" + } }, - "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, - "optional": true + "requires": { + "amdefine": "1.0.1" + } } } }, - "eslint": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", - "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", - "dev": true, - "requires": { - "ajv": "5.3.0", - "babel-code-frame": "6.26.0", - "chalk": "2.3.0", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.4.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.2", - "text-table": "0.2.0" + "css-color-list": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-color-list/-/css-color-list-0.0.1.tgz", + "integrity": "sha1-hxjoaVrnosyHh76HFfHACKfyixU=", + "dev": true, + "requires": { + "css-color-names": "0.0.1" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "css-color-names": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.1.tgz", + "integrity": "sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE=", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-rule-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", + "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", + "dev": true, + "requires": { + "css-tokenize": "1.0.1", + "duplexer2": "0.0.2", + "ldjson-stream": "1.2.1", + "through2": "0.6.5" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "readable-stream": "1.1.14" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "color-convert": "1.9.0" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" } }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } } + } + } + }, + "css-tokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", + "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, "requires": { - "ms": "2.0.0" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000793", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" } }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "isarray": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "has-flag": "1.0.0" } } } }, - "eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "debug": "2.6.9", - "resolve": "1.5.0" + "clap": "1.2.3", + "source-map": "0.5.7" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, + "optional": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "cssom": "0.3.2" } }, - "eslint-plugin-import": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", - "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "cucumber": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-3.2.1.tgz", + "integrity": "sha512-04ZxLBtGeEUsuYD/AhEuv+WO/hDVi22b4FO13JdB7oiwMCLS4mF70PzUK5ww1etEivSR0ea+oKs5i5jVHwPNlA==", "dev": true, "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", - "dev": true, - "requires": { - "ignore": "3.3.7", - "minimatch": "3.0.4", + "assertion-error-formatter": "2.0.1", + "babel-runtime": "6.26.0", + "bluebird": "3.4.6", + "cli-table": "0.3.1", + "colors": "1.1.2", + "commander": "2.13.0", + "cucumber-expressions": "5.0.7", + "cucumber-tag-expressions": "1.1.1", + "duration": "0.2.0", + "escape-string-regexp": "1.0.5", + "figures": "2.0.0", + "gherkin": "5.0.0", + "glob": "7.1.2", + "indent-string": "3.2.0", + "is-generator": "1.0.3", + "is-stream": "1.1.0", + "lodash": "4.15.0", + "mz": "2.7.0", + "progress": "2.0.0", "resolve": "1.5.0", - "semver": "5.3.0" + "stack-chain": "2.0.0", + "stacktrace-js": "2.0.0", + "string-argv": "0.0.2", + "title-case": "2.1.1", + "util-arity": "1.1.0", + "verror": "1.10.0" }, "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true } } }, - "eslint-plugin-promise": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", - "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", - "dev": true - }, - "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "cucumber-expressions": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.7.tgz", + "integrity": "sha1-Z2JFcReKTFoH3gVceGICWz+LCxg=", "dev": true, "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "becke-ch--regex--s0-0-v1--base--pl--lib": "1.2.0" } }, - "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "cucumber-html-reporter": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cucumber-html-reporter/-/cucumber-html-reporter-3.0.4.tgz", + "integrity": "sha512-uit68jymdI8Z6m+kJ5YnJPeHf5IdYXt2j52l5xLwgpcLBQRhCvr1peV9UODaCN5nLnRN9nqh1qaw4iNp1rTpvQ==", "dev": true, "requires": { - "acorn": "5.2.1", - "acorn-jsx": "3.0.1" + "find": "0.2.8", + "fs-extra": "3.0.1", + "js-base64": "2.4.1", + "jsonfile": "3.0.1", + "lodash": "4.17.4", + "open": "0.0.5" }, "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true } } }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "cucumber-tag-expressions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz", + "integrity": "sha1-f1x7cACbwrZmWRv+ZIVFeL7e6Fo=", "dev": true }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "array-find-index": "1.0.2" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "estree-walker": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", - "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "custom-error-instance": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha1-PPY5FIemYppiR+sMoM4ACBt+Nho=", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" - }, - "event-stream": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.0.20.tgz", - "integrity": "sha1-A4u7LqnqkDhbJvvBhU0LU58qvqM=", + "d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.0.7", - "pause-stream": "0.0.11", - "split": "0.2.10", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "es5-ext": "0.10.38" } }, - "evented-logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/evented-logger/-/evented-logger-1.0.1.tgz", - "integrity": "sha1-n+1Zxc7MhzFuzv25X76RDwPmNqc=", - "dev": true, + "d3": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.12.2.tgz", + "integrity": "sha512-aKAlpgTmpuGeEpezB+GvPpX1x+gCMs/PHpuse6sCpkgw4Un3ZeqUobIc87eIy9adcl+wxPAnEyKyO5oulH3MOw==", "requires": { - "bane": "1.0.0", - "lodash": "3.10.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } + "d3-array": "1.2.1", + "d3-axis": "1.0.8", + "d3-brush": "1.0.4", + "d3-chord": "1.0.4", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-dsv": "1.0.8", + "d3-ease": "1.0.3", + "d3-force": "1.1.0", + "d3-format": "1.2.1", + "d3-geo": "1.9.1", + "d3-hierarchy": "1.1.5", + "d3-interpolate": "1.1.6", + "d3-path": "1.0.5", + "d3-polygon": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-queue": "3.0.7", + "d3-random": "1.1.0", + "d3-request": "1.0.6", + "d3-scale": "1.0.7", + "d3-selection": "1.2.0", + "d3-shape": "1.2.0", + "d3-time": "1.0.8", + "d3-time-format": "2.1.1", + "d3-timer": "1.0.7", + "d3-transition": "1.1.1", + "d3-voronoi": "1.1.2", + "d3-zoom": "1.7.1" } }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true + "d3-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", + "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" }, - "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", - "dev": true, + "d3-axis": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz", + "integrity": "sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=" + }, + "d3-brush": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz", + "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=", "requires": { - "clone-regexp": "1.0.0" + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", + "d3-transition": "1.1.1" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "d3-chord": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz", + "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=", "requires": { - "is-posix-bracket": "0.1.1" + "d3-array": "1.2.1", + "d3-path": "1.0.5" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "d3-collection": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz", + "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" + }, + "d3-color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz", + "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=" + }, + "d3-dispatch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz", + "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=" + }, + "d3-drag": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz", + "integrity": "sha512-Cg8/K2rTtzxzrb0fmnYOUeZHvwa4PHzwXOLZZPwtEs2SKLLKLXeYwZKBB+DlOxUvFmarOnmt//cU4+3US2lyyQ==", "requires": { - "fill-range": "2.2.3" + "d3-dispatch": "1.0.3", + "d3-selection": "1.2.0" } }, - "express": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", - "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", - "dev": true, + "d3-dsv": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz", + "integrity": "sha512-IVCJpQ+YGe3qu6odkPQI0KPqfxkhbP/oM1XhhE/DFiYmcXKfCRub4KXyiuehV1d4drjWVXHUWx4gHqhdZb6n/A==", "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.1", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.0.6", - "fresh": "0.5.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.5", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.1", - "serve-static": "1.12.1", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.2" - }, - "dependencies": { - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "debug": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", - "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "send": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", - "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", - "dev": true, - "requires": { - "debug": "2.6.1", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.0", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "0.7.2", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - } + "commander": "2.13.0", + "iconv-lite": "0.4.19", + "rw": "1.3.3" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "d3-ease": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz", + "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=" }, - "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", - "dev": true, + "d3-force": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz", + "integrity": "sha512-2HVQz3/VCQs0QeRNZTYb7GxoUCeb6bOzMp/cGcLa87awY9ZsPvXOGeZm0iaGBjXic6I1ysKwMn+g+5jSAdzwcg==", "requires": { - "iconv-lite": "0.4.19", - "jschardet": "1.6.0", - "tmp": "0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - } + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-quadtree": "1.0.3", + "d3-timer": "1.0.7" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "d3-format": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.1.tgz", + "integrity": "sha512-U4zRVLDXW61bmqoo+OJ/V687e1T5nVd3TAKAJKgtpZ/P1JsMgyod0y9br+mlQOryTAACdiXI3wCjuERHFNp91w==" + }, + "d3-geo": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz", + "integrity": "sha512-l9wL/cEQkyZQYXw3xbmLsH3eQ5ij+icNfo4r0GrLa5rOCZR/e/3am45IQ0FvQ5uMsv+77zBRunLc9ufTWSQYFA==", "requires": { - "is-extglob": "1.0.0" + "d3-array": "1.2.1" } }, - "extract-zip": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", - "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", - "dev": true, + "d3-hierarchy": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz", + "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY=" + }, + "d3-interpolate": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz", + "integrity": "sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A==", "requires": { - "concat-stream": "1.5.0", - "debug": "0.7.4", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", - "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } + "d3-color": "1.0.3" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "d3-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz", + "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=" }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true + "d3-polygon": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz", + "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=" }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "d3-quadtree": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", + "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "d3-queue": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz", + "integrity": "sha1-yTouVLQXwJWRKdfXP2z31Ckudhg=" }, - "faye": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/faye/-/faye-0.8.11.tgz", - "integrity": "sha1-BrJfIsm+Uevm/m2NWd7m5UZ1GWc=", - "dev": true, + "d3-random": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz", + "integrity": "sha1-ZkLlBsb6OmSFldKyRpeIqNElKdM=" + }, + "d3-request": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz", + "integrity": "sha512-FJj8ySY6GYuAJHZMaCQ83xEYE4KbkPkmxZ3Hu6zA1xxG2GD+z6P+Lyp+zjdsHf0xEbp2xcluDI50rCS855EQ6w==", "requires": { - "cookiejar": "2.1.1", - "faye-websocket": "0.11.1" + "d3-collection": "1.0.4", + "d3-dispatch": "1.0.3", + "d3-dsv": "1.0.8", + "xmlhttprequest": "1.8.0" } }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, + "d3-scale": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", + "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", "requires": { - "websocket-driver": "0.7.0" + "d3-array": "1.2.1", + "d3-collection": "1.0.4", + "d3-color": "1.0.3", + "d3-format": "1.2.1", + "d3-interpolate": "1.1.6", + "d3-time": "1.0.8", + "d3-time-format": "2.1.1" } }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "d3-selection": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.2.0.tgz", + "integrity": "sha512-xW2Pfcdzh1gOaoI+LGpPsLR2VpBQxuFoxvrvguK8ZmrJbPIVvfNG6pU6GNfK41D6Qz15sj61sbW/AFYuukwaLQ==" + }, + "d3-shape": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz", + "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } + "d3-path": "1.0.5" } }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, + "d3-time": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz", + "integrity": "sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==" + }, + "d3-time-format": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz", + "integrity": "sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==", "requires": { - "pend": "1.2.0" + "d3-time": "1.0.8" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, + "d3-timer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", + "integrity": "sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==" + }, + "d3-transition": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz", + "integrity": "sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==", "requires": { - "escape-string-regexp": "1.0.5" + "d3-color": "1.0.3", + "d3-dispatch": "1.0.3", + "d3-ease": "1.0.3", + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", + "d3-timer": "1.0.7" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" + }, + "d3-zoom": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz", + "integrity": "sha512-sZHQ55DGq5BZBFGnRshUT8tm2sfhPHFnOlmPbbwTkAoPeVdRTkB4Xsf9GCY0TSHrTD8PeJPZGmP/TpGicwJDJQ==", + "requires": { + "d3-dispatch": "1.0.3", + "d3-drag": "1.2.1", + "d3-interpolate": "1.1.6", + "d3-selection": "1.2.0", + "d3-transition": "1.1.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "assert-plus": "1.0.0" } }, - "file-sync-cmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", - "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", "dev": true }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", + "dev": true }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "ms": "2.0.0" } }, - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, - "find": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/find/-/find-0.2.7.tgz", - "integrity": "sha1-evvQD48IxbYi+Xzab3FBc9VHuz8=", + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { - "traverse-chain": "0.1.0" + "decamelize": "1.2.0", + "map-obj": "1.0.1" } }, - "find-parent-dir": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.1.0.tgz", - "integrity": "sha1-EBuOyk+ye5QmMYei+txWuVyqh9Q=", + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "type-detect": "0.1.1" } }, - "findup-sync": { + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "glob": "3.2.11", - "lodash": "2.4.2" + "foreach": "2.0.5", + "object-keys": "1.0.11" }, "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } } } }, - "fizzy-ui-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.5.tgz", - "integrity": "sha1-1y3rx00snSctvLt7ABcHiX9sMhA=", - "requires": { - "desandro-matches-selector": "2.0.2" - } - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "is-descriptor": "1.0.2" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, + "requires": { + "ast-types": "0.10.1", + "escodegen": "1.1.0", + "esprima": "3.1.3" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, "requires": { - "for-in": "1.0.2" + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.5.4" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", "dev": true }, - "foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } + "dependency-graph": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.2.tgz", + "integrity": "sha512-fuF8ISen2Rk75wQ4tWHcfJ/IV1cmPMFE+wth10tAnj/JkpqMJzNW5oKpVOCAkpdfYD+NwtA3kL3nOeyprxPG2A==", + "dev": true }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", "dev": true, "requires": { - "samsam": "1.1.2" + "JSONStream": "1.3.2", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" } }, - "formidable": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz", - "integrity": "sha1-aPYzJaA15kS297s9ESQ7l2HeGzA=", - "dev": true - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + "desandro-matches-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", + "integrity": "sha1-cXvu1NwT59jzdi9wem1YpndCGOE=" }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "fs-extra": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", - "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.1" + "fs-exists-sync": "0.1.0" } }, - "fs-watch-tree": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/fs-watch-tree/-/fs-watch-tree-0.2.5.tgz", - "integrity": "sha1-tIoBTJgw/1PlI1bqIwVsHA1suS0=", + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "minimatch": "0.2.14", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "repeating": "2.0.1" + } + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "defined": "1.0.0" }, "dependencies": { - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "dev": true } } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" } }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", "dev": true, "requires": { - "readable-stream": "1.1.14", - "xregexp": "2.0.0" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gather-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", - "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "arrify": "1.0.1", + "path-type": "3.0.0" }, "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "pify": "3.0.0" } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "requires": { - "globule": "1.2.0" - } - }, - "geckodriver": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.2.0.tgz", - "integrity": "sha1-K9rOzlrQ4h0LBAwwipTnYi6ItKw=", - "dev": true, - "requires": { - "adm-zip": "0.4.7", - "bluebird": "3.4.6", - "got": "5.6.0", - "tar.gz": "1.0.5" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "is-property": "1.0.2" - } - }, - "get-down": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-down/-/get-down-1.2.0.tgz", - "integrity": "sha512-SbpdXn+fNmGN6pp/vBALveh3oCbWYTR3wb5qifauPSFhAfAVQ7TMOnAkVzQm4YZD2KABzJB3sA2kmMLaOylA2A==", - "requires": { - "decompress-zip": "0.3.0", - "graceful-fs": "4.1.11", - "junk": "2.1.0", - "mout": "1.0.0", - "q": "1.5.0", - "request": "2.81.0", - "request-progress": "3.0.0", - "retry": "0.10.1", - "tar": "3.1.5", - "tmp": "0.0.31" + "esutils": "2.0.2" } }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-size": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.2.tgz", - "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.1.tgz", - "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", + "doiuse": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", + "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", "dev": true, "requires": { - "data-uri-to-buffer": "1.2.0", - "debug": "2.6.7", - "extend": "3.0.1", - "file-uri-to-path": "1.0.0", - "ftp": "0.3.10", - "readable-stream": "2.3.3" + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000793", + "css-rule-stream": "1.1.0", + "duplexer2": "0.0.2", + "jsonfilter": "1.1.2", + "ldjson-stream": "1.2.1", + "lodash": "4.15.0", + "multimatch": "2.1.0", + "postcss": "5.2.18", + "source-map": "0.4.4", + "through2": "0.6.5", + "yargs": "3.10.0" }, "dependencies": { - "isarray": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "has-flag": "1.0.0" } - } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + } + } + } } }, - "getobject": { + "dom-serializer": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true } } }, - "gherkin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.0.0.tgz", - "integrity": "sha1-lt70EZjsOQgli1Ea909lWidk0qE=", + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, - "gifshot": { - "version": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", - "integrity": "sha1-kWsPdnu5Q8CbkHy5LUyUgIukVu8=" + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "domelementtype": "1.3.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dot-parts": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dot-parts/-/dot-parts-1.0.1.tgz", + "integrity": "sha1-iEvXvPwwgv+tL+XbU+SU2PPgdD8=", + "dev": true + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, "requires": { - "is-glob": "2.0.1" + "is-obj": "1.0.1" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "readable-stream": "2.3.3" } }, - "globjoin": { + "duplexer3": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "duration": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.0.tgz", + "integrity": "sha1-X5xN+q//ZV3phhEu/iXFl43YUUY=", + "dev": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "minimatch": "3.0.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - } + "d": "0.1.1", + "es5-ext": "0.10.38" } }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, "requires": { - "delegate": "3.1.3" + "jsbn": "0.1.1" } }, - "got": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz", - "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=", + "editorconfig": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", + "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-plain-obj": "1.1.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "2.0.0", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" + "bluebird": "3.4.6", + "commander": "2.13.0", + "lru-cache": "3.2.0", + "semver": "5.5.0", + "sigmund": "1.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "pseudomap": "1.0.2" } } } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true }, - "graceful-readlink": { + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", + "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "encodeurl": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", "dev": true }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", "dev": true }, - "grunt": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "async": "0.1.22", - "coffee-script": "1.3.3", - "colors": "0.6.2", - "dateformat": "1.0.2-1.2.3", - "eventemitter2": "0.4.14", - "exit": "0.1.2", - "findup-sync": "0.1.3", - "getobject": "0.1.0", - "glob": "3.1.21", - "grunt-legacy-log": "0.1.3", - "grunt-legacy-util": "0.2.0", - "hooker": "0.2.3", - "iconv-lite": "0.2.11", - "js-yaml": "2.0.5", - "lodash": "0.9.2", - "minimatch": "0.2.14", - "nopt": "1.0.10", - "rimraf": "2.2.8", - "underscore.string": "2.2.1", - "which": "1.0.9" - }, - "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1.1.1" - } - }, - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } + "is-arrayish": "0.2.1" } }, - "grunt-buster": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/grunt-buster/-/grunt-buster-0.4.2.tgz", - "integrity": "sha1-eRwcvIDEjria0mnG/palTlNoWRk=", + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", "dev": true, "requires": { - "cross-spawn-async": "2.2.5", - "resolve-bin": "0.3.0", - "when": "3.7.8", - "which": "1.0.9" - }, - "dependencies": { - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", - "dev": true - } + "stackframe": "1.0.4" } }, - "grunt-contrib-clean": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz", - "integrity": "sha1-ay7ZQRfix//jLuBFeMlv5GJam20=", + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { - "async": "1.5.2", - "rimraf": "2.6.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" } }, - "grunt-contrib-compress": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-0.5.3.tgz", - "integrity": "sha1-ujtbL/Q4xFMFeeaWLKuAaWWA6+0=", + "es5-ext": { + "version": "0.10.38", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", + "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", "dev": true, "requires": { - "archiver": "0.4.10", - "lazystream": "0.1.0", - "prettysize": "0.0.3" + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" } }, - "grunt-contrib-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", - "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "chalk": "1.1.3", - "source-map": "0.5.7" + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-symbol": "3.1.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "es5-ext": "0.10.38" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + } + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "es5-ext": "0.10.38" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "grunt-contrib-copy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", - "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.1.0.tgz", + "integrity": "sha1-xmOSP24gqtSNDA+knzHG1PSTYM8=", "dev": true, "requires": { - "chalk": "1.1.3", - "file-sync-cmp": "0.1.1" + "esprima": "1.0.4", + "estraverse": "1.5.1", + "esutils": "1.0.0", + "source-map": "0.1.43" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, + "optional": true, "requires": { - "ansi-regex": "2.1.1" + "amdefine": "1.0.1" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "grunt-contrib-cssmin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-1.0.2.tgz", - "integrity": "sha1-FzTL09hMpzZHWLflj/GOUqpgu3Y=", + "eslint": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.15.0.tgz", + "integrity": "sha512-zEO/Z1ZUxIQ+MhDVKkVTUYpIPDTEJLXGMrkID+5v1NeQHtCz6FZikWuFRgxE1Q/RV2V4zVl1u3xmpPADHhMZ6A==", "dev": true, "requires": { - "chalk": "1.1.3", - "clean-css": "3.4.28", - "maxmin": "1.1.0" + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.1.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "color-convert": "1.9.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-regex": "2.1.1" - } + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "grunt-contrib-uglify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-2.0.0.tgz", - "integrity": "sha1-jJlw1pCTbN5tJaoRk1Sb2SkBaTA=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash.assign": "4.2.0", - "maxmin": "1.1.0", - "uglify-js": "2.7.5", - "uri-path": "1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "globals": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "argparse": "1.0.9", + "esprima": "4.0.0" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "3.0.0" } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "has-flag": "2.0.0" } } } }, - "grunt-contrib-watch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", - "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "dev": true, "requires": { - "async": "1.5.2", - "gaze": "1.1.2", - "lodash": "3.10.1", - "tiny-lr": "0.2.1" + "debug": "2.6.9", + "resolve": "1.5.0" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.2", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } } } }, - "grunt-exec": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.7.tgz", - "integrity": "sha1-QAUf+k6wyWV+BTuV6I1ENSocLCU=", - "dev": true - }, - "grunt-git-rev-parse": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/grunt-git-rev-parse/-/grunt-git-rev-parse-0.1.5.tgz", - "integrity": "sha1-ntSngs7jCa9DHiKXGX6vyTOQa80=", - "dev": true - }, - "grunt-legacy-log": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", "dev": true, "requires": { - "colors": "0.6.2", - "grunt-legacy-log-utils": "0.1.1", - "hooker": "0.2.3", - "lodash": "2.4.2", - "underscore.string": "2.3.3" + "ignore": "3.3.7", + "minimatch": "3.0.4", + "resolve": "1.5.0", + "semver": "5.3.0" }, "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "underscore.string": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } } }, - "grunt-legacy-log-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "eslint-plugin-promise": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "colors": "0.6.2", - "lodash": "2.4.2", - "underscore.string": "2.3.3" + "esrecurse": "4.2.0", + "estraverse": "4.2.0" }, "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "underscore.string": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true } } }, - "grunt-legacy-util": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", "dev": true, "requires": { - "async": "0.1.22", - "exit": "0.1.2", - "getobject": "0.1.0", - "hooker": "0.2.3", - "lodash": "0.9.2", - "underscore.string": "2.2.1", - "which": "1.0.9" + "acorn": "5.3.0", + "acorn-jsx": "3.0.1" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, - "lodash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", "dev": true } } }, - "grunt-line-remover": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/grunt-line-remover/-/grunt-line-remover-0.0.2.tgz", - "integrity": "sha1-OCIcxr64o2uCUnY4ddu2NIIh6i0=", + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", "dev": true }, - "grunt-markdown": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/grunt-markdown/-/grunt-markdown-0.7.0.tgz", - "integrity": "sha1-BaPuNhtcxztkbp9c3SBoZFRJqmY=", + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "highlight.js": "8.4.0", - "lodash": "2.4.2", - "marked": "0.3.6" + "estraverse": "4.2.0" }, "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true } } }, - "grunt-minjson": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/grunt-minjson/-/grunt-minjson-0.4.0.tgz", - "integrity": "sha1-I5PO+bADVrur6pB9Zc33fHYoCkQ=", + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "maxmin": "2.1.0" + "estraverse": "4.2.0", + "object-assign": "4.1.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "event-stream": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.0.20.tgz", + "integrity": "sha1-A4u7LqnqkDhbJvvBhU0LU58qvqM=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.0.7", + "pause-stream": "0.0.11", + "split": "0.2.10", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "evented-logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/evented-logger/-/evented-logger-1.0.1.tgz", + "integrity": "sha1-n+1Zxc7MhzFuzv25X76RDwPmNqc=", + "dev": true, + "requires": { + "bane": "1.1.2", + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "execall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", + "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "dev": true, + "requires": { + "clone-regexp": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "exposify": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/exposify/-/exposify-0.5.0.tgz", + "integrity": "sha1-+S0AlMJls/VT4fpFagOhiD0QWcw=", + "dev": true, + "requires": { + "globo": "1.1.0", + "map-obj": "1.0.1", + "replace-requires": "1.0.4", + "through2": "0.4.2", + "transformify": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "duplexer": "0.1.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" } }, - "maxmin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", - "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "figures": "1.7.0", - "gzip-size": "3.0.0", - "pretty-bytes": "3.0.1" - } + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true }, - "pretty-bytes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "readable-stream": "1.0.34", + "xtend": "2.1.2" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "object-keys": "0.4.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "grunt-mkdir": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/grunt-mkdir/-/grunt-mkdir-0.1.3.tgz", - "integrity": "sha1-W3gKPBAkv805CNdxIuk5QUxuZ2w=", - "dev": true - }, - "grunt-postcss": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.8.0.tgz", - "integrity": "sha1-jzCor2B5A84MRfAfC+QsYOMc6w4=", + "express": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", + "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", "dev": true, "requires": { - "chalk": "1.1.3", - "diff": "2.2.3", - "postcss": "5.2.18" + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.1", + "depd": "1.1.2", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.0.6", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.1", + "serve-static": "1.12.1", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ms": "0.7.2" } }, - "diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "has-flag": "1.0.0" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "send": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", + "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "debug": "2.6.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.0", + "http-errors": "1.6.2", + "mime": "1.3.4", + "ms": "0.7.2", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "serve-static": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz", + "integrity": "sha1-dEOpZePO1kes61Y5+ga/TRu+ADk=", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.15.1" + } } } }, - "grunt-rename": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/grunt-rename/-/grunt-rename-0.1.4.tgz", - "integrity": "sha1-c9Jq8dpNIjy2NGXLNQYWfa8IlMI=", + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, - "grunt-stylefmt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-stylefmt/-/grunt-stylefmt-3.0.0.tgz", - "integrity": "sha1-Z8eYEJplBB1vrq7MWtm0c6oQfuI=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-zip": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", "dev": true, "requires": { - "stylefmt": "5.3.2" + "concat-stream": "1.5.0", + "debug": "0.7.4", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" - } - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "concat-stream": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", "dev": true }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.3.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "minimist": "0.0.8" } }, - "stylefmt": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/stylefmt/-/stylefmt-5.3.2.tgz", - "integrity": "sha1-MgE0N6pU2MUlPLwQeskU37Xunuo=", + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "chalk": "1.1.3", - "css-color-list": "0.0.1", - "diff": "3.4.0", - "editorconfig": "0.13.3", - "globby": "6.1.0", - "minimist": "1.2.0", - "postcss": "5.2.18", - "postcss-scss": "0.4.1", - "postcss-sorting": "2.1.0", - "postcss-value-parser": "3.3.0", - "stdin": "0.0.1", - "stylelint": "7.13.0", - "stylelint-order": "0.4.4" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" } }, - "stylelint": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", - "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "balanced-match": "0.4.2", - "chalk": "2.3.0", - "colorguard": "1.2.0", - "cosmiconfig": "2.2.2", - "debug": "2.6.7", - "doiuse": "2.6.0", - "execall": "1.0.0", - "file-entry-cache": "2.0.0", - "get-stdin": "5.0.1", - "globby": "6.1.0", - "globjoin": "0.1.4", - "html-tags": "2.0.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "known-css-properties": "0.2.0", - "lodash": "4.17.4", - "log-symbols": "1.0.2", - "mathml-tag-names": "2.0.1", - "meow": "3.7.0", - "micromatch": "2.3.11", - "normalize-selector": "0.2.0", - "pify": "2.3.0", - "postcss": "5.2.18", - "postcss-less": "0.14.0", - "postcss-media-query-parser": "0.2.3", - "postcss-reporter": "3.0.0", - "postcss-resolve-nested-selector": "0.1.1", - "postcss-scss": "0.4.1", - "postcss-selector-parser": "2.2.3", - "postcss-value-parser": "3.3.0", - "resolve-from": "3.0.0", - "specificity": "0.3.2", - "string-width": "2.1.1", - "style-search": "0.1.0", - "stylehacks": "2.3.2", - "sugarss": "0.2.0", - "svg-tags": "1.0.0", - "table": "4.0.2" + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/faye/-/faye-1.2.4.tgz", + "integrity": "sha1-l47YpY8dSB5cH5i6y4lZ3l7FxkM=", + "dev": true, + "requires": { + "asap": "2.0.6", + "csprng": "0.1.2", + "faye-websocket": "0.11.1", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "ffi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ffi/-/ffi-2.2.0.tgz", + "integrity": "sha1-vxiwRmain3EiftVoldVDCvRwQvo=", + "dev": true, + "optional": true, + "requires": { + "bindings": "1.2.1", + "debug": "2.6.9", + "nan": "2.8.0", + "ref": "1.3.5", + "ref-struct": "1.1.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/find/-/find-0.2.8.tgz", + "integrity": "sha512-7Z96U7PMb7ijrinFZka5N5DWtgziLKdO8EFJSK3AiPqiUkJRcGNofV0/N/Pbe6myimrn7JCpqn+Pvb+Xz9q0NQ==", + "dev": true, + "requires": { + "traverse-chain": "0.1.0" + } + }, + "find-node-modules": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.4.tgz", + "integrity": "sha1-tt6zzMtpnIcDdne87eLF9YYrJVA=", + "dev": true, + "requires": { + "findup-sync": "0.4.2", + "merge": "1.2.0" + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz", + "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "fizzy-ui-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.5.tgz", + "integrity": "sha1-1y3rx00snSctvLt7ABcHiX9sMhA=", + "requires": { + "desandro-matches-selector": "2.0.2" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", + "integrity": "sha1-2zRaU3jYau6x7V1VO4aawZLS9e0=", + "dev": true, + "requires": { + "async": "0.2.10", + "combined-stream": "0.0.7", + "mime": "1.2.11" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + } + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "1.1.2" + } + }, + "formidable": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz", + "integrity": "sha1-aPYzJaA15kS297s9ESQ7l2HeGzA=", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", + "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.5.4" + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gather-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", + "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", + "dev": true + }, + "geckodriver": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.2.0.tgz", + "integrity": "sha1-K9rOzlrQ4h0LBAwwipTnYi6ItKw=", + "dev": true, + "requires": { + "adm-zip": "0.4.7", + "bluebird": "3.4.6", + "got": "5.6.0", + "tar.gz": "1.0.5" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.2.tgz", + "integrity": "sha1-VV6pirhzLgwCHp4j4iGa3L45jpg=" + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.1.tgz", + "integrity": "sha512-7aelVrYqCLuVjq2kEKRTH8fXPTC0xKTkM+G7UlFkEwCXY3sFbSxvY375JoFowOAYbkaU47SrBvOefUlLZZ+6QA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "1.2.0", + "debug": "2.6.9", + "extend": "3.0.1", + "file-uri-to-path": "1.0.0", + "ftp": "0.3.10", + "readable-stream": "2.3.3" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "gherkin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.0.0.tgz", + "integrity": "sha1-lt70EZjsOQgli1Ea909lWidk0qE=", + "dev": true + }, + "gifshot": { + "version": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", + "integrity": "sha1-kWsPdnu5Q8CbkHy5LUyUgIukVu8=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "globo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/globo/-/globo-1.1.0.tgz", + "integrity": "sha1-DSYJiVXepCLrIAGxBImLChAcqvM=", + "dev": true, + "requires": { + "accessory": "1.1.0", + "is-defined": "1.0.0", + "ternary": "1.0.0" + } + }, + "gonzales-pe": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", + "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==", + "dev": true, + "requires": { + "minimist": "1.1.3" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "3.2.0" + } + }, + "got": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz", + "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-plain-obj": "1.1.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "2.0.0", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "grunt": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "dev": true, + "requires": { + "async": "0.1.22", + "coffee-script": "1.3.3", + "colors": "0.6.2", + "dateformat": "1.0.2-1.2.3", + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.1.3", + "getobject": "0.1.0", + "glob": "3.1.21", + "grunt-legacy-log": "0.1.3", + "grunt-legacy-util": "0.2.0", + "hooker": "0.2.3", + "iconv-lite": "0.2.11", + "js-yaml": "2.0.5", + "lodash": "0.9.2", + "minimatch": "0.2.14", + "nopt": "1.0.10", + "rimraf": "2.2.8", + "underscore.string": "2.2.1", + "which": "1.0.9" + }, + "dependencies": { + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "dev": true, + "requires": { + "underscore": "1.7.0", + "underscore.string": "2.4.0" + }, + "dependencies": { + "underscore.string": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", + "dev": true + } + } + }, + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "dev": true, + "requires": { + "glob": "3.2.11", + "lodash": "2.4.2" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "iconv-lite": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", + "dev": true + }, + "js-yaml": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "dev": true, + "requires": { + "argparse": "0.1.16", + "esprima": "1.0.4" + } + }, + "lodash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", + "dev": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true + } + } + }, + "grunt-contrib-clean": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz", + "integrity": "sha1-ay7ZQRfix//jLuBFeMlv5GJam20=", + "dev": true, + "requires": { + "async": "1.5.2", + "rimraf": "2.5.4" + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "file-sync-cmp": "0.1.1" + } + }, + "grunt-exec": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.7.tgz", + "integrity": "sha1-QAUf+k6wyWV+BTuV6I1ENSocLCU=", + "dev": true + }, + "grunt-legacy-log": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "dev": true, + "requires": { + "colors": "0.6.2", + "grunt-legacy-log-utils": "0.1.1", + "hooker": "0.2.3", + "lodash": "2.4.2", + "underscore.string": "2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "dev": true + } + } + }, + "grunt-legacy-log-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "dev": true, + "requires": { + "colors": "0.6.2", + "lodash": "2.4.2", + "underscore.string": "2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", + "dev": true + } + } + }, + "grunt-legacy-util": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "dev": true, + "requires": { + "async": "0.1.22", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "0.9.2", + "underscore.string": "2.2.1", + "which": "1.0.9" + }, + "dependencies": { + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "dev": true + }, + "lodash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", + "dev": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "dev": true + } + } + }, + "grunt-markdown": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/grunt-markdown/-/grunt-markdown-0.7.0.tgz", + "integrity": "sha1-BaPuNhtcxztkbp9c3SBoZFRJqmY=", + "dev": true, + "requires": { + "highlight.js": "8.4.0", + "lodash": "2.4.2", + "marked": "0.3.12" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "grunt-mkdir": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/grunt-mkdir/-/grunt-mkdir-0.1.3.tgz", + "integrity": "sha1-W3gKPBAkv805CNdxIuk5QUxuZ2w=", + "dev": true + }, + "grunt-text-replace": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/grunt-text-replace/-/grunt-text-replace-0.4.0.tgz", + "integrity": "sha1-252c5Z4v5J2id+nbwZXD4Rz7FsI=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-require": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/has-require/-/has-require-1.2.2.tgz", + "integrity": "sha1-khZ1qxMNvZdo/I2o8ajiQt+kF3Q=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "has-flag": "2.0.0" + "is-buffer": "1.1.6" } } } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "optional": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "highlight.js": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.4.0.tgz", + "integrity": "sha1-3A0FuNybEQ8TvOUsuW/R4Ma8eRw=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "http-basic": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", + "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", + "dev": true, + "requires": { + "caseless": "0.11.0", + "concat-stream": "1.5.2", + "http-response-object": "1.1.0" + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "http-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz", + "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1" + } + }, + "http-response-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-1.1.0.tgz", + "integrity": "sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1" + } + }, + "icheck": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", + "integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.15.0", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "dev": true, + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.6", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "dev": true, + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + } + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.0.1.tgz", + "integrity": "sha1-x+NWzeoiWucbNtcPLnGpK6TkJZA=", + "dev": true + }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", + "dev": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-alphabetical": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz", + "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", + "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", + "dev": true, + "requires": { + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-decimal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz", + "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=", + "dev": true + }, + "is-defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-defined/-/is-defined-1.0.0.tgz", + "integrity": "sha1-HwfKZ9Vx9ZTEsUQVpF9774j5K/U=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz", + "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-hexadecimal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz", + "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=", + "dev": true + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "dev": true, + "requires": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-running": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", + "integrity": "sha1-MKc/9cw4VOT8JUkICen1q/jeCeA=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-supported-regexp-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz", + "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz", + "integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "is-word-character": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz", + "integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isotope-layout": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.5.tgz", + "integrity": "sha512-qyZXlTaBilCJu5gxATAYskiZVa1LUCpWfs3hJLq/kFeOElLMH7RPMUk3u/+gGAl8QOgERU7zpzBM9jwrg+uEjg==", + "requires": { + "desandro-matches-selector": "2.0.2", + "fizzy-ui-utils": "2.0.5", + "get-size": "2.0.2", + "masonry-layout": "4.2.1", + "outlayer": "2.1.1" + } + }, + "isotope-packery": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isotope-packery/-/isotope-packery-2.0.0.tgz", + "integrity": "sha1-Xf0vWALiFyuQT+1GDTQoHWDbIjU=", + "requires": { + "isotope-layout": "3.0.5", + "packery": "2.1.1" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jquery": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=" + }, + "jquery-jcrop": { + "version": "0.9.13", + "resolved": "https://registry.npmjs.org/jquery-jcrop/-/jquery-jcrop-0.9.13.tgz", + "integrity": "sha1-zajJVX//xWVAAIzHtikaDsQHG/U=" + }, + "jquery-ui": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.10.4.tgz", + "integrity": "sha1-oJb+X04PKraaBYXPEEVYd/V1Br0=" + }, + "jquery-ui-touch-punch": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/jquery-ui-touch-punch/-/jquery-ui-touch-punch-0.2.3.tgz", + "integrity": "sha1-7tgiQnM7okP0az6HwYQbMIGR2mg=" + }, + "jquery.joyride": { + "version": "git+https://git@github.com/nasa-gibs/joyride.git#4806739e388e5a3df5342aea56832d0f4a4efa17" + }, + "js-base64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.1.tgz", + "integrity": "sha512-2h586r2I/CqU7z1aa1kBgWaVAXWAZK+zHnceGi/jFgn7+7VSluxYer/i3xOZVearCxxXvyDkLtTBo+OeJCA3kA==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jscrollpane": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/jscrollpane/-/jscrollpane-2.1.1.tgz", + "integrity": "sha512-2Wj8ZO1v4fmDrmbEsLceYtpv6B7QqhDz+0hf10nijlyr3JKsWeqDhTa54/jeYqORsU5HGuvzCmaboNpUFW6H6Q==", + "requires": { + "jquery": "3.2.1" + }, + "dependencies": { + "jquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" + } + } + }, + "jsdom": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", + "dev": true, + "optional": true, + "requires": { + "abab": "1.0.4", + "acorn": "2.7.0", + "acorn-globals": "1.0.9", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "2.0.1", + "whatwg-url-compat": "0.6.5", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", + "dev": true, + "optional": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "optional": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "optional": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonfilter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz", + "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=", + "dev": true, + "requires": { + "JSONStream": "0.8.4", + "minimist": "1.2.0", + "stream-combiner": "0.2.2", + "through2": "0.6.5" + }, + "dependencies": { + "JSONStream": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", + "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": "2.3.8" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "through": "2.3.8" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kew": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.5.0.tgz", + "integrity": "sha1-7OEctdjQGoH4zoBMjQu6BuayXKI=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "known-css-properties": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz", + "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==", + "dev": true + }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "ldjson-stream": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", + "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", + "dev": true, + "requires": { + "split2": "0.2.1", + "through2": "0.6.5" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true, + "requires": { + "astw": "2.2.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=" + }, + "lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", + "dev": true + }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._baseclone": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "dev": true, + "requires": { + "lodash._arraycopy": "3.0.0", + "lodash._arrayeach": "3.0.0", + "lodash._baseassign": "3.2.0", + "lodash._basefor": "3.0.3", + "lodash.isarray": "3.0.4", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", + "dev": true + }, + "lodash._baseiteratee": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", + "integrity": "sha1-NKm1VDVycnw9sueO2uPA6eZr0QI=", + "dev": true, + "requires": { + "lodash._stringtopath": "4.8.0" + } + }, + "lodash._basetostring": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", + "integrity": "sha1-kyfJ3FFYhmt/pLnUL0Y45XZt2d8=", + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", + "dev": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createset": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._stack": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lodash._stack/-/lodash._stack-4.1.3.tgz", + "integrity": "sha1-dRqnbBuWSwR+dtFPxyoJP8teLdA=", + "dev": true + }, + "lodash._stringtopath": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", + "integrity": "sha1-lBvPDmQmbl/B1m/tCmlZVExXaCQ=", + "dev": true, + "requires": { + "lodash._basetostring": "4.12.0" + } + }, + "lodash.clone": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", + "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", + "dev": true, + "requires": { + "lodash._baseclone": "3.3.0", + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.defaultsdeep": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.3.2.tgz", + "integrity": "sha1-bBpYbmxWR7DmTi15gUG4g2FYvoo=", + "dev": true, + "requires": { + "lodash._baseclone": "4.5.7", + "lodash._stack": "4.1.3", + "lodash.isplainobject": "4.0.6", + "lodash.keysin": "4.2.0", + "lodash.mergewith": "4.6.0", + "lodash.rest": "4.0.5" + }, + "dependencies": { + "lodash._baseclone": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", + "integrity": "sha1-zkKt4IOE711i+nfDD2GkbmhvhDQ=", + "dev": true + } + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.keysin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-4.2.0.tgz", + "integrity": "sha1-jMP7NcLZSsxEOhhj4C+kB5nqbyg=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "lodash.rest": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.5.tgz", + "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.uniqby": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", + "integrity": "sha1-o6F7v2LutiQPSRhG6XwcTipeHiE=", + "dev": true, + "requires": { + "lodash._baseiteratee": "4.7.0", + "lodash._baseuniq": "4.6.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "longest-streak": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "markdown-escapes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz", + "integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg=", + "dev": true + }, + "markdown-table": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.1.tgz", + "integrity": "sha1-Sz3ToTPRUYuO8NvHCb8qG0gkvIw=", + "dev": true + }, + "marked": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz", + "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==", + "dev": true + }, + "masonry-layout": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.1.tgz", + "integrity": "sha512-ngJmxszn+JSKreNnrwkjks9OUuwVL2JR8T4iVeE3+g+sJjyoxTLdUNRbYONA25y+nWZn+WZI2GvThRAV+z5Duw==", + "requires": { + "get-size": "2.0.2", + "outlayer": "2.1.1" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "mathml-tag-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz", + "integrity": "sha1-jUEmgWi/htEQK5gQnijlMeejRXg=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mdast-util-compact": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz", + "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=", + "dev": true, + "requires": { + "unist-util-modify-children": "1.1.1", + "unist-util-visit": "1.3.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz", + "integrity": "sha1-J3yQ+L7zlwlkWoNxxRw7bGSOBow=", + "dev": true + }, + "mgrs": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-0.0.0.tgz", + "integrity": "sha1-qqK0gpMXv4ERipYNMlbgbdlnS40=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "is-plain-obj": "1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mkpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", + "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", + "dev": true + }, + "mocha-nightwatch": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mocha-nightwatch/-/mocha-nightwatch-3.2.2.tgz", + "integrity": "sha1-kby5s73gV912d8eBJeSR5Y1mZHw=", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.5", + "glob": "7.0.5", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "glob": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, - "grunt-text-replace": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/grunt-text-replace/-/grunt-text-replace-0.4.0.tgz", - "integrity": "sha1-252c5Z4v5J2id+nbwZXD4Rz7FsI=", - "dev": true - }, - "gruntify-eslint": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gruntify-eslint/-/gruntify-eslint-4.0.0.tgz", - "integrity": "sha512-wEa2WjMGVDzQbq1QmOiDX51/CfaAIS5xx1oSKIjfWVLl/fYbV7PtfWsUhuaQrPIy1se4Crpg3kZFZndw02l16g==", - "dev": true, - "requires": { - "eslint": "4.10.0" - } - }, - "gzip-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", - "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "dev": true, "requires": { - "browserify-zlib": "0.1.4", - "concat-stream": "1.6.0" - } - }, - "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - } + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "defined": "1.0.0", + "detective": "4.7.1", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" } }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + "moment": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.13.0.tgz", + "integrity": "sha1-JBYtmVIebUD5muaTnoBtITnqrFI=", + "dev": true }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } + "mori": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/mori/-/mori-0.3.2.tgz", + "integrity": "sha1-GlPaFlKH877wyrYjmMSTG+zoCj8=", + "dev": true }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "mothership": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mothership/-/mothership-0.2.0.tgz", + "integrity": "sha1-k9SKL7w+UOKl/I7VhvW8RMZfmpk=", "dev": true, "requires": { - "function-bind": "1.1.1" + "find-parent-dir": "0.3.0" } }, - "has-ansi": { + "mout": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", + "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", + "dev": true + }, + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "has-binary2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", - "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", + "multi-glob": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multi-glob/-/multi-glob-1.0.1.tgz", + "integrity": "sha1-5n0qtEKdJ2BubrTbNQlK/JF4h1A=", + "dev": true, "requires": { - "isarray": "2.0.1" + "async": "1.5.2", + "glob": "5.0.15", + "lodash": "3.10.1" }, "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true } } }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "hasha": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", - "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "is-stream": "1.1.0", - "pinkie-promise": "2.0.1" + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "any-promise": "1.3.0", + "object-assign": "4.1.1", + "thenify-all": "1.6.0" } }, - "highlight.js": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.4.0.tgz", - "integrity": "sha1-3A0FuNybEQ8TvOUsuW/R4Ma8eRw=", + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "dev": true }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", "dev": true }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "nightwatch": { + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-0.9.19.tgz", + "integrity": "sha1-S9l1cnPTC4RfBIR6mLcb6bt8Szs=", "dev": true, - "optional": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "chai-nightwatch": "0.1.1", + "ejs": "2.5.7", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "4.3.2", + "minimatch": "3.0.3", + "mkpath": "1.0.0", + "mocha-nightwatch": "3.2.2", + "optimist": "0.6.1", + "proxy-agent": "2.0.0", + "q": "1.4.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "dev": true, - "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "brace-expansion": "1.1.8" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true } } }, - "http-basic": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", - "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", + "nightwatch-cucumber": { + "version": "8.2.14", + "resolved": "https://registry.npmjs.org/nightwatch-cucumber/-/nightwatch-cucumber-8.2.14.tgz", + "integrity": "sha1-7su3ONKzVVZnll6Nl6yCVdbJ6P8=", "dev": true, "requires": { - "caseless": "0.11.0", - "concat-stream": "1.6.0", - "http-response-object": "1.1.0" + "co": "4.6.0", + "combine-errors": "3.0.3", + "glob": "7.1.2", + "lodash.clonedeep": "4.5.0", + "mkdirp": "0.5.1", + "pify": "3.0.0", + "tmp": "0.0.33" }, "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", - "dev": true - }, - "http-proxy-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz", - "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.7", - "extend": "3.0.1" + "lower-case": "1.1.4" } }, - "http-response-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-1.1.0.tgz", - "integrity": "sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } }, - "https-proxy-agent": { + "node-status-codes": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true, - "requires": { - "agent-base": "2.1.1", - "debug": "2.6.7", - "extend": "3.0.1" - } - }, - "icheck": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz", - "integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=" - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" - }, - "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", "dev": true }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "nodemon": { + "version": "1.14.11", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.14.11.tgz", + "integrity": "sha512-323uPopdzYcyDR2Ze1UOLF9zocwoQEyGPiKaLm/Y8Mbfjylt/YueAJUVHqox+vgG8TqZqZApcHv5lmUvrn/KQw==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.0.5", - "figures": "2.0.0", - "lodash": "4.15.0", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "chokidar": "2.0.0", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.5.0", + "touch": "3.1.0", + "undefsafe": "2.0.1", + "update-notifier": "2.3.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "color-convert": "1.9.0" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-extglob": "2.1.1" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" } } } }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.0.1.tgz", - "integrity": "sha1-x+NWzeoiWucbNtcPLnGpK6TkJZA=", - "dev": true - }, - "ipaddr.js": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", - "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", - "dev": true - }, - "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-generator": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz", - "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.2.2" + "abbrev": "1.1.1" } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" } }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "requires": { + "remove-trailing-separator": "1.1.0" + } }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "has": "1.0.1" + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true + "nouislider": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-7.0.10.tgz", + "integrity": "sha1-wmsPHZLooFqqlLqhX4Paiyj+pUE=" }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "npm-run-all": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", + "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", "dev": true, "requires": { - "tryit": "1.0.3" + "ansi-styles": "3.2.0", + "chalk": "2.3.0", + "cross-spawn": "5.1.0", + "memorystream": "0.3.1", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "read-pkg": "3.0.0", + "shell-quote": "1.6.1", + "string.prototype.padend": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } }, - "is-running": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", - "integrity": "sha1-MKc/9cw4VOT8JUkICen1q/jeCeA=", - "dev": true + "npm-watch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.3.0.tgz", + "integrity": "sha512-w/czxbmI2B/L7eotpo8wfE5u92X6Oguy+L3ECgfUUaERNSAtIHR0djYqzGVD7BakCH+HE3hHoDxV798rug/A6g==", + "dev": true, + "requires": { + "nodemon": "1.14.11", + "through2": "2.0.3" + } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "npmconf": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", + "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", + "dev": true, + "requires": { + "config-chain": "1.1.11", + "inherits": "2.0.3", + "ini": "1.3.5", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.3.3", + "osenv": "0.1.4", + "semver": "4.3.6", + "uid-number": "0.0.5" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } }, - "is-supported-regexp-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz", - "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=", + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "is-symbol": { + "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true, + "optional": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, "requires": { - "isarray": "1.0.0" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } } } }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "isotope-layout": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/isotope-layout/-/isotope-layout-3.0.4.tgz", - "integrity": "sha1-8+2NFfjPs4ULEXd/HKduCou1tzo=", - "requires": { - "desandro-matches-selector": "2.0.2", - "fizzy-ui-utils": "2.0.5", - "get-size": "2.0.2", - "masonry-layout": "4.2.0", - "outlayer": "2.1.1" - } - }, - "isotope-packery": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isotope-packery/-/isotope-packery-2.0.0.tgz", - "integrity": "sha1-Xf0vWALiFyuQT+1GDTQoHWDbIjU=", - "requires": { - "isotope-layout": "3.0.4", - "packery": "2.1.1" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "js-base64": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", - "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==", + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "argparse": "0.1.16", - "esprima": "1.0.4" + "isobject": "3.0.1" }, "dependencies": { - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, "requires": { - "xmlcreate": "1.0.2" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "jschardet": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz", - "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", - "dev": true - }, - "jsdoc": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.4.tgz", - "integrity": "sha512-VmTw0J+2L16IxAe0JSDSAcH0F+DbZxaj8wN1AjHtKMQU/hO0ciIl5ZE93XqrrFIbknobuqHKJCXZj6+Hk57MjA==", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { - "babylon": "7.0.0-beta.30", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.6", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", - "underscore": "1.8.3" + "isobject": "3.0.1" }, "dependencies": { - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "ol": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/ol/-/ol-4.3.4.tgz", + "integrity": "sha512-ut0keMVSrfTR6bpbME7c3AU044Y+G6zwgvSIgcVhDzSdEqc94c5ATJxlsR34CnB4A4yIriFzmBYXPfXRjTPL9Q==", "requires": { - "jsonify": "0.0.0" + "@mapbox/vector-tile": "1.3.0", + "pbf": "3.0.5", + "pixelworks": "1.1.0", + "rbush": "2.0.1" } }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "onecolor": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", + "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=", "dev": true }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, "requires": { - "graceful-fs": "4.1.11" + "mimic-fn": "1.1.0" } }, - "jsonfilter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz", - "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=", + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "JSONStream": "0.8.4", - "minimist": "1.2.0", - "stream-combiner": "0.2.2", - "through2": "0.6.5" + "minimist": "0.0.10", + "wordwrap": "0.0.2" }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" - } } } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { - "assert-plus": { + "wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true } } }, - "junk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-2.1.0.tgz", - "integrity": "sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=" - }, - "kew": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.5.0.tgz", - "integrity": "sha1-7OEctdjQGoH4zoBMjQu6BuayXKI=", + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "ora": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.3.0.tgz", + "integrity": "sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro=", + "dev": true, "requires": { - "is-buffer": "1.1.6" + "chalk": "1.1.3", + "cli-cursor": "2.1.0", + "cli-spinners": "1.1.0", + "log-symbols": "1.0.2" } }, - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, "requires": { - "graceful-fs": "4.1.11" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, - "known-css-properties": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz", - "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA==", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, - "lazystream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "integrity": "sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA=", + "outlayer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", + "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", + "requires": { + "ev-emitter": "1.1.1", + "fizzy-ui-utils": "2.0.5", + "get-size": "2.0.2" + } + }, + "outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", "dev": true, "requires": { - "readable-stream": "1.0.34" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } + "shell-quote": "1.6.1" } }, - "ldjson-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", - "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "split2": "0.2.1", - "through2": "0.6.5" + "p-try": "1.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "p-limit": "1.2.0" } }, - "livereload-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", - "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "pac-proxy-agent": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz", + "integrity": "sha512-QBELCWyLYPgE2Gj+4wUEiMscHrQ8nRPBzYItQNOHWavwBt25ohZHQC4qnd5IszdVVrFbLsQ+dPkm6eqdjJAmwQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "agent-base": "2.1.1", + "debug": "2.6.9", + "extend": "3.0.1", + "get-uri": "2.0.1", + "http-proxy-agent": "1.0.0", + "https-proxy-agent": "1.0.0", + "pac-resolver": "2.0.0", + "raw-body": "2.3.2", + "socks-proxy-agent": "2.1.1" } }, - "locate-path": { + "pac-resolver": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-2.0.0.tgz", + "integrity": "sha1-mbiNLxk/ve78HJpSnB8yYKtSd80=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "co": "3.0.6", + "degenerator": "1.0.4", + "ip": "1.0.1", + "netmask": "1.0.6", + "thunkify": "2.1.2" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "co": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/co/-/co-3.0.6.tgz", + "integrity": "sha1-FEXyJsXrlWE45oyawwFn6n0ua9o=", "dev": true } } }, - "lodash": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", - "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=" - }, - "lodash._arraycopy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", - "dev": true - }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.5.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + } } }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "packery": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/packery/-/packery-2.1.1.tgz", + "integrity": "sha1-7DcR6WVita4gZkHgaFT4mQZKG1U=", + "requires": { + "get-size": "2.0.2", + "outlayer": "2.1.1" + } + }, + "pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", "dev": true, "requires": { - "lodash._arraycopy": "3.0.0", - "lodash._arrayeach": "3.0.0", - "lodash._baseassign": "3.2.0", - "lodash._basefor": "3.0.3", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" + "repeat-string": "1.6.1" } }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "0.11.15" + } }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", - "dev": true + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } }, - "lodash._baseiteratee": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", - "integrity": "sha1-NKm1VDVycnw9sueO2uPA6eZr0QI=", + "parse-entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", + "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", "dev": true, "requires": { - "lodash._stringtopath": "4.8.0" + "character-entities": "1.2.1", + "character-entities-legacy": "1.1.1", + "character-reference-invalid": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-decimal": "1.0.1", + "is-hexadecimal": "1.0.1" } }, - "lodash._basetostring": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", - "integrity": "sha1-kyfJ3FFYhmt/pLnUL0Y45XZt2d8=", - "dev": true + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, - "lodash._baseuniq": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", - "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" + "error-ex": "1.3.1" } }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, - "lodash._createset": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", - "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true, + "optional": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "patch-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/patch-text/-/patch-text-1.0.2.tgz", + "integrity": "sha1-S/NuZeUXM9bpjwz2LgkDTaoDSKw=", "dev": true }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, - "lodash._stack": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lodash._stack/-/lodash._stack-4.1.3.tgz", - "integrity": "sha1-dRqnbBuWSwR+dtFPxyoJP8teLdA=", + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "lodash._stringtopath": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", - "integrity": "sha1-lBvPDmQmbl/B1m/tCmlZVExXaCQ=", + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "lodash._basetostring": "4.12.0" + "pinkie-promise": "2.0.1" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "lodash.clone": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", - "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", - "dev": true, - "requires": { - "lodash._baseclone": "3.3.0", - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9" - } + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "pify": "2.3.0" } }, - "lodash.defaultsdeep": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.3.2.tgz", - "integrity": "sha1-bBpYbmxWR7DmTi15gUG4g2FYvoo=", + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "lodash._baseclone": "4.5.7", - "lodash._stack": "4.1.3", - "lodash.isplainobject": "4.0.6", - "lodash.keysin": "4.2.0", - "lodash.mergewith": "4.6.0", - "lodash.rest": "4.0.5" - }, - "dependencies": { - "lodash._baseclone": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", - "integrity": "sha1-zkKt4IOE711i+nfDD2GkbmhvhDQ=", - "dev": true - } + "through": "2.3.8" } }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha1-JPD6LL6xblxWpZAbt+nCrAyAWb4=", + "requires": { + "ieee754": "1.1.8", + "resolve-protobuf-schema": "2.0.0" + } }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, - "lodash.keysin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-4.2.0.tgz", - "integrity": "sha1-jMP7NcLZSsxEOhhj4C+kB5nqbyg=", + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "lodash.mergewith": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", - "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", - "dev": true + "perfect-scrollbar": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.8.1.tgz", + "integrity": "sha512-RNC5tX/JMRYR+qVdJTEAWnRxw0Yf9lvbO8lTuAOvgDODkiA8lveTSkvrNMhmaGKEyimJpJl+myb/syVS9YyPuw==" }, - "lodash.rest": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.5.tgz", - "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo=", - "dev": true + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true }, - "lodash.uniqby": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", - "integrity": "sha1-o6F7v2LutiQPSRhG6XwcTipeHiE=", + "phantom-proxy": { + "version": "0.1.792", + "resolved": "https://registry.npmjs.org/phantom-proxy/-/phantom-proxy-0.1.792.tgz", + "integrity": "sha1-MGkx7W6xy6h1SYirKA/TObcRtWs=", "dev": true, "requires": { - "lodash._baseiteratee": "4.7.0", - "lodash._baseuniq": "4.6.0" + "colors": "0.6.2", + "event-stream": "3.0.20", + "express": "3.0.6", + "form-data": "0.0.10", + "mime": "1.2.11", + "q": "0.8.12", + "socket.io": "0.9.19", + "underscore": "1.4.4" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "express": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/express/-/express-3.0.6.tgz", + "integrity": "sha1-0nT8uGi5V4i/SvYhaNddE/132LQ=", + "dev": true, + "requires": { + "buffer-crc32": "0.1.1", + "commander": "0.6.1", + "connect": "2.7.2", + "cookie": "0.0.5", + "cookie-signature": "0.0.1", + "debug": "2.6.9", + "fresh": "0.1.0", + "methods": "0.0.1", + "mkdirp": "0.3.3", + "range-parser": "0.0.4", + "send": "0.1.0" + } + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "dev": true + }, + "mkdirp": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz", + "integrity": "sha1-WV4lHBNww6aLqyE20ONIuBBa3xM=", + "dev": true + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true + } } }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "phantomjs": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-2.1.7.tgz", + "integrity": "sha1-xpEPZ5NcNyhbYRQyn8LyfV8+MTQ=", "dev": true, "requires": { - "chalk": "1.1.3" + "extract-zip": "1.5.0", + "fs-extra": "0.26.7", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.67.0", + "request-progress": "2.0.1", + "which": "1.2.14" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.15.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "form-data": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", + "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", + "dev": true, + "requires": { + "async": "2.6.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1", + "path-is-absolute": "1.0.1", + "rimraf": "2.5.4" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.13.0", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "qs": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz", + "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=", + "dev": true + }, + "request": { + "version": "2.67.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", + "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "aws-sign2": "0.6.0", + "bl": "1.0.3", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "1.0.1", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "5.2.1", + "stringstream": "0.0.5", + "tough-cookie": "2.2.2", + "tunnel-agent": "0.4.3" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "hoek": "2.16.3" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "tough-cookie": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", + "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } } } }, - "lolex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { - "js-tokens": "3.0.2" + "pinkie": "2.0.4" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "pipetteur": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz", + "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "onecolor": "3.0.5", + "synesthesia": "1.0.1" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true + "pixelworks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pixelworks/-/pixelworks-1.1.0.tgz", + "integrity": "sha1-Hwla1I3Ki/ihyCWOAJIDGkTyLKU=" }, - "lowercase-keys": { + "pkg-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", "dev": true }, - "magic-string": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", - "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, "requires": { - "vlq": "0.2.3" + "irregular-plurals": "1.4.0" } }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "policyfile": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", + "integrity": "sha1-1rgurZiueeviKOLa9ZAzEeyYLk0=", "dev": true }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=" - }, - "masonry-layout": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.0.tgz", - "integrity": "sha1-Q4Nca24Ncu/ywxoRjIAAzMxKuWU=", + "posix-argv-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/posix-argv-parser/-/posix-argv-parser-2.0.0.tgz", + "integrity": "sha1-w4TbMZ029+O7VLyJ8PkQX/DWWl0=", + "dev": true, "requires": { - "get-size": "2.0.2", - "outlayer": "2.1.1" + "when": "3.7.8" } }, - "mathml-tag-names": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz", - "integrity": "sha1-jUEmgWi/htEQK5gQnijlMeejRXg=", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "maxmin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", - "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { - "chalk": "1.1.3", - "figures": "1.7.0", - "gzip-size": "1.0.0", - "pretty-bytes": "1.0.4" + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" }, "dependencies": { "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "color-convert": "1.9.1" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "has-flag": "2.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-streams": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.2.tgz", - "integrity": "sha1-Jz/3d6tg/sWZsRY1UlUoLMosUMI=", + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "readable-stream": "1.0.34" + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" } } } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "postcss-cli": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-4.1.1.tgz", + "integrity": "sha1-uUvY//u3rB9i8mB+ePyTl/f2Ol0=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "chalk": "2.3.0", + "chokidar": "1.7.0", + "dependency-graph": "0.5.2", + "fs-extra": "4.0.3", + "get-stdin": "5.0.1", + "globby": "6.1.0", + "ora": "1.3.0", + "postcss": "6.0.16", + "postcss-load-config": "1.2.0", + "postcss-reporter": "5.0.0", + "pretty-hrtime": "1.0.3", + "read-cache": "1.0.0", + "yargs": "8.0.2" }, "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "color-convert": "1.9.1" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz", - "integrity": "sha1-J3yQ+L7zlwlkWoNxxRw7bGSOBow=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "minipass": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", - "integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", - "requires": { - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.0.4.tgz", - "integrity": "sha512-sN4U9tIJtBRwKbwgFh9qJfrPIQ/GGTRr1MGqkgOeMTLy8/lM0FcWU//FqlnZ3Vb7gJ+Mxh3FOg1EklibdajbaQ==", - "requires": { - "minipass": "2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" - }, - "mocha-nightwatch": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mocha-nightwatch/-/mocha-nightwatch-3.2.2.tgz", - "integrity": "sha1-kby5s73gV912d8eBJeSR5Y1mZHw=", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.5", - "glob": "7.0.5", - "growl": "1.9.2", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "number-is-nan": "1.0.1" } }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "ms": "0.7.1" + "graceful-fs": "4.1.11" } }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "glob": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "has-flag": "2.0.0" } }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { "has-flag": "1.0.0" @@ -7276,1183 +11528,1042 @@ } } }, - "moment": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.13.0.tgz", - "integrity": "sha1-JBYtmVIebUD5muaTnoBtITnqrFI=", - "dev": true - }, - "mori": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/mori/-/mori-0.2.1.tgz", - "integrity": "sha1-rrmoe5y/VWkoDH7GoRDaCImymLE=", - "dev": true - }, - "mout": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.0.0.tgz", - "integrity": "sha1-m98dSvV9ZtR8s1OmM1oygQmOFQE=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multi-glob": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/multi-glob/-/multi-glob-0.4.0.tgz", - "integrity": "sha1-GqnQhdljeX8Xr5JziEDthDqY0HA=", - "dev": true, - "requires": { - "async": "2.5.0", - "glob": "7.1.2", - "lodash": "4.15.0" - } - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "object-assign": "4.1.1", - "thenify-all": "1.6.0" - } - }, - "nan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", - "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true - }, - "nightwatch": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-0.9.16.tgz", - "integrity": "sha1-xKw+xxGw/wR8PcqcZVc2XuI2UZ8=", + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "chai-nightwatch": "0.1.1", - "ejs": "0.8.3", - "lodash.clone": "3.0.3", - "lodash.defaultsdeep": "4.3.2", - "minimatch": "3.0.3", - "mkpath": "1.0.0", - "mocha-nightwatch": "3.2.2", - "optimist": "0.6.1", - "proxy-agent": "2.0.0", - "q": "1.4.1" + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" }, "dependencies": { - "ejs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.3.tgz", - "integrity": "sha1-24qsR/+Ap9+CtMgsEm/olwhwYm8=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "mkpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", - "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", - "dev": true + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, - "nightwatch-cucumber": { - "version": "8.2.8", - "resolved": "https://registry.npmjs.org/nightwatch-cucumber/-/nightwatch-cucumber-8.2.8.tgz", - "integrity": "sha1-Xq24VSvfSBlomsoli69C6ekbs6E=", + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "co": "4.6.0", - "combine-errors": "3.0.3", - "glob": "7.1.2", - "lodash.clonedeep": "4.5.0", - "mkdirp": "0.5.1", - "pify": "3.0.0", - "tmp": "0.0.33" + "postcss": "5.2.18" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" } } } }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1.1.1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.0.3", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true - }, - "npm-run-all": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.1.tgz", - "integrity": "sha512-qrmqqaJa+REbzUTIL/mHfTdgwz+gL1xUezY/ueyLa7GISZ4T3h0CH8D2r6AaZdCYN2unu7PzspP0ofpXla1ftg==", + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "chalk": "2.3.0", - "cross-spawn": "5.1.0", - "memory-streams": "0.1.2", - "minimatch": "3.0.4", - "ps-tree": "1.1.0", - "read-pkg": "2.0.0", - "shell-quote": "1.6.1", - "string.prototype.padend": "3.0.0" + "postcss": "5.2.18" }, "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "color-convert": "1.9.0" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "has-flag": "1.0.0" } } } }, - "npmconf": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz", - "integrity": "sha1-ZmBqSnNvHnegWaoHGnnJSreBhTo=", + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "config-chain": "1.1.11", - "inherits": "2.0.3", - "ini": "1.3.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.3.3", - "osenv": "0.1.4", - "semver": "4.3.6", - "uid-number": "0.0.5" + "postcss": "5.2.18" }, "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "wrappy": "1.0.2" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onecolor": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.4.tgz", - "integrity": "sha1-daRvgNpseqpbTarhekcZi9llJJQ=", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, - "openlayers": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/openlayers/-/openlayers-4.3.1.tgz", - "integrity": "sha512-tqbvTmf9ed4NlEo9D1NG1n5bApEOYCMYrGXRQTemhbYH4rl4dXvIZ0LJDMpuueYzQQN6Zph4a+psf2rvnSSqUQ==", - "requires": { - "@mapbox/vector-tile": "1.3.0", - "async": "2.5.0", - "closure-util": "1.22.0", - "fs-extra": "4.0.1", - "jsdoc": "3.5.4", - "nomnom": "1.8.1", - "pbf": "3.0.5", - "pixelworks": "1.1.0", - "rbush": "2.0.1", - "rollup": "0.47.6", - "rollup-plugin-cleanup": "1.0.1", - "rollup-plugin-commonjs": "8.2.6", - "rollup-plugin-node-resolve": "3.0.0", - "temp": "0.8.3", - "walk": "2.3.9" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "postcss": "5.2.18" }, "dependencies": { - "wordwrap": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true - } - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha1-KYY7beEOpdrf/8rfoNcokHOH6aI=", - "requires": { - "ev-emitter": "1.1.1", - "fizzy-ui-utils": "2.0.5", - "get-size": "2.0.2" - } - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.1.0" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "pac-proxy-agent": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-1.1.0.tgz", - "integrity": "sha512-QBELCWyLYPgE2Gj+4wUEiMscHrQ8nRPBzYItQNOHWavwBt25ohZHQC4qnd5IszdVVrFbLsQ+dPkm6eqdjJAmwQ==", + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.7", - "extend": "3.0.1", - "get-uri": "2.0.1", - "http-proxy-agent": "1.0.0", - "https-proxy-agent": "1.0.0", - "pac-resolver": "2.0.0", - "raw-body": "2.1.7", - "socks-proxy-agent": "2.1.1" + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "pac-resolver": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-2.0.0.tgz", - "integrity": "sha1-mbiNLxk/ve78HJpSnB8yYKtSd80=", + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "co": "3.0.6", - "degenerator": "1.0.4", - "ip": "1.0.1", - "netmask": "1.0.6", - "thunkify": "2.1.2" + "postcss": "5.2.18", + "uniqid": "4.1.1" }, "dependencies": { - "co": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/co/-/co-3.0.6.tgz", - "integrity": "sha1-FEXyJsXrlWE45oyawwFn6n0ua9o=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, - "packery": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/packery/-/packery-2.1.1.tgz", - "integrity": "sha1-7DcR6WVita4gZkHgaFT4mQZKG1U=", - "requires": { - "get-size": "2.0.2", - "outlayer": "2.1.1" - } - }, - "pad-right": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", - "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", + "postcss-html": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.12.0.tgz", + "integrity": "sha512-KxKUpj7AY7nlCbLcTOYxdfJnGE7QFAfU2n95ADj1Q90RM/pOLdz8k3n4avOyRFs7MDQHcRzJQWM1dehCwJxisQ==", "dev": true, "requires": { - "repeat-string": "1.6.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "paperboy": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/paperboy/-/paperboy-0.0.5.tgz", - "integrity": "sha1-D/NSBMUyKJ8BVrV3RW5vWB7TSLw=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "htmlparser2": "3.9.2", + "remark": "8.0.0", + "unist-util-find-all-after": "1.0.1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "postcss-import": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.0.0.tgz", + "integrity": "sha1-qWLi34LTvFptpqOGhBdHIE9B71s=", "dev": true, "requires": { - "error-ex": "1.3.1" + "postcss": "6.0.16", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.5.0" } }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "postcss-less": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", + "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", + "dev": true, "requires": { - "better-assert": "1.0.2" + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, "requires": { - "better-assert": "1.0.2" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", "dev": true, "requires": { - "pify": "2.3.0" + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" } }, - "pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=", + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { - "through": "2.3.8" - } - }, - "pbf": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.0.5.tgz", - "integrity": "sha1-JPD6LL6xblxWpZAbt+nCrAyAWb4=", - "requires": { - "ieee754": "1.1.8", - "resolve-protobuf-schema": "2.0.0" + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "perfect-scrollbar": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.7.1.tgz", - "integrity": "sha1-DCVvucXO5AHWCimWh6P5phSH4NU=" - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" - }, - "phantom-proxy": { - "version": "0.1.792", - "resolved": "https://registry.npmjs.org/phantom-proxy/-/phantom-proxy-0.1.792.tgz", - "integrity": "sha1-MGkx7W6xy6h1SYirKA/TObcRtWs=", + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "colors": "0.6.2", - "event-stream": "3.0.20", - "express": "3.0.6", - "form-data": "0.0.10", - "mime": "1.2.11", - "q": "0.8.12", - "socket.io": "0.9.19", - "underscore": "1.4.4" + "postcss": "5.2.18" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "base64id": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "combined-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "delayed-stream": "0.0.5" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "cookie": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz", - "integrity": "sha1-+az521frdWjJ/MWWJWt7si4wfIE=", - "dev": true + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } }, - "delayed-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "express": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/express/-/express-3.0.6.tgz", - "integrity": "sha1-0nT8uGi5V4i/SvYhaNddE/132LQ=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "buffer-crc32": "0.1.1", - "commander": "0.6.1", - "connect": "2.7.2", - "cookie": "0.0.5", - "cookie-signature": "0.0.1", - "debug": "2.6.7", - "fresh": "0.1.0", - "methods": "0.0.1", - "mkdirp": "0.3.3", - "range-parser": "0.0.4", - "send": "0.1.0" + "has-flag": "1.0.0" } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "form-data": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.0.10.tgz", - "integrity": "sha1-2zRaU3jYau6x7V1VO4aawZLS9e0=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "async": "0.2.10", - "combined-stream": "0.0.7", - "mime": "1.2.11" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "fresh": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz", - "integrity": "sha1-A+SwF4Qk5MLV0ZpU2IFM3JeTSFA=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "mime": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "mkdirp": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz", - "integrity": "sha1-WV4lHBNww6aLqyE20ONIuBBa3xM=", - "dev": true + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } }, - "q": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/q/-/q-0.8.12.tgz", - "integrity": "sha1-kWKpHhGBnEvNp9oVz1/vqtB3iCM=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "range-parser": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "send": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", - "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, - "requires": { - "debug": "2.6.7", - "fresh": "0.1.0", - "mime": "1.2.6", - "range-parser": "0.0.4" - }, - "dependencies": { - "mime": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", - "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", - "dev": true - } + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "socket.io": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.19.tgz", - "integrity": "sha1-SQu1/Q3FTPAC7gTmf638Q7hIo48=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "base64id": "0.1.0", - "policyfile": "0.0.4", - "redis": "0.7.3", - "socket.io-client": "0.9.16" + "has-flag": "1.0.0" } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "socket.io-client": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", - "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "active-x-obfuscator": "0.0.1", - "uglify-js": "1.2.5", - "ws": "0.4.32", - "xmlhttprequest": "1.4.2" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "uglify-js": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz", - "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", - "dev": true - }, - "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "ws": { - "version": "0.4.32", - "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", - "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "commander": "2.1.0", - "nan": "1.0.0", - "options": "0.0.6", - "tinycolor": "0.0.1" - }, - "dependencies": { - "commander": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", - "dev": true - } + "has-flag": "1.0.0" } - }, - "xmlhttprequest": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", - "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA=", - "dev": true } } }, - "phantomjs": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-2.1.7.tgz", - "integrity": "sha1-xpEPZ5NcNyhbYRQyn8LyfV8+MTQ=", + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "extract-zip": "1.5.0", - "fs-extra": "0.26.7", - "hasha": "2.2.0", - "kew": "0.7.0", - "progress": "1.1.8", - "request": "2.67.0", - "request-progress": "2.0.1", - "which": "1.2.14" + "postcss": "5.2.18" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.5.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, - "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.1" + "has-flag": "1.0.0" } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.1", - "pinkie-promise": "2.0.1" + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "has-flag": "1.0.0" } - }, - "kew": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", - "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "qs": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz", - "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "request": { - "version": "2.67.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", - "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "aws-sign2": "0.6.0", - "bl": "1.0.3", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "5.2.1", - "stringstream": "0.0.5", - "tough-cookie": "2.2.2", - "tunnel-agent": "0.4.3" + "has-flag": "1.0.0" } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "throttleit": "1.0.0" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "has-flag": "1.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "tough-cookie": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", - "dev": true + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "isexe": "2.0.0" + "has-flag": "1.0.0" } } } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pipetteur": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz", - "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", - "dev": true, - "requires": { - "onecolor": "3.0.4", - "synesthesia": "1.0.1" - } - }, - "pixelworks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pixelworks/-/pixelworks-1.1.0.tgz", - "integrity": "sha1-Hwla1I3Ki/ihyCWOAJIDGkTyLKU=" - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "platform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.0.0.tgz", - "integrity": "sha1-XMxFrd4M6iyCAWdcZX5wyf+HOkk=", - "dev": true - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "1.4.0" - } - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "policyfile": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", - "integrity": "sha1-1rgurZiueeviKOLa9ZAzEeyYLk0=", - "dev": true - }, - "posix-argv-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/posix-argv-parser/-/posix-argv-parser-1.0.2.tgz", - "integrity": "sha1-9D2zPmKpT4DZRsnezOvaAXbFvnY=", + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "when": "https://github.com/cujojs/when/tarball/1.8.1" + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==", + "postcss-reporter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", + "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", "dev": true, "requires": { "chalk": "2.3.0", - "source-map": "0.6.1", - "supports-color": "4.5.0" + "lodash": "4.17.4", + "log-symbols": "2.1.0", + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -8461,7 +12572,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -8475,56 +12586,99 @@ "supports-color": "4.5.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-less": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", - "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", - "dev": true, - "requires": { - "postcss": "5.2.18" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "log-symbols": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.1.0.tgz", + "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "chalk": "2.3.0" } }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", + "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", + "dev": true, + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-sass": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.2.0.tgz", + "integrity": "sha512-cUmYzkP747fPCQE6d+CH2l1L4VSyIlAzZsok3HPjb5Gzsq3jE+VjpAdGlPsnQ310WKWI42sw+ar0UNN59/f3hg==", + "dev": true, + "requires": { + "gonzales-pe": "4.2.3", + "postcss": "6.0.16" + } + }, + "postcss-scss": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.3.tgz", + "integrity": "sha512-N2ZPDOV5PGEGVwdiB7b1QppxKkmkHodNWkemja7PV+/mHqbUlA6ZcYRreden5Ag5nwBBX8/aRE7lfg1xjdszyg==", + "dev": true, + "requires": { + "postcss": "6.0.16" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-sorting": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-2.1.0.tgz", + "integrity": "sha1-MrHpr6kTuyJaatB21QPY+YO7SoI=", + "dev": true, + "requires": { + "lodash": "4.17.4", + "postcss": "5.2.18" + }, + "dependencies": { "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -8532,7 +12686,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -8543,15 +12697,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -8563,43 +12708,18 @@ } } }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-reporter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", - "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.18" + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -8613,20 +12733,9 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } } }, "source-map": { @@ -8635,74 +12744,28 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "has-flag": "1.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-safe-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz", - "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=", - "dev": true, - "requires": { - "postcss": "6.0.13" - } - }, - "postcss-scss": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", - "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "dev": true, "requires": { - "postcss": "5.2.18" + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -8716,7 +12779,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -8727,15 +12790,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -8747,66 +12801,42 @@ } } }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "postcss-url": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.0.tgz", + "integrity": "sha512-VBP6uf6iL3AZra23nkPkOEkS/5azj1xf/toRrjfkolfFEgg9Gyzg9UhJZeIsz12EGKZTNVeGbPa2XtaZm/iZvg==", "dev": true, "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.16", + "xxhashjs": "0.2.2" } }, - "postcss-sorting": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-2.1.0.tgz", - "integrity": "sha1-MrHpr6kTuyJaatB21QPY+YO7SoI=", + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "dev": true, "requires": { - "lodash": "4.17.4", - "postcss": "5.2.18" + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -8814,7 +12844,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -8825,15 +12855,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -8845,12 +12866,6 @@ } } }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -8866,34 +12881,31 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true }, - "prettysize": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz", - "integrity": "sha1-FK//amReWRpN3xxykZwjtBRhgaE=", + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "progress": { "version": "2.0.0", @@ -8901,6 +12913,14 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, + "proj4": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.3.3.tgz", + "integrity": "sha1-SWp2hXivQ55Gd6CFpjmh8ZjLvc0=", + "requires": { + "mgrs": "0.0.0" + } + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -8952,7 +12972,7 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.6.7", + "debug": "2.6.9", "extend": "3.0.1", "http-proxy-agent": "1.0.0", "https-proxy-agent": "1.0.0", @@ -9016,121 +13036,164 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "pstree.remy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", + "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", + "dev": true, + "requires": { + "ps-tree": "1.1.0" + } + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=" + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/q/-/q-0.8.12.tgz", + "integrity": "sha1-kWKpHhGBnEvNp9oVz1/vqtB3iCM=", + "dev": true }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true }, "quickselect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.0.0.tgz", - "integrity": "sha1-AmMIGPmq5OyrJvAQP5jQYcF8WPM=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.0.1.tgz", + "integrity": "sha512-Jt30UQSzTbxf6L2bFTMabHtGtYUzQcvOY0a+s5brm8tzndV/XWifBIH9v5QKtH5gGCZ5RRDwRhdhGMDVHAEGNQ==" }, "ramp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ramp/-/ramp-1.0.6.tgz", - "integrity": "sha1-rNjALXP/e5HJ3ATGHbeQsjAZIm0=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ramp/-/ramp-2.0.2.tgz", + "integrity": "sha1-5069y/PnhpjNSlAz9b5vN+9cNVw=", "dev": true, "requires": { - "ejs": "0.8.8", - "faye": "0.8.11", - "mori": "0.2.1", + "ejs": "2.5.7", + "faye": "1.1.2", + "mori": "0.3.2", "node-uuid": "1.4.8", - "ramp-resources": "1.0.5", - "when": "2.2.1" + "ramp-resources": "2.0.2", + "when": "3.7.8" }, "dependencies": { - "ejs": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.8.tgz", - "integrity": "sha1-/9xW3MNdApJt1QrRNDm7xUBh1Zg=", - "dev": true + "csprng": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz", + "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=", + "dev": true, + "requires": { + "sequin": "0.1.1" + } }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true + "faye": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/faye/-/faye-1.1.2.tgz", + "integrity": "sha1-195MlOO5FotMLCslTes9JktgroA=", + "dev": true, + "requires": { + "csprng": "0.1.2", + "faye-websocket": "0.11.1", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0" + } }, - "when": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/when/-/when-2.2.1.tgz", - "integrity": "sha1-sd75lAFzULgIf26adZarKDO9xxI=", - "dev": true + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } } } }, "ramp-resources": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/ramp-resources/-/ramp-resources-1.0.5.tgz", - "integrity": "sha1-yyq0pttIDqmx8956mXoxDuiUzG8=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ramp-resources/-/ramp-resources-2.0.2.tgz", + "integrity": "sha1-/C46MdJaL5Yup7yXy3GyvYbiy4Q=", "dev": true, "requires": { - "glob": "3.2.11", - "lodash": "0.5.2", - "mime": "1.3.4", - "minimatch": "0.1.5", - "when": "https://github.com/cujojs/when/tarball/1.3.0" + "glob": "5.0.15", + "lodash": "3.10.1", + "mime": "1.6.0", + "minimatch": "3.0.4", + "when": "3.7.8" }, "dependencies": { "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { + "inflight": "1.0.6", "inherits": "2.0.3", - "minimatch": "0.3.0" - }, - "dependencies": { - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "lodash": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.5.2.tgz", - "integrity": "sha1-TIc/k73d6qB0AaZ1+OF97Vr5qCc=", - "dev": true - }, - "minimatch": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.1.5.tgz", - "integrity": "sha1-t2LzEgZsu/5QRipoNgv8nKDMsbk=", - "dev": true, - "requires": { - "lru-cache": "1.0.6" - }, - "dependencies": { - "lru-cache": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-1.0.6.tgz", - "integrity": "sha1-qlD5cEdCKsclQ72hd6nJ0BjZhFI=", - "dev": true - } - } - }, - "when": { - "version": "https://github.com/cujojs/when/tarball/1.3.0", - "integrity": "sha1-iZ6Im5KeUtrodC+Ts9SzWoe+PXs=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } @@ -9139,6 +13202,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -9148,6 +13212,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -9156,6 +13221,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -9166,38 +13232,54 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { "is-buffer": "1.1.6" } } } }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", + "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=", + "dev": true }, "raw-body": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", "dev": true, "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.13", + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", "unpipe": "1.0.0" }, "dependencies": { "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true } } @@ -9207,23 +13289,43 @@ "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.1.tgz", "integrity": "sha1-TPrKKMMGS8DudUMaG3mZDode76k=", "requires": { - "quickselect": "1.0.0" + "quickselect": "1.0.1" + } + }, + "rc": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.4.tgz", + "integrity": "sha1-oPYGyq4qO4YrvQ74VILAElsxX6M=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" } }, "react": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.3.1.tgz", - "integrity": "sha1-94UB7YwuxubjHDIjZS6X8TadK9Y=", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", + "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { + "create-react-class": "15.6.2", "fbjs": "0.8.16", "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "object-assign": "4.1.1", + "prop-types": "15.6.0" } }, "react-dom": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.1.tgz", - "integrity": "sha1-bULNK2TIxeC2k/P/rsMB5uYn4k4=" + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", + "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } }, "react-draggable": { "version": "2.2.6", @@ -9249,38 +13351,15 @@ "requires": { "pinkie-promise": "2.0.1", "readable-stream": "2.3.3" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "2.3.0" } }, "read-file-stdin": { @@ -9292,6 +13371,15 @@ "gather-stream": "1.0.0" } }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -9325,14 +13413,30 @@ } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" } }, "redent": { @@ -9363,21 +13467,79 @@ "dev": true, "optional": true }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "ref": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ref/-/ref-1.3.5.tgz", + "integrity": "sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA==", + "dev": true, + "requires": { + "bindings": "1.2.1", + "debug": "2.6.9", + "nan": "2.8.0" + } + }, + "ref-struct": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ref-struct/-/ref-struct-1.1.0.tgz", + "integrity": "sha1-XV7mWtQc78Olxf60BYcmHkee3BM=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "ref": "1.3.5" + } + }, "referee": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/referee/-/referee-1.0.3.tgz", - "integrity": "sha1-wOt5ux/dwbQoinhmB20b53nmRvM=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referee/-/referee-1.2.0.tgz", + "integrity": "sha1-eneb7llVx4r/fYjAFhxaH0VFjJA=", "dev": true, "requires": { - "bane": "1.0.0", - "lodash": "1.0.2", + "bane": "1.1.2", + "lodash": "3.10.1", "samsam": "1.1.2" }, "dependencies": { "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true } } @@ -9388,33 +13550,180 @@ "integrity": "sha1-cDI2J/GB5vqMal2vf9zdxckZDmQ=", "dev": true }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, "regenerator-runtime": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.4", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + } + }, + "remark": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz", + "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==", + "dev": true, + "requires": { + "remark-parse": "4.0.0", + "remark-stringify": "4.0.0", + "unified": "6.1.6" + } + }, + "remark-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz", + "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==", + "dev": true, + "requires": { + "collapse-white-space": "1.0.3", + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1", + "is-whitespace-character": "1.0.1", + "is-word-character": "1.0.1", + "markdown-escapes": "1.0.1", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "state-toggle": "1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "1.1.0", + "unherit": "1.1.0", + "unist-util-remove-position": "1.1.1", + "vfile-location": "2.0.2", + "xtend": "4.0.1" + } + }, + "remark-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz", + "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==", + "dev": true, + "requires": { + "ccount": "1.0.2", + "is-alphanumeric": "1.0.0", + "is-decimal": "1.0.1", + "is-whitespace-character": "1.0.1", + "longest-streak": "2.0.2", + "markdown-escapes": "1.0.1", + "markdown-table": "1.1.1", + "mdast-util-compact": "1.0.1", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "state-toggle": "1.0.0", + "stringify-entities": "1.3.1", + "unherit": "1.1.0", + "xtend": "4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "rename-function-calls": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/rename-function-calls/-/rename-function-calls-0.1.1.tgz", + "integrity": "sha1-f4M2nAB6MAf2q+MDPM+BaGoQjgE=", + "dev": true, + "requires": { + "detective": "3.1.0" + }, + "dependencies": { + "detective": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-3.1.0.tgz", + "integrity": "sha1-d3gkRKt1K4jKG+Lp0KA5Xx2iXu0=", + "dev": true, + "requires": { + "escodegen": "1.1.0", + "esprima-fb": "3001.1.0-dev-harmony-fb" + } + } + } }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "repeating": { "version": "2.0.1", @@ -9425,49 +13734,125 @@ "is-finite": "1.0.2" } }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-requires": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/replace-requires/-/replace-requires-1.0.4.tgz", + "integrity": "sha1-AUtzMLa54lV7cQQ7ZvsCZgw79mc=", + "dev": true, + "requires": { + "detective": "4.7.1", + "has-require": "1.2.2", + "patch-text": "1.0.2", + "xtend": "4.0.1" + } + }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "optional": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.6.0", "caseless": "0.12.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", "mime-types": "2.1.17", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "performance-now": "2.1.0", + "qs": "6.5.1", "safe-buffer": "5.1.1", "stringstream": "0.0.5", "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "uuid": "3.2.1" + }, + "dependencies": { + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true, + "optional": true + } } }, "request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, "requires": { "throttleit": "1.0.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", "dev": true }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -9476,45 +13861,31 @@ "requires": { "caller-path": "0.1.0", "resolve-from": "1.0.1" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "requires": { - "underscore": "1.6.0" } }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, "requires": { "path-parse": "1.0.5" } }, - "resolve-bin": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/resolve-bin/-/resolve-bin-0.3.0.tgz", - "integrity": "sha1-eY+1toraFbgPkGzjnVE0OhdWmqE=", + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "find-parent-dir": "0.1.0" + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, "resolve-protobuf-schema": { @@ -9525,6 +13896,12 @@ "protocol-buffers-schema": "2.2.0" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9535,91 +13912,32 @@ "signal-exit": "3.0.2" } }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, "requires": { "align-text": "0.1.4" } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "dev": true, "requires": { "glob": "7.1.2" } }, - "rollup": { - "version": "0.47.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.47.6.tgz", - "integrity": "sha512-bH3eWh7MzbiKTQcHQN7Ievqbs/yY7T+ZcJYboBYkp7BkRlAr2DXHPfiqlvlEH/M95giEBpinHEi/s9CVIgYT6w==" - }, - "rollup-plugin-cleanup": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-1.0.1.tgz", - "integrity": "sha1-ygVsdP5uoheD+ZhRljsXPL6Ok1k=", - "requires": { - "acorn": "4.0.13", - "magic-string": "0.22.4", - "rollup-pluginutils": "2.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } - } - }, - "rollup-plugin-commonjs": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz", - "integrity": "sha512-qK0+uhktmnAgZkHkqFuajNmPw93fjrO7+CysDaxWE5jrUR9XSlSvuao5ZJP+XizxA8weakhgYYBtbVz9SGBpjA==", - "requires": { - "acorn": "5.2.1", - "estree-walker": "0.5.0", - "magic-string": "0.22.4", - "resolve": "1.5.0", - "rollup-pluginutils": "2.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", - "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==" - }, - "estree-walker": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.0.tgz", - "integrity": "sha512-/bEAy+yKAZQrEWUhGmS3H9XpGqSDBtRzX0I2PgMw9kA2n1jN22uV5B5p7MFdZdvWdXCRJztXAfx6ZeRfgkEETg==" - } - } - }, - "rollup-plugin-node-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", - "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", - "requires": { - "browser-resolve": "1.11.2", - "builtin-modules": "1.1.1", - "is-module": "1.0.0", - "resolve": "1.5.0" - } - }, - "rollup-pluginutils": { + "ripemd160": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", - "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, "requires": { - "estree-walker": "0.3.1", - "micromatch": "2.3.11" + "hash-base": "2.0.2", + "inherits": "2.0.3" } }, "run-async": { @@ -9631,6 +13949,12 @@ "is-promise": "2.1.0" } }, + "run-script-os": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.0.2.tgz", + "integrity": "sha1-mAMz9vakFMFebwLFh5FkgM3ilk8=", + "dev": true + }, "rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -9654,7 +13978,8 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "samsam": { "version": "1.1.2", @@ -9662,6 +13987,12 @@ "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", "dev": true }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -9674,74 +14005,98 @@ "dev": true }, "semver": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz", + "integrity": "sha1-z7COvTzsm3/Bo32f+eh1qXHPRkA=", + "dev": true, "requires": { - "debug": "2.6.7", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.0", - "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "debug": "2.6.9", + "fresh": "0.1.0", + "mime": "1.2.6", + "range-parser": "0.0.4" + }, + "dependencies": { + "mime": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz", + "integrity": "sha1-sfhsdowCX6h7SAdfFwnyiuryA2U=", + "dev": true + } } }, + "sequin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sequin/-/sequin-0.1.1.tgz", + "integrity": "sha1-XC04nWajg3NOqvvEXt6ywcsb5wE=", + "dev": true + }, "serve-static": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz", - "integrity": "sha1-dEOpZePO1kes61Y5+ga/TRu+ADk=", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { "encodeurl": "1.0.1", "escape-html": "1.0.3", "parseurl": "1.3.2", - "send": "0.15.1" + "send": "0.16.1" }, "dependencies": { - "debug": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", - "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", - "dev": true, - "requires": { - "ms": "0.7.2" - } + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "dev": true }, "send": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", - "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", "dev": true, "requires": { - "debug": "2.6.1", - "depd": "1.1.1", + "debug": "2.6.9", + "depd": "1.1.2", "destroy": "1.0.4", "encodeurl": "1.0.1", "escape-html": "1.0.3", "etag": "1.8.1", - "fresh": "0.5.0", + "fresh": "0.5.2", "http-errors": "1.6.2", - "mime": "1.3.4", - "ms": "0.7.2", + "mime": "1.4.1", + "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", "statuses": "1.3.1" @@ -9752,7 +14107,35 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } }, "setimmediate": { "version": "1.0.5", @@ -9762,7 +14145,28 @@ "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.9" + } }, "shebang-command": { "version": "1.2.0", @@ -9800,7 +14204,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sinon": { "version": "1.17.7", @@ -9827,14 +14232,6 @@ "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } } }, "smart-buffer": { @@ -9843,81 +14240,188 @@ "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", "dev": true }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.0" } }, "socket.io": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.1.tgz", - "integrity": "sha1-BkwSUXhGLkd6bfI9L9rRjdHFkU8=", + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.19.tgz", + "integrity": "sha1-SQu1/Q3FTPAC7gTmf638Q7hIo48=", + "dev": true, "requires": { - "debug": "2.6.7", - "engine.io": "3.1.3", - "object-assign": "4.1.1", - "socket.io-adapter": "1.1.1", - "socket.io-client": "2.0.1", - "socket.io-parser": "3.1.2" + "base64id": "0.1.0", + "policyfile": "0.0.4", + "redis": "0.7.3", + "socket.io-client": "0.9.16" } }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, "socket.io-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.1.tgz", - "integrity": "sha1-HVL4x0Zgxou2aVlT+hGZcRVfrZM=", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.6.4", - "engine.io-client": "3.1.3", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", - "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", - "requires": { - "ms": "0.7.3" - } - }, - "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" - } - } - }, - "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "version": "0.9.16", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", + "integrity": "sha1-TadRXF53MEHRtCOXBBW8xDDzX8Y=", + "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.7", - "has-binary2": "1.0.2", - "isarray": "2.0.1" + "active-x-obfuscator": "0.0.1", + "uglify-js": "1.2.5", + "ws": "0.4.32", + "xmlhttprequest": "1.4.2" }, "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "xmlhttprequest": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", + "integrity": "sha1-AUU6HZvtHo8XL2SVu/TIxCYyFQA=", + "dev": true } } }, @@ -9950,12 +14454,31 @@ "socks": "1.1.10" } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, "requires": { - "amdefine": "1.0.1" + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" } }, "source-map-support": { @@ -9975,6 +14498,12 @@ } } }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -10011,6 +14540,36 @@ "through": "2.3.8" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "split2": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", @@ -10018,6 +14577,42 @@ "dev": true, "requires": { "through2": "0.6.5" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } } }, "sprintf-js": { @@ -10030,6 +14625,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -10039,13 +14635,6 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "stack-chain": { @@ -10104,10 +14693,95 @@ "stacktrace-gps": "3.0.2" } }, + "state-toggle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.0.tgz", + "integrity": "sha1-0g+aYWu08MO5i5GSLSW2QKorxCU=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true }, "stdin": { "version": "0.0.1", @@ -10115,6 +14789,16 @@ "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", "dev": true }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -10124,6 +14808,29 @@ "duplexer": "0.1.1" } }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, "stream-logger": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-logger/-/stream-logger-1.0.1.tgz", @@ -10133,6 +14840,22 @@ "evented-logger": "1.0.1" } }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", @@ -10140,21 +14863,28 @@ "dev": true }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "3.0.0" } } } @@ -10166,24 +14896,44 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.9.0", + "es-abstract": "1.10.0", "function-bind": "1.1.1" } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringify-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz", + "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=", + "dev": true, + "requires": { + "character-entities-html4": "1.1.1", + "character-entities-legacy": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-hexadecimal": "1.0.1" + } }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true }, "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -10191,6 +14941,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -10198,12 +14954,21 @@ "dev": true, "requires": { "get-stdin": "4.0.1" + }, + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + } } }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-search": { "version": "0.1.0", @@ -10223,8 +14988,8 @@ "editorconfig": "0.13.3", "globby": "6.1.0", "minimist": "1.2.0", - "postcss": "6.0.13", - "postcss-scss": "1.0.2", + "postcss": "6.0.16", + "postcss-scss": "1.0.3", "postcss-sorting": "2.1.0", "postcss-value-parser": "3.3.0", "stdin": "0.0.1", @@ -10233,10 +14998,13 @@ }, "dependencies": { "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "autoprefixer": { "version": "6.7.7", @@ -10245,7 +15013,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000793", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -10259,19 +15027,10 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } } } }, @@ -10287,103 +15046,72 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "postcss-scss": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", - "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", - "dev": true, - "requires": { - "postcss": "6.0.13" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "chalk": "1.1.3", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "postcss": "5.2.18" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "chalk": "1.1.3", + "js-base64": "2.4.1", + "source-map": "0.5.7", + "supports-color": "3.2.3" } } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "stylelint": { "version": "7.13.0", @@ -10394,9 +15122,9 @@ "autoprefixer": "6.7.7", "balanced-match": "0.4.2", "chalk": "2.3.0", - "colorguard": "1.2.0", + "colorguard": "1.2.1", "cosmiconfig": "2.2.2", - "debug": "2.6.7", + "debug": "2.6.9", "doiuse": "2.6.0", "execall": "1.0.0", "file-entry-cache": "2.0.0", @@ -10432,15 +15160,6 @@ "table": "4.0.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -10465,7 +15184,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" }, @@ -10535,10 +15254,13 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -10561,33 +15283,14 @@ "write-file-stdout": "0.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, "has-flag": { @@ -10596,12 +15299,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -10609,20 +15306,9 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } } }, "postcss-reporter": { @@ -10643,30 +15329,24 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "has-flag": "1.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, "stylelint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-8.2.0.tgz", - "integrity": "sha512-57JWIz/1Uh9ehZMZyAqlFC0EDfQrMXCH8yqt8ZuJQQvV3LBKgAM/JYd+CWi1hC4eJtRODSPbIIBYKdGjkPZdMg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-8.4.0.tgz", + "integrity": "sha512-56hPH5mTFnk8LzlEuTWq0epa34fHuS54UFYQidBOFt563RJBNi1nz1F2HK2MoT1X1waq47milvRsRahFCCJs/Q==", "dev": true, "requires": { - "autoprefixer": "7.1.6", + "autoprefixer": "7.2.5", "balanced-match": "1.0.0", "chalk": "2.3.0", "cosmiconfig": "3.1.0", @@ -10674,33 +15354,35 @@ "execall": "1.0.0", "file-entry-cache": "2.0.0", "get-stdin": "5.0.1", - "globby": "6.1.0", + "globby": "7.1.1", "globjoin": "0.1.4", "html-tags": "2.0.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", - "known-css-properties": "0.4.1", + "known-css-properties": "0.5.0", "lodash": "4.17.4", "log-symbols": "2.1.0", "mathml-tag-names": "2.0.1", - "meow": "3.7.0", + "meow": "4.0.0", "micromatch": "2.3.11", "normalize-selector": "0.2.0", "pify": "3.0.0", - "postcss": "6.0.13", - "postcss-less": "1.1.1", + "postcss": "6.0.16", + "postcss-html": "0.12.0", + "postcss-less": "1.1.3", "postcss-media-query-parser": "0.2.3", "postcss-reporter": "5.0.0", "postcss-resolve-nested-selector": "0.1.1", "postcss-safe-parser": "3.0.1", - "postcss-scss": "1.0.2", - "postcss-selector-parser": "2.2.3", + "postcss-sass": "0.2.0", + "postcss-scss": "1.0.3", + "postcss-selector-parser": "3.1.1", "postcss-value-parser": "3.3.0", "resolve-from": "4.0.0", "specificity": "0.3.2", "string-width": "2.1.1", "style-search": "0.1.0", - "sugarss": "1.0.0", + "sugarss": "1.0.1", "svg-tags": "1.0.0", "table": "4.0.2" }, @@ -10711,32 +15393,40 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" + "color-convert": "1.9.1" } }, "autoprefixer": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", - "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.5.tgz", + "integrity": "sha512-XqHfo8Ht0VU+T5P+eWEVoXza456KJ4l62BPewu3vpNf3LP9s2+zYXkXBznzYby4XeECXgG3N4i+hGvOhXErZmA==", "dev": true, "requires": { - "browserslist": "2.6.1", - "caniuse-lite": "1.0.30000756", + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000792", "normalize-range": "0.1.2", "num2fraction": "1.2.2", - "postcss": "6.0.13", + "postcss": "6.0.16", "postcss-value-parser": "3.3.0" } }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "map-obj": "2.0.0", + "quick-lru": "1.1.0" + } + }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -10775,23 +15465,28 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "glob": "7.1.2", + "ignore": "3.3.7", + "pify": "3.0.0", + "slash": "1.0.0" + } }, "js-yaml": { "version": "3.10.0", @@ -10804,11 +15499,35 @@ } }, "known-css-properties": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.4.1.tgz", - "integrity": "sha512-n+ThoCKhyMFKkMfksdLMP5ndp+VzwDRzQdH6JlmZ2GTpUenYB2EeEKjOue2SErAAG/MmBSUISpwvawDhydWQdQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.5.0.tgz", + "integrity": "sha512-LOS0CoS8zcZnB1EjLw4LLqDXw8nvt3AGH5dXLQP3D9O1nLLA+9GC5GnPl5mmF+JiQAtSX4VyZC7KvEtcA4kUtA==", "dev": true }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + } + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -10824,6 +15543,29 @@ "chalk": "2.3.0" } }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", + "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", + "dev": true, + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist": "1.2.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.4.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0" + } + }, "parse-json": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-3.0.0.tgz", @@ -10833,6 +15575,15 @@ "error-ex": "1.3.1" } }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -10840,9 +15591,9 @@ "dev": true }, "postcss-less": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-1.1.1.tgz", - "integrity": "sha512-zl0EEqq8Urh37Ppdv9zzhpZpLHrgkxmt6e3O4ftRa7/b8Uq2LV+/KBVM8/KuzmHNu+mthhOArg1lxbfqQ3NUdg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-1.1.3.tgz", + "integrity": "sha512-WS0wsQxRm+kmN8wEYAGZ3t4lnoNfoyx9EJZrhiPR1K0lMHR0UNWnz52Ya5QRXChHtY75Ef+kDc05FpnBujebgw==", "dev": true, "requires": { "postcss": "5.2.18" @@ -10875,6 +15626,12 @@ } } }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", @@ -10882,7 +15639,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -10898,25 +15655,46 @@ } } }, - "postcss-reporter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", - "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "dev": true, "requires": { - "chalk": "2.3.0", - "lodash": "4.17.4", - "log-symbols": "2.1.0", - "postcss": "6.0.13" + "dot-prop": "4.2.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" } }, - "postcss-scss": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz", - "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "postcss": "6.0.13" + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "3.2.0", + "strip-indent": "2.0.0" } }, "require-from-string": { @@ -10937,50 +15715,35 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "sugarss": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", + "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "postcss": "6.0.16" } }, - "sugarss": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.0.tgz", - "integrity": "sha1-ZeUbOVhDL7cNVFGmi7M+MtDPHvc=", + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "postcss": "6.0.13" + "has-flag": "2.0.0" } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true } } }, @@ -10996,10 +15759,13 @@ }, "dependencies": { "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "autoprefixer": { "version": "6.7.7", @@ -11008,7 +15774,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000756", + "caniuse-db": "1.0.30000793", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -11027,49 +15793,29 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000756", - "electron-to-chromium": "1.3.27" + "caniuse-db": "1.0.30000793", + "electron-to-chromium": "1.3.31" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -11083,53 +15829,44 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "postcss-reporter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz", + "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } + "chalk": "1.1.3", + "lodash": "4.17.4", + "log-symbols": "1.0.2", + "postcss": "5.2.18" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "postcss-scss": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz", + "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "postcss": "5.2.18" } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "stylelint": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz", @@ -11139,9 +15876,9 @@ "autoprefixer": "6.7.7", "balanced-match": "0.4.2", "chalk": "2.3.0", - "colorguard": "1.2.0", + "colorguard": "1.2.1", "cosmiconfig": "2.2.2", - "debug": "2.6.7", + "debug": "2.6.9", "doiuse": "2.6.0", "execall": "1.0.0", "file-entry-cache": "2.0.0", @@ -11177,15 +15914,6 @@ "table": "4.0.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -11225,6 +15953,15 @@ } } }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "1.2.0" + } + }, "sugarss": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz", @@ -11234,33 +15971,6 @@ "postcss": "5.2.18" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11274,7 +15984,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.3.2", + "js-base64": "2.4.1", "source-map": "0.5.7", "supports-color": "3.2.3" } @@ -11285,15 +15995,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11306,13 +16007,9 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svg-tags": { "version": "1.0.0", @@ -11320,6 +16017,36 @@ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", "dev": true }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + } + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true, + "optional": true + }, "sync-request": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-4.1.0.tgz", @@ -11331,6 +16058,19 @@ "get-port": "3.2.0", "http-response-object": "1.1.0", "then-request": "2.2.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + } } }, "synesthesia": { @@ -11350,13 +16090,22 @@ } } }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true, + "requires": { + "acorn": "4.0.13" + } + }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.3.0", + "ajv": "5.5.2", "ajv-keywords": "2.1.1", "chalk": "2.3.0", "lodash": "4.17.4", @@ -11364,31 +16113,13 @@ "string-width": "2.1.1" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { @@ -11402,53 +16133,32 @@ "supports-color": "4.5.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "has-flag": "2.0.0" } } } }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=" - }, "tar": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", - "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, "requires": { - "minipass": "2.2.1", - "minizlib": "1.0.4", - "mkdirp": "0.5.1", - "yallist": "3.0.2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "tar.gz": { @@ -11458,7 +16168,7 @@ "dev": true, "requires": { "bluebird": "2.11.0", - "commander": "2.11.0", + "commander": "2.13.0", "fstream": "1.0.11", "mout": "0.11.1", "tar": "2.2.1" @@ -11469,39 +16179,6 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", "dev": true - }, - "mout": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", - "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - } - } - }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" } } }, @@ -11512,19 +16189,23 @@ "dev": true, "requires": { "rimraf": "2.5.4" - }, - "dependencies": { - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - } } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "ternary": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ternary/-/ternary-1.0.0.tgz", + "integrity": "sha1-RXAnJWCMlJnUapYQ6bDkn/JveJ4=", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11538,19 +16219,11 @@ "dev": true, "requires": { "caseless": "0.11.0", - "concat-stream": "1.6.0", + "concat-stream": "1.5.2", "http-basic": "2.5.1", "http-response-object": "1.1.0", "promise": "7.3.1", - "qs": "6.4.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - } + "qs": "6.5.1" } }, "thenify": { @@ -11574,7 +16247,8 @@ "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true }, "through": { "version": "2.3.8", @@ -11583,27 +16257,13 @@ "dev": true }, "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "1.0.34", + "readable-stream": "2.3.3", "xtend": "4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - } } }, "thunkify": { @@ -11612,63 +16272,26 @@ "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", "dev": true }, - "timed-out": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", - "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", - "dev": true - }, - "tiny-emitter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", - "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" - }, - "tiny-lr": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", - "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", - "dev": true, - "requires": { - "body-parser": "1.14.2", - "debug": "2.2.0", - "faye-websocket": "0.10.0", - "livereload-js": "2.2.2", - "parseurl": "1.3.2", - "qs": "5.1.0" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - }, - "qs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", - "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", - "dev": true - } + "timed-out": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", + "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", + "dev": true + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "0.11.10" } }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + }, "tinycolor": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", @@ -11686,28 +16309,139 @@ } }, "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "1.0.2" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } }, "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, "requires": { "nopt": "1.0.10" }, @@ -11716,6 +16450,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, "requires": { "abbrev": "1.1.1" } @@ -11726,14 +16461,52 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, "requires": { "punycode": "1.4.1" } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true, + "optional": true + }, + "transformify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/transformify/-/transformify-0.1.2.tgz", + "integrity": "sha1-mk9CoVRDPdcnuAV1Qoo8nlSJ6/E=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } }, "traverse-chain": { "version": "0.1.0", @@ -11741,6 +16514,12 @@ "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=", "dev": true }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -11753,16 +16532,29 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "trim-trailing-lines": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz", + "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ=", + "dev": true + }, + "trough": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz", + "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "5.1.1" } @@ -11771,6 +16563,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-check": { @@ -11810,69 +16603,222 @@ "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" }, "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz", + "integrity": "sha1-tULCx29477NLIAsgF3Y0Mw/3ArY=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyify": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/uglifyify/-/uglifyify-4.0.5.tgz", + "integrity": "sha512-vVvJjL5rxAbvUs5m0zfxLCwy5fu6+6HBRY06cpWfOGTtKgAONWy7HDovTr28Y7kwXFNAAt+OMbRGP6ulqWqakA==", + "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "convert-source-map": "1.1.3", + "extend": "1.3.0", + "minimatch": "3.0.4", + "through": "2.3.8", + "uglify-es": "3.3.7" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "extend": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.3.0.tgz", + "integrity": "sha1-0VFvsP9WJNLr+RI+odrFoZlABPg=", + "dev": true + }, + "uglify-es": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.7.tgz", + "integrity": "sha512-fGMnE6SsDRsCjxm78C+lv7MuXsse/dtF7QuTUT43BYf4jlxPjd+XTnGB8YjaCQJ3sv2LT4zk0mwpp9+QJocU6g==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" - }, "uid-number": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz", "integrity": "sha1-Wj2yPvXb1VuB/ODsmirG/M3ruB4=", "dev": true }, - "ultron": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", - "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=" - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "undefsafe": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.1.tgz", + "integrity": "sha1-A7LyoWyUVW4Usu3vMmzWaq+CcHo=", + "dev": true, "requires": { - "underscore": "1.6.0" + "debug": "2.6.9" } }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, "underscore.string": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", "dev": true }, + "unherit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", + "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "xtend": "4.0.1" + } + }, + "unified": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.6.tgz", + "integrity": "sha512-pW2f82bCIo2ifuIGYcV12fL96kMMYgw7JKVEgh7ODlrM9rj6vXSY3BV+H6lCcv1ksxynFf582hwWLnA1qRFy4w==", + "dev": true, + "requires": { + "bail": "1.0.2", + "extend": "3.0.1", + "is-plain-obj": "1.1.0", + "trough": "1.0.1", + "vfile": "2.3.0", + "x-is-function": "1.0.4", + "x-is-string": "0.1.0" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unist-util-find-all-after": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.1.tgz", + "integrity": "sha1-TlUSq/734GFnga7Pex7XUcAK+Qg=", + "dev": true, + "requires": { + "unist-util-is": "2.1.1" + } + }, + "unist-util-is": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.1.tgz", + "integrity": "sha1-DDEmKeP5YMZukx6BLT2A53AQlHs=", + "dev": true + }, + "unist-util-modify-children": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.1.tgz", + "integrity": "sha1-ZtfmpEnm9nIguXarPLi166w55R0=", + "dev": true, + "requires": { + "array-iterate": "1.1.1" + } + }, + "unist-util-remove-position": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", + "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", + "dev": true, + "requires": { + "unist-util-visit": "1.3.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz", + "integrity": "sha1-PMvcU2ee7W7PN3fdf14yKcG2qjw=", + "dev": true + }, + "unist-util-visit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.0.tgz", + "integrity": "sha512-9ntYcxPFtl44gnwXrQKZ5bMqXMY0ZHzUpqMFiU4zcc8mmf/jzYm8GhYgezuUlX4cJIM1zIDYaO6fG/fI+L6iiQ==", + "dev": true, + "requires": { + "unist-util-is": "2.1.1" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true }, "unpipe": { "version": "1.0.0", @@ -11880,24 +16826,136 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "unzip-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", "dev": true }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "uri-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", - "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -11907,6 +16965,100 @@ "prepend-http": "1.0.4" } }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -11933,7 +17085,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "utils-merge": { "version": "1.0.0", @@ -11941,17 +17094,6 @@ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", "dev": true }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - }, - "uws": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz", - "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=", - "optional": true - }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", @@ -11968,36 +17110,81 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "dev": true, + "requires": { + "is-buffer": "1.1.6", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "1.1.1", + "vfile-message": "1.0.0" + } + }, + "vfile-location": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz", + "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=", + "dev": true + }, + "vfile-message": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.0.tgz", + "integrity": "sha512-HPREhzTOB/sNDc9/Mxf8w0FmHnThg5CRSJdR9VRFkD2riqYWs+fuXlj5z8mIpv2LrD7uU41+oPWFOL4Mjlf+dw==", + "dev": true, + "requires": { + "unist-util-stringify-position": "1.1.1" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, - "walk": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz", - "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", + "watchify": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.9.0.tgz", + "integrity": "sha1-8HX9LoqGrN6Eztum5cKgvt1SPZ4=", + "dev": true, "requires": { - "foreachasync": "3.0.0" + "anymatch": "1.3.2", + "browserify": "14.5.0", + "chokidar": "1.7.0", + "defined": "1.0.0", + "outpipe": "1.1.1", + "through2": "2.0.3", + "xtend": "4.0.1" } }, + "webidl-conversions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", + "dev": true, + "optional": true + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -12005,13 +17192,13 @@ "dev": true, "requires": { "http-parser-js": "0.4.9", - "websocket-extensions": "0.1.2" + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.2.tgz", - "integrity": "sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, "whatwg-fetch": { @@ -12019,41 +17206,70 @@ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" }, + "whatwg-url-compat": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", + "dev": true, + "optional": true, + "requires": { + "tr46": "0.0.3" + } + }, "when": { - "version": "https://github.com/cujojs/when/tarball/1.8.1", - "integrity": "sha1-sbqqctx3tPjCZ7yy/r5mjS/ArYc=", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", "dev": true }, "which": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "2.1.1" } }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true }, "worldview-components": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/worldview-components/-/worldview-components-1.5.1.tgz", - "integrity": "sha1-4trrYe7bjSeGUlr9XA6raBvXUaI=", + "version": "github:nasa-gibs/worldview-components#199d1982a541dda8e347b8838b2f908db8bf061e", "requires": { - "d3": "4.11.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-react": "6.24.1", + "d3": "4.12.2", "icheck": "1.0.2", "prop-types": "15.6.0", "react-draggable": "2.2.6", @@ -12062,12 +17278,45 @@ } }, "worldview-options-eosdis": { - "version": "github:nasa-gibs/worldview-options-eosdis#3eee1a8b6a0e830a7d05b0a8a63f1a300cf5efd2" + "version": "github:nasa-gibs/worldview-options-eosdis#a4b1c4811a95c0d8b131c251f961a132d3b0588f" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write": { "version": "0.2.1", @@ -12078,6 +17327,17 @@ "mkdirp": "0.5.1" } }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, "write-file-stdout": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz", @@ -12085,36 +17345,61 @@ "dev": true }, "ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "version": "0.4.32", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", + "integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", + "dev": true, "requires": { - "safe-buffer": "5.0.1", - "ultron": "1.1.0" + "commander": "2.1.0", + "nan": "1.0.0", + "options": "0.0.6", + "tinycolor": "0.0.1" }, "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + }, + "nan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", + "integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=", + "dev": true } } }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" + "x-is-function": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz", + "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=", + "dev": true + }, + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "dev": true + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true, + "optional": true }, "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, - "xmlhttprequest-ssl": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz", - "integrity": "sha1-BPVgkVcks4kIhxXMDteBPpZ3v1c=" - }, "xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", @@ -12127,15 +17412,32 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "0.2.2" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, "yallist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", @@ -12143,6 +17445,23 @@ "window-size": "0.1.0" } }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, "yauzl": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", @@ -12152,11 +17471,6 @@ "fd-slicer": "1.0.1" } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, "zeparser": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz", diff --git a/package.json b/package.json index ccec5ea982..afbcf7280b 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,19 @@ "name": "worldview", "version": "1.11.0", "description": "Interactive interface for browsing full-resolution, global, near real-time satellite imagery", + "keywords": [ + "NASA", + "Earthdata", + "GIS", + "NRT", + "satellite imagery", + "wildfire management", + "air quality", + "flood monitoring", + "science", + "earth science", + "GDAL" + ], "homepage": "https://worldview.earthdata.nasa.gov/", "bugs": { "url": "https://github.com/nasa-gibs/worldview/issues", @@ -13,24 +26,64 @@ "node": "8.8.1" }, "scripts": { - "preinstall": "node version-check.js", - "start": "node ./bin/www", - "test": "grunt test lint", - "e2e": "run-s --print-name --continue-on-error --silent e2e:*", + "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", + "build": "rm -rf build && run-s \"getcapabilities -- {1}\" \"build:config -- {1}\" --", + "postbuild": "run-p build:css build:js build:tests && grunt build site", + "build:css": "node ./tasks/buildCSS", + "build:config": "bash -c 'tasks/buildOptions.sh ${1}' 0", + "postbuild:config": "grunt config", + "build:js": "node ./tasks/buildJS", + "build:tests": "node ./tasks/buildJS --tests", + "e2e": "run-s --continue-on-error --silent e2e:*", "e2e:chrome": "nightwatch -e chrome", "e2e:firefox": "nightwatch -e firefox --skiptags wip", - "browserstack": "node e2e/browserstack.js -c e2e/browserstack.conf.js -e browserstack --skiptags wip", - "report": "node e2e/create-report.js" + "getcapabilities": "bash -c 'FETCH_GC=1 tasks/buildOptions.sh ${1}' 0", + "lint": "run-s lint:*", + "lint:css": "stylelint ./web/css/**/*.css", + "lint:js": "eslint .", + "preinstall": "node tasks/checkNodeVersion.js", + "postinstall": "npm run python", + "python": "virtualenv .python && run-script-os", + "python:darwin:linux": "PATH=.python/bin:${PATH} pip install -r requirements.txt", + "python:win32": "bash -c 'PATH=.python/Scripts:${PATH} pip install -r requirements.txt'", + "report": "node e2e/create-report.js", + "start": "node ./tasks/start.js", + "test": "npm run lint && run-p test:server test:run", + "test:server": "buster-server -c", + "test:run": "sleep 2 && buster-test && npm run test:end", + "test:end": "run-script-os", + "test:end:darwin:linux": "pkill -f buster-server", + "test:end:win32": "tskill node", + "updateconfig": "run-s getcapabilities build:config", + "watch": "bash -c 'WORLDVIEW_WATCH='active' npm-watch'" + }, + "watch": { + "build:css": { + "patterns": [ + "web/css/**/*" + ], + "extensions": "css" + }, + "build:js": "This task self-watches as long as $WORLDVIEW_WATCH=active" }, "devDependencies": { "autoprefixer": "7.1.1", "babel-core": "^6.26.0", + "babel-eslint": "^7.2.3", + "babel-polyfill": "^6.16.0", + "babel-preset-env": "^1.6.1", + "babelify": "^7.3.0", + "browserify": "^14.4.0", + "browserify-css": "^0.13.1", + "browserify-shim": "^3.8.14", "browserstack-capabilities": "^0.4.0", "browserstack-local": "^1.3.0", - "buster": "0.7.12", + "buster": "github:busterjs/buster#v0.8.0", "chromedriver": "2.25.1", + "cssnano": "^3.10.0", "cucumber": "^3.0.2", "cucumber-html-reporter": "^3.0.4", + "eslint": "^4.13.0", "eslint-config-standard": "^10.2.1", "eslint-plugin-import": "^2.8.0", "eslint-plugin-node": "^5.2.1", @@ -39,49 +92,67 @@ "express": "4.15.2", "geckodriver": "1.2.0", "grunt": "0.4.x", - "grunt-buster": "0.4.x", "grunt-contrib-clean": "1.0.x", - "grunt-contrib-compress": "0.5.x", - "grunt-contrib-concat": "1.0.x", "grunt-contrib-copy": "1.0.x", - "grunt-contrib-cssmin": "1.0.x", - "grunt-contrib-uglify": "2.0.x", - "grunt-contrib-watch": "^1.0.0", "grunt-exec": "0.4.x", - "grunt-git-rev-parse": "0.1.x", - "grunt-line-remover": "0.0.x", "grunt-markdown": "0.7.x", - "grunt-minjson": "0.4.x", "grunt-mkdir": "0.1.x", - "grunt-postcss": "^0.8.0", - "grunt-rename": "0.1.x", - "grunt-stylefmt": "^3.0.0", "grunt-text-replace": "0.4.x", - "gruntify-eslint": "^4.0.0", + "minimist": "^1.2.0", "moment": "2.13.x", "nightwatch": "^0.9.16", - "nightwatch-cucumber": "^8.1.0", + "nightwatch-cucumber": "^8.2.10", "npm-run-all": "^4.1.1", + "npm-watch": "^0.3.0", "phantomjs": "2.1.x", + "postcss-cli": "^4.1.1", + "postcss-import": "^11.0.0", + "postcss-url": "^7.2.1", + "run-script-os": "^1.0.2", "selenium-server-standalone-jar": "3.0.1", "stylefmt": "^6.0.0", - "stylelint": "^8.0.0" + "stylelint": "^8.0.0", + "uglifyify": "^4.0.5", + "underscore": "^1.8.3", + "watchify": "^3.9.0" }, "dependencies": { - "babel-polyfill": "6.16.0", "bluebird": "3.4.6", + "cachai": "^1.0.2", "clipboard": "^1.7.1", "font-awesome": "4.7.0", "gifshot": "https://github.com/nasa-gibs/gifshot/archive/4.2.0.tar.gz", + "icheck": "^1.0.2", "isotope-layout": "3.0.x", "isotope-packery": "2.x.x", + "jquery": "^2.1.4", + "jquery-jcrop": "^0.9.13", + "jquery-ui": "1.10.4", + "jquery-ui-touch-punch": "0.2.3", + "jquery.joyride": "git+https://git@github.com/nasa-gibs/joyride.git", + "jscrollpane": "^2.0.22", "lodash": "4.15.0", - "openlayers": "4.3.1", - "perfect-scrollbar": "0.7.x", + "nouislider": "7.0.10", + "ol": "~4.3.4", + "perfect-scrollbar": "^0.8.1", + "proj4": "2.3.3", "promise-queue": "2.2.3", - "react": "15.3.1", - "react-dom": "15.3.1", - "worldview-components": "^1.5.1", - "worldview-options-eosdis": "nasa-gibs/worldview-options-eosdis#v2.3.0" + "react": "^15.6.2", + "react-dom": "^15.6.2", + "worldview-components": "nasa-gibs/worldview-components#remove-shim", + "worldview-options-eosdis": "github:nasa-gibs/worldview-options-eosdis#v2.4.0" + }, + "browser": { + "d3": "./web/ext/d3/d3.js", + "mobiscroll": "./web/ext/mobiscroll-2.6.0/mobiscroll.js", + "isotope-layout": "./node_modules/isotope-layout/dist/isotope.pkgd.js", + "jquery-jcrop": "./node_modules/jquery-jcrop/js/jquery.Jcrop.js", + "jquery": "./node_modules/jquery/dist/jquery.js" + }, + "browserify-shim": { + "mobiscroll": "mobiscroll", + "isotope-layout": "isotope", + "jquery-jcrop": "Jcrop", + "jquery": "$" } } diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000..715841871e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +# These are the Python dependencies for Worldview +isodate==0.6.0 +six==1.11.0 +wsgiref==0.1.2 +xmltodict==0.11.0 diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000..e1e6ad269c Binary files /dev/null and b/screenshot.png differ diff --git a/site_build.sh b/site_build.sh deleted file mode 100644 index b2f868cf1e..0000000000 --- a/site_build.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - echo "Copying Config Artifacts to dist" - mkdir -p dist - cp build/worldview-config* dist - echo "Unpacking Build Artifacts" - ( cd build && \ - tar xf worldview.tar.bz2 && \ - tar xf worldview-debug.tar.bz2 && \ - tar xf worldview-config.tar.bz2 - ) - echo "installing npm dependencies" - if ! npm install ; then - echo "ERROR: \"npm install\" failed" &>2 - exit 1 - fi - echo "setting up Python environment" - if ! ./wv-python ; then - echo "ERROR: \"./wv-python\" failed" &>2 - exit 1 - fi - echo "relocation node_module dependencies" - if ! grunt update ; then - echo "ERROR: \"grunt update\" failed" &>2 - exit 1 - fi - echo "Generating site via 'grunt site'" - if ! grunt site ; then - echo "ERROR: \"grunt site\" failed" &>2 - exit 1 - fi - echo "Generating rpm via 'grunt rpm-only'" - if ! grunt rpm-only ; then - echo "ERROR: \"grunt rpm-only\" failed" &>2 - exit 1 - fi diff --git a/tasks/buildAll.sh b/tasks/buildAll.sh new file mode 100755 index 0000000000..9347ca1314 --- /dev/null +++ b/tasks/buildAll.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Bash commands to run in Bamboo to prepare an rpm for deployment + +# Reset directories that have build or install artifacts +rm -rf build dist node_modules .python web/build + +npm install --production=false # Install dependencies, set production false so devDependencies are installed even though NODE_ENV is set to production +npm run build # Build the app + +# Prepare rpm sources +mkdir -p build/rpm/{SOURCES,SPECS} +cp worldview.spec build/rpm/SPECS +cp dist/*.tar.bz2 build/rpm/SOURCES +cp *.conf build/rpm/SOURCES + +# Replace placeholders in rpm spec +grunt rpm-placeholders + +# Build rpm +rpmbuild --define "_topdir $PWD/build/rpm" -ba build/rpm/SPECS/worldview.spec diff --git a/tasks/buildCSS.js b/tasks/buildCSS.js new file mode 100644 index 0000000000..de47778c45 --- /dev/null +++ b/tasks/buildCSS.js @@ -0,0 +1,32 @@ +#!/usr/bin/env node +const fs = require('fs'); +const postcss = require('postcss'); +const postcssImport = require('postcss-import'); +const url = require('postcss-url'); +const autoprefixer = require('autoprefixer'); +const cssnano = require('cssnano'); + +const entryPoint = 'web/css/main.css'; +const outputDir = './web/build/'; +const outputPath = outputDir + 'wv.css'; + +fs.readFile(entryPoint, (err, css) => { + if (err) console.log(err); + postcss([postcssImport, autoprefixer, cssnano]) + .use(url({ + url: 'copy', + assetsPath: 'assets/css' + })) + .process(css, { + from: entryPoint, + to: outputPath, + map: { inline: false } // Source maps are saved to a file + }) + .then(result => { + fs.writeFile(outputPath, result.css, function() {}); + if (result.map) { + // This allows debugging while still minifying the output in dev + fs.writeFile(outputPath + '.map', result.map, function() {}); + } + }); +}); diff --git a/tasks/buildJS.js b/tasks/buildJS.js new file mode 100644 index 0000000000..d3a400af7b --- /dev/null +++ b/tasks/buildJS.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node +const fs = require('fs'); +const browserify = require('browserify'); +const watchify = require('watchify'); +const minimist = require('minimist'); + +const argv = minimist(process.argv.slice(2)); +const isProduction = process.env.NODE_ENV === 'production'; +const isWatching = process.env.WORLDVIEW_WATCH === 'active'; +const isTest = argv.tests; + +const entryPoint = isTest ? './test/main.js' : './web/js/main.js'; +const outputDir = './web/build/'; +const outputPath = outputDir + (isTest ? 'wv-test-bundle.js' : 'wv.js'); + +// Log what we're building, and in what environment +console.log('Building ' + outputPath + ' for ' + process.env.NODE_ENV); +if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir); + +var bundler = browserify(entryPoint, { + debug: !isProduction, // Include source maps (makes bundle size larger) + fullPaths: !isProduction, // For use with https://www.npmjs.com/package/disc + cache: {}, // Required for watchify + packageCache: {}, // Required for watchify + plugin: [isWatching ? watchify : null] +}).transform('babelify', { + presets: ['env'] +}).transform('browserify-shim', { + global: true +}).transform('uglifyify'); // With sourcemaps turned on, it's ok to uglify in dev + +function bundle() { + const begin = Date.now(); + var stream = fs.createWriteStream(outputPath); + bundler.bundle().on('error', function(err) { + console.error(err); + this.emit('end'); + }).pipe(stream); + stream.on('finish', function() { + console.log(outputPath + ' written in ' + (Date.now() - begin) / 1000 + 's'); + }); +} + +bundle(); + +bundler.on('update', bundle); diff --git a/bin/wv-options-build b/tasks/buildOptions.sh similarity index 56% rename from bin/wv-options-build rename to tasks/buildOptions.sh index 35d067aa65..0c97bf030b 100755 --- a/bin/wv-options-build +++ b/tasks/buildOptions.sh @@ -3,7 +3,7 @@ PROG=$(basename "$0") BASE=$(dirname "$0")/.. -BIN_DIR="$BASE/bin" +TASKS_DIR="$BASE/tasks" SRC_DIR="$BASE/node_modules/worldview-options-eosdis" BUILD_DIR="$BASE/build/options-build" DEST_DIR="$BASE/build/options" @@ -15,33 +15,41 @@ if [ -d "$BASE/options" ]; then OPT_DIR="$BASE/options" fi -[ "$FORCE" ] || set -e +# If $IGNORE_ERRORS is true, don't fail on errors +[ "$IGNORE_ERRORS" ] || set -e die() { echo "$PROG: ERROR: $@" >& 2 exit 1 } -ENV=$1 - [ -d "$SRC_DIR" ] || die "Options directory does not exist" +# Set $OPT_SUBDIR to the first argument passed into this script +# Or "release" if there is no argument passed +OPT_SUBDIR="${1-release}" + +# Activate virtual Python environment +PATH=.python/bin:.python/Scripts:${PATH} + +# If $FETCH_GC is set, make request to GIBS GetCapabilities API if [ "$FETCH_GC" ] ; then - rm -rf "$OPT_DIR/$ENV/gc/*" - rm -rf "$OPT_DIR/$ENV/colormaps/gc/*" - "$BIN_DIR/wv-options-fetch" "$OPT_DIR/$ENV/config.json" "$OPT_DIR/$ENV/gc" + rm -rf "$OPT_DIR/$OPT_SUBDIR/gc/*" + rm -rf "$OPT_DIR/$OPT_SUBDIR/colormaps/gc/*" + "$TASKS_DIR/getCapabilities.py" "$OPT_DIR/$OPT_SUBDIR/config.json" "$OPT_DIR/$OPT_SUBDIR/gc" exit 0 fi +# Copy options files to build directory, and various other file operations rm -rf "$BUILD_DIR" "$DEST_DIR" mkdir -p "$BUILD_DIR" "$DEST_DIR" cp -r "$SRC_DIR"/common/* "$BUILD_DIR" if hash rsync 2>/dev/null; then - rsync -a "$SRC_DIR/$ENV"/* "$BUILD_DIR" + rsync -a "$SRC_DIR/$OPT_SUBDIR"/* "$BUILD_DIR" else - cp -r "$SRC_DIR/$ENV"/* "$BUILD_DIR" + cp -r "$SRC_DIR/$OPT_SUBDIR"/* "$BUILD_DIR" fi mkdir -p "$DEST_DIR/config" @@ -51,25 +59,29 @@ if [ -e "$BUILD_DIR/features.json" ] ; then cp "$BUILD_DIR/features.json" "$BUILD_DIR/config/wv.json/_features.json" fi +# Run extractConfigFromWMTS.py script with config.json if [ -e "$BUILD_DIR/config.json" ] ; then - "$BIN_DIR/wv-options-wmts" "$BUILD_DIR/config.json" "$BUILD_DIR/gc" \ + "$TASKS_DIR/extractConfigFromWMTS.py" "$BUILD_DIR/config.json" "$BUILD_DIR/gc" \ "$BUILD_DIR/config/wv.json/_wmts" "$BUILD_DIR/colormaps" fi + +# Run processColormap.py and move colormaps where we want them if [ -e "$BUILD_DIR/colormaps" ] ; then mkdir -p "$BUILD_DIR"/config/palettes if [ -d "$BUILD_DIR"/gc/colormaps ] ; then cp -r "$BUILD_DIR"/gc/colormaps "$BUILD_DIR"/colormaps/gc fi - "$BIN_DIR/wv-options-colormap" "$OPT_DIR/$ENV/config.json" \ + "$TASKS_DIR/processColormap.py" "$OPT_DIR/$OPT_SUBDIR/config.json" \ "$BUILD_DIR/colormaps" \ "$BUILD_DIR/config/palettes" fi +# Run mergeConfig.py on all directories in /config configs=$(ls "$BUILD_DIR/config") for config in $configs; do case $config in *.json) - "$BIN_DIR/wv-options-merge" "$BUILD_DIR/config/$config" \ + "$TASKS_DIR/mergeConfig.py" "$BUILD_DIR/config/$config" \ "$DEST_DIR/config/$config" ;; *) @@ -78,9 +90,11 @@ for config in $configs; do esac done +# Copy brand files from build to dest cp -r "$BUILD_DIR/brand" "$DEST_DIR" cp "$BUILD_DIR/brand.json" "$DEST_DIR" -"$BIN_DIR"/wv-options-validate "$BUILD_DIR/config.json" "$DEST_DIR/config" +# Validate the options build +"$TASKS_DIR/validateOptions.py" "$BUILD_DIR/config.json" "$DEST_DIR/config" exit 0 diff --git a/version-check.js b/tasks/checkNodeVersion.js similarity index 85% rename from version-check.js rename to tasks/checkNodeVersion.js index 83bc519256..32b4a53222 100644 --- a/version-check.js +++ b/tasks/checkNodeVersion.js @@ -1,6 +1,6 @@ /* eslint no-console: "off" */ -var packageJson = require('./package.json'); -var requiredVersion = 'v' + packageJson.engines.node; +var pkg = require('../package.json'); +var requiredVersion = 'v' + pkg.engines.node; var nodeBeingUsed = process.version; if (requiredVersion !== nodeBeingUsed) { diff --git a/bin/wv-options-wmts b/tasks/extractConfigFromWMTS.py similarity index 99% rename from bin/wv-options-wmts rename to tasks/extractConfigFromWMTS.py index 08e5280440..0bcbd235c0 100755 --- a/bin/wv-options-wmts +++ b/tasks/extractConfigFromWMTS.py @@ -8,7 +8,7 @@ import urllib2 as urllib import xmltodict import isodate -from process_temporal_layer import process_temporal +from processTemporalLayer import process_temporal prog = os.path.basename(__file__) base_dir = os.path.join(os.path.dirname(__file__), "..") diff --git a/bin/wv-options-fetch b/tasks/getCapabilities.py similarity index 94% rename from bin/wv-options-fetch rename to tasks/getCapabilities.py index b234b34dad..b4633f0b29 100755 --- a/bin/wv-options-fetch +++ b/tasks/getCapabilities.py @@ -44,10 +44,13 @@ def process_remote(entry): response = urllib.urlopen(url) contents = response.read() output_file = os.path.join(output_dir, entry["to"]) + + # Write GetCapabilities responses to XML files with open(output_file, "w") as fp: fp.write(contents) gc = xmltodict.parse(contents) + # Find all colormaps in GetCapabilities responses and store them in memory try: for layer in gc["Capabilities"]["Contents"]["Layer"]: ident = layer["ows:Identifier"] @@ -70,6 +73,7 @@ def process_remote(entry): print(ident) print(str(traceback.format_exc())) +# Fetch every colormap from the API and write response to file system def process_colormaps(): print "%s: Fetching %d colormaps" % (prog, len(colormaps)) sys.stdout.flush() diff --git a/bin/wv-options-merge b/tasks/mergeConfig.py similarity index 100% rename from bin/wv-options-merge rename to tasks/mergeConfig.py diff --git a/bin/wv-options-colormap b/tasks/processColormap.py similarity index 100% rename from bin/wv-options-colormap rename to tasks/processColormap.py diff --git a/bin/process_temporal_layer.py b/tasks/processTemporalLayer.py similarity index 100% rename from bin/process_temporal_layer.py rename to tasks/processTemporalLayer.py diff --git a/bin/www b/tasks/start.js similarity index 53% rename from bin/www rename to tasks/start.js index 83a12026f3..1aafc0144d 100644 --- a/bin/www +++ b/tasks/start.js @@ -1,6 +1,10 @@ -#!/usr/bin/env node -var app = require('../app'); +var express = require('express'); +var path = require('path'); var port = process.env.PORT || 3000; + +var app = express(); + +app.use(express.static(path.join(__dirname, '../web'))); app.set('port', port); app.listen(port, function () { console.log('Worldview is available at http://localhost:' + port); diff --git a/bin/wv-options-validate b/tasks/validateOptions.py similarity index 99% rename from bin/wv-options-validate rename to tasks/validateOptions.py index 797d20f9cf..d8baa634d0 100755 --- a/bin/wv-options-validate +++ b/tasks/validateOptions.py @@ -5,7 +5,7 @@ from optparse import OptionParser import os import sys -from process_temporal_layer import process_temporal +from processTemporalLayer import process_temporal prog = os.path.basename(__file__) base_dir = os.path.join(os.path.dirname(__file__), "..") diff --git a/deploy/metadata.template.html b/templates/metadata.html similarity index 100% rename from deploy/metadata.template.html rename to templates/metadata.html diff --git a/deploy/new.template.html b/templates/page.html similarity index 56% rename from deploy/new.template.html rename to templates/page.html index ea72a2f25e..740df21d9d 100644 --- a/deploy/new.template.html +++ b/templates/page.html @@ -2,8 +2,8 @@ @OFFICIAL_NAME@ - What's New - - + + diff --git a/test/wv.brand-test.js b/test/brand-spec.js similarity index 100% rename from test/wv.brand-test.js rename to test/brand-spec.js diff --git a/test/data/wv.data-test.js b/test/data/data-spec.js similarity index 99% rename from test/data/wv.data-test.js rename to test/data/data-spec.js index 6d48ab2605..4537f11f60 100644 --- a/test/data/wv.data-test.js +++ b/test/data/data-spec.js @@ -3,7 +3,6 @@ buster.testCase('wv.data', (function () { var config; var errors; - self.setUp = function () { config = { products: { diff --git a/test/data/wv.data.model-test.js b/test/data/model-spec.js similarity index 100% rename from test/data/wv.data.model-test.js rename to test/data/model-spec.js diff --git a/test/date/wv.date-test.js b/test/date/date-spec.js similarity index 100% rename from test/date/wv.date-test.js rename to test/date/date-spec.js diff --git a/test/date/wv.date.model-test.js b/test/date/model-spec.js similarity index 100% rename from test/date/wv.date.model-test.js rename to test/date/model-spec.js diff --git a/test/fixtures.js b/test/fixtures.js index 3a33003545..d6252cf2a1 100644 --- a/test/fixtures.js +++ b/test/fixtures.js @@ -1,6 +1,8 @@ -// FIXME: OL3 -proj4.defs('EPSG:3413', '+title=WGS 84 / NSIDC Sea Ice Polar Stereographic North +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); -proj4.defs('EPSG:3031', '+title=WGS 84 / Antarctic Polar Stereographic +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'); +import { dateModel } from '../web/js/date/model'; +import { layersModel } from '../web/js/layers/model'; +import { mapModel } from '../web/js/map/model'; +import { palettesModel } from '../web/js/palettes/model'; +import { projectionModel } from '../web/js/projection/model'; var fixtures = { red: 'ff0000ff', @@ -148,11 +150,13 @@ fixtures.config = function () { fixtures.models = function (config) { var models = {}; - models.date = wv.date.model(config); - models.proj = wv.proj.model(config); - models.layers = wv.layers.model(models, config); - models.palettes = wv.palettes.model(models, config); - models.map = wv.map.model(models, config); + models.date = dateModel(config); + models.proj = projectionModel(config); + models.layers = layersModel(models, config); + models.palettes = palettesModel(models, config); + models.map = mapModel(models, config); return models; }; + +export default fixtures; diff --git a/test/layers/wv.layers.model.dateRange-test.js b/test/layers/dateRange-spec.js similarity index 100% rename from test/layers/wv.layers.model.dateRange-test.js rename to test/layers/dateRange-spec.js diff --git a/test/layers/wv.layers-test.js b/test/layers/layers-spec.js similarity index 100% rename from test/layers/wv.layers-test.js rename to test/layers/layers-spec.js diff --git a/test/layers/wv.layers.model-test.js b/test/layers/model-spec.js similarity index 100% rename from test/layers/wv.layers.model-test.js rename to test/layers/model-spec.js diff --git a/test/link/wv.link.model-test.js b/test/link/model-spec.js similarity index 100% rename from test/link/wv.link.model-test.js rename to test/link/model-spec.js diff --git a/test/main.js b/test/main.js new file mode 100644 index 0000000000..2c252cf39f --- /dev/null +++ b/test/main.js @@ -0,0 +1,64 @@ +// This file is an entry point used to build a testable bundle of the WV core +// It exposes some internal methods on a global `wv` var for testing purposes +import underscore from 'underscore'; +import 'babel-polyfill'; // Polyfill fixes a bug in Phantom 2.1.x +import brand from '../web/js/brand'; +import { parse as dateParser } from '../web/js/date/date'; +import { dateModel } from '../web/js/date/model'; +import { dataParser } from '../web/js/data/data'; +import { dataModel } from '../web/js/data/model'; +import { parse as layerParser } from '../web/js/layers/layers'; +import { layersModel } from '../web/js/layers/model'; +import { linkModel } from '../web/js/link/model'; +import { mapParser } from '../web/js/map/map'; +import { mapModel } from '../web/js/map/model'; +import { MapRunningData } from '../web/js/map/runningdata'; +import palettes from '../web/js/palettes/palettes'; +import { palettesModel } from '../web/js/palettes/model'; +import { parse as projectionParser } from '../web/js/projection/projection'; +import { projectionModel } from '../web/js/projection/model'; +import { projectionChange } from '../web/js/projection/change'; +import ui from '../web/js/ui/ui'; +import uiIndicator from '../web/js/ui/indicator'; +import uiMouse from '../web/js/ui/mouse'; +import util from '../web/js/util/util'; +import fixtures from './fixtures.js'; + +palettes.model = palettesModel; +ui.indicator = uiIndicator; +ui.mouse = uiMouse; + +window.wv = { + brand: brand, + date: { + parse: dateParser, + model: dateModel + }, + data: { + parse: dataParser, + model: dataModel + }, + layers: { + parse: layerParser, + model: layersModel + }, + link: { + model: linkModel + }, + map: { + parse: mapParser, + model: mapModel, + runningdata: MapRunningData + }, + palettes: palettes, + proj: { + parse: projectionParser, + model: projectionModel, + change: projectionChange + }, + ui: ui, + util: util +}; + +window.fixtures = fixtures; +window._ = underscore; diff --git a/test/map/wv.map-test.js b/test/map/map-spec.js similarity index 100% rename from test/map/wv.map-test.js rename to test/map/map-spec.js diff --git a/test/map/wv.map.model-test.js b/test/map/model-spec.js similarity index 100% rename from test/map/wv.map.model-test.js rename to test/map/model-spec.js diff --git a/test/map/wv.map.runningdata-test.js b/test/map/runningdata-spec.js similarity index 97% rename from test/map/wv.map.runningdata-test.js rename to test/map/runningdata-spec.js index 437444236c..148a0b1651 100644 --- a/test/map/wv.map.runningdata-test.js +++ b/test/map/runningdata-spec.js @@ -3,7 +3,7 @@ buster.testCase('wv.map.runningdata', { errors: null, setUp: function () { - models = { + var models = { layers: { events: { on: this.stub() diff --git a/test/palettes/wv.palettes.model-test.js b/test/palettes/model-spec.js similarity index 100% rename from test/palettes/wv.palettes.model-test.js rename to test/palettes/model-spec.js diff --git a/test/palettes/wv.palettes-test.js b/test/palettes/palettes-spec.js similarity index 100% rename from test/palettes/wv.palettes-test.js rename to test/palettes/palettes-spec.js diff --git a/test/proj/wv.proj.change-test.js b/test/projection/change-spec.js similarity index 100% rename from test/proj/wv.proj.change-test.js rename to test/projection/change-spec.js diff --git a/test/proj/wv.proj.model-test.js b/test/projection/model-spec.js similarity index 100% rename from test/proj/wv.proj.model-test.js rename to test/projection/model-spec.js diff --git a/test/proj/wv.proj-test.js b/test/projection/projection-spec.js similarity index 100% rename from test/proj/wv.proj-test.js rename to test/projection/projection-spec.js diff --git a/test/ui/wv.ui.indicator-test.js b/test/ui/indicator-spec.js similarity index 99% rename from test/ui/wv.ui.indicator-test.js rename to test/ui/indicator-spec.js index 6dc46ea93c..138cab8392 100644 --- a/test/ui/wv.ui.indicator-test.js +++ b/test/ui/indicator-spec.js @@ -1,6 +1,5 @@ buster.testCase('wv.ui.indicator', (function () { var self = {}; - self.setUp = function () { wv.ui.indicator.active = []; }; diff --git a/test/ui/wv.ui.mouse-test.js b/test/ui/mouse-spec.js similarity index 100% rename from test/ui/wv.ui.mouse-test.js rename to test/ui/mouse-spec.js diff --git a/test/util/wv.util.browser-test.js b/test/util/browser-spec.js similarity index 88% rename from test/util/wv.util.browser-test.js rename to test/util/browser-spec.js index adfb5827b8..32a2b1ba4a 100644 --- a/test/util/wv.util.browser-test.js +++ b/test/util/browser-spec.js @@ -106,36 +106,28 @@ buster.testCase('wv.util.browser', { */ 'Large device': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(1000), - height: this.stub() - .returns(1000) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([1000, 1000]); buster.refute(wv.util.browser.tests.small()); buster.refute(wv.util.browser.tests.constrained()); }, - 'Small device': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(200), - height: this.stub() - .returns(200) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([200, 200]); buster.assert(wv.util.browser.tests.small()); }, - 'Constrained device, height': function () { - this.stub(window, '$') - .returns({ - width: this.stub() - .returns(1000), - height: this.stub() - .returns(300) - }); + var dimensions = this.stub( + wv.util.browser.tests, + 'getWindowDimensions' + ); + dimensions.returns([1000, 300]); buster.assert(wv.util.browser.tests.constrained()); } }); diff --git a/test/util/wv.util.events-test.js b/test/util/events-spec.js similarity index 100% rename from test/util/wv.util.events-test.js rename to test/util/events-spec.js diff --git a/test/util/wv.util-test.js b/test/util/util-spec.js similarity index 87% rename from test/util/wv.util-test.js rename to test/util/util-spec.js index 2ea2fe9d01..3e69f928a4 100644 --- a/test/util/wv.util-test.js +++ b/test/util/util-spec.js @@ -56,19 +56,19 @@ buster.testCase('wv.util', (function () { }; self['parseTimestampUTC: Parses valid timestamp'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15, 11, 22, 33)); + var answer = new Date(Date.UTC(2013, 2, 15, 11, 22, 33)); var result = wv.util.parseTimestampUTC('2013-03-15T11:22:33Z'); buster.assert.equals(result.getTime(), answer.getTime()); }; self['parseTimestampUTC: Parses valid timestamp without Z'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15, 11, 22, 33)); + var answer = new Date(Date.UTC(2013, 2, 15, 11, 22, 33)); var result = wv.util.parseTimestampUTC('2013-03-15T11:22:33'); buster.assert.equals(result.getTime(), answer.getTime()); }; self['parseDateUTC: Parses valid date'] = function () { - var answer = new Date(Date.UTC(2013, 02, 15)); + var answer = new Date(Date.UTC(2013, 2, 15)); var result = wv.util.parseDateUTC('2013-03-15'); buster.assert.equals(result.getTime(), answer.getTime()); }; @@ -109,7 +109,7 @@ buster.testCase('wv.util', (function () { }; self['clearTimeUTC: Time set to UTC midnight'] = function () { - var d = new Date(2013, 02, 15, 12, 34, 56, 789); + var d = new Date(2013, 2, 15, 12, 34, 56, 789); wv.util.clearTimeUTC(d); buster.assert.equals(2013, d.getUTCFullYear()); buster.assert.equals(2, d.getUTCMonth()); @@ -153,37 +153,37 @@ buster.testCase('wv.util', (function () { }; self['dateAdd: Adds days'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'day', 4); buster.assert.equals(result.getDate(), 5); }; self['dateAdd: Adds months'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'month', 4); buster.assert.equals(result.getMonth(), 5); }; self['dateAdd: Adds years'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); var result = wv.util.dateAdd(d, 'year', 4); buster.assert.equals(result.getFullYear(), 2015); }; self['dateAdd: Throws error on invalid interval'] = function () { - var d = new Date(2011, 01, 01); + var d = new Date(2011, 1, 1); buster.assert.exception(function () { wv.util.dateAdd(d, 'foo', 5); }); }; self['daysInMonth: Feb, non-leap'] = function () { - var d = new Date(2015, 01, 15); + var d = new Date(2015, 1, 15); buster.assert.equals(wv.util.daysInMonth(d), 28); }; self['daysInMonth: Feb, leap'] = function () { - var d = new Date(2016, 01, 15); + var d = new Date(2016, 1, 15); buster.assert.equals(wv.util.daysInMonth(d), 29); }; @@ -212,27 +212,27 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Day up'] = function () { - var d = new Date(Date.UTC(2014, 01, 15)); + var d = new Date(Date.UTC(2014, 1, 15)); d = wv.util.rollDate(d, 'day', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 16))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 16))); }; self['rollDate: Day up, roll'] = function () { - var d = new Date(Date.UTC(2014, 01, 28)); + var d = new Date(Date.UTC(2014, 1, 28)); d = wv.util.rollDate(d, 'day', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 1))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 1))); }; self['rollDate: Day down'] = function () { - var d = new Date(Date.UTC(2014, 01, 15)); + var d = new Date(Date.UTC(2014, 1, 15)); d = wv.util.rollDate(d, 'day', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 14))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 14))); }; self['rollDate: Day down, roll'] = function () { - var d = new Date(Date.UTC(2014, 01, 01)); + var d = new Date(Date.UTC(2014, 1, 1)); d = wv.util.rollDate(d, 'day', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 01, 28))); + buster.assert.equals(d, new Date(Date.UTC(2014, 1, 28))); }; self['rollDate: Day up, roll over max'] = function () { @@ -264,9 +264,9 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Month up'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'month', 1); - buster.assert.equals(d, new Date(Date.UTC(2014, 06, 15))); + buster.assert.equals(d, new Date(Date.UTC(2014, 6, 15))); }; self['rollDate: Month up, roll'] = function () { @@ -276,9 +276,9 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Month down'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'month', -1); - buster.assert.equals(d, new Date(Date.UTC(2014, 04, 15))); + buster.assert.equals(d, new Date(Date.UTC(2014, 4, 15))); }; self['rollDate: Month down, roll'] = function () { @@ -336,31 +336,31 @@ buster.testCase('wv.util', (function () { }; self['rollDate: Year up'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'year', 1); - buster.assert.equals(d, new Date(Date.UTC(2015, 05, 15))); + buster.assert.equals(d, new Date(Date.UTC(2015, 5, 15))); }; self['rollDate: Year down'] = function () { - var d = new Date(Date.UTC(2014, 05, 15)); + var d = new Date(Date.UTC(2014, 5, 15)); d = wv.util.rollDate(d, 'year', -1); - buster.assert.equals(d, new Date(Date.UTC(2013, 05, 15))); + buster.assert.equals(d, new Date(Date.UTC(2013, 5, 15))); }; self['rollDate: Year up, roll over max'] = function () { - var minDate = new Date(Date.UTC(2000, 03, 12)); - var maxDate = new Date(Date.UTC(2015, 06, 16)); + var minDate = new Date(Date.UTC(2000, 3, 12)); + var maxDate = new Date(Date.UTC(2015, 6, 16)); var d = new Date(Date.UTC(2015, 0, 1)); d = wv.util.rollDate(d, 'year', 1, minDate, maxDate); - buster.assert.equals(d, new Date(Date.UTC(2000, 03, 12))); + buster.assert.equals(d, new Date(Date.UTC(2000, 3, 12))); }; self['rollDate: Year down, roll over min'] = function () { - var minDate = new Date(Date.UTC(2000, 03, 12)); - var maxDate = new Date(Date.UTC(2015, 06, 16)); + var minDate = new Date(Date.UTC(2000, 3, 12)); + var maxDate = new Date(Date.UTC(2015, 6, 16)); var d = new Date(Date.UTC(2000, 8, 1)); d = wv.util.rollDate(d, 'year', -1, minDate, maxDate); - buster.assert.equals(d, new Date(Date.UTC(2015, 06, 16))); + buster.assert.equals(d, new Date(Date.UTC(2015, 6, 16))); }; self['formatDMS: zero'] = function () { diff --git a/web/css/wv.alert.css b/web/css/alert.css similarity index 100% rename from web/css/wv.alert.css rename to web/css/alert.css diff --git a/web/css/wv.anim.widget.css b/web/css/anim.widget.css similarity index 99% rename from web/css/wv.anim.widget.css rename to web/css/anim.widget.css index c0d370b373..498e19e480 100644 --- a/web/css/wv.anim.widget.css +++ b/web/css/anim.widget.css @@ -146,7 +146,9 @@ color: #999; cursor: pointer; } - +.gif-dialog { + color: #fff; +} .gif-dialog .content { line-height: 15px; } diff --git a/web/css/bank.css b/web/css/bank.css index 8c0a60cc52..3795d910de 100644 --- a/web/css/bank.css +++ b/web/css/bank.css @@ -112,15 +112,6 @@ h4 { text-transform: uppercase; } -#callSelectorLink { - display: inline-block; - width: 32px; - height: 32px; - background: transparent url("../images/addLayers.png"); - margin-left: 50px; - float: right; -} - .bank div, .bank ul { display: block; diff --git a/web/css/wv.date.css b/web/css/date.css similarity index 94% rename from web/css/wv.date.css rename to web/css/date.css index eaf30b1e35..cbc2f5521c 100644 --- a/web/css/wv.date.css +++ b/web/css/date.css @@ -87,16 +87,6 @@ a.ecbutton { top: 3px; } -a.collapse { - background-image: url("../images/collapseDown.png"); - background-repeat: no-repeat; -} - -a.expand { - background-image: url("../images/expandUp.png"); - background-repeat: no-repeat; -} - .dateSpanSlider { display: none !important; } diff --git a/web/css/wv.dateselector.css b/web/css/dateselector.css similarity index 100% rename from web/css/wv.dateselector.css rename to web/css/dateselector.css diff --git a/web/css/wv.debug.css b/web/css/debug.css similarity index 100% rename from web/css/wv.debug.css rename to web/css/debug.css diff --git a/web/css/wv.events.css b/web/css/events.css similarity index 100% rename from web/css/wv.events.css rename to web/css/events.css diff --git a/web/css/wv.fonts.css b/web/css/fonts.css similarity index 90% rename from web/css/wv.fonts.css rename to web/css/fonts.css index 948fae3164..b777476175 100644 --- a/web/css/wv.fonts.css +++ b/web/css/fonts.css @@ -18,8 +18,8 @@ font-family: 'Open Sans'; font-style: normal; font-weight: 400; - src: url('../font/OpenSans/Light/OpenSans-Regular.eot'); - src: local('Open Sans Regular'), local('OpenSans-Regular'), url('../font/OpenSans/Light/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../font/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../font/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../font/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'); + src: url('../font/OpenSans/Regular/OpenSans-Regular.eot'); + src: local('Open Sans Regular'), local('OpenSans-Regular'), url('../font/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../font/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../font/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../font/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'); } @font-face { /* Open Sans Italic */ diff --git a/web/css/wv.image.css b/web/css/image.css similarity index 100% rename from web/css/wv.image.css rename to web/css/image.css diff --git a/web/css/jquery-ui-override.css b/web/css/jquery-ui-override.css new file mode 100644 index 0000000000..2a0925bceb --- /dev/null +++ b/web/css/jquery-ui-override.css @@ -0,0 +1,21 @@ +/* + * Default jquery-ui button + */ + +a.ui-button.ui-state-default { + color: #eee; + font-weight: 700; + border: 1px solid #666; + font-size: 1em; + background-image: linear-gradient(#555, #666); + background-image: -ms-linear-gradient(#555, #666); + background-image: -o-linear-gradient(#555, #666); + font-family: "Segoe UI", "Arial", sans-serif; +} + +a.ui-button.ui-state-default.ui-state-hover { + border-color: #eee; + background-color: #eee; + background-image: none; + color: #404040; +} diff --git a/web/css/wv.layers.info.css b/web/css/layers.info.css similarity index 100% rename from web/css/wv.layers.info.css rename to web/css/layers.info.css diff --git a/web/css/wv.layers.modal.css b/web/css/layers.modal.css similarity index 99% rename from web/css/wv.layers.modal.css rename to web/css/layers.modal.css index 8d0d595800..1b791d5a0e 100644 --- a/web/css/wv.layers.modal.css +++ b/web/css/layers.modal.css @@ -429,6 +429,7 @@ } #selected-category .ui-tabs .ui-tabs-nav li a { + color: #eee; float: none; box-sizing: border-box; -moz-box-sizing: border-box; @@ -517,7 +518,8 @@ line-height: 20px; } -.layers-all-header.has-checkbox.checked::before {color: white; +.layers-all-header.has-checkbox.checked::before { + color: #fff; content: '\2713'; background-color: #d54f21; } diff --git a/web/css/wv.layers.options.css b/web/css/layers.options.css similarity index 90% rename from web/css/wv.layers.options.css rename to web/css/layers.options.css index d076aae732..97d138091e 100644 --- a/web/css/wv.layers.options.css +++ b/web/css/layers.options.css @@ -1,3 +1,7 @@ +#wv-layers-options-dialog { + color: #fff; +} + #wv-layers-options-dialog .wv-header { margin-top: 1em; font-size: 14px; @@ -9,6 +13,7 @@ } #wv-layers-options-dialog .wv-label { + color: #fff; width: 100%; } diff --git a/web/css/wv.link.css b/web/css/link.css similarity index 99% rename from web/css/wv.link.css rename to web/css/link.css index 137bfa05eb..a48cdac643 100644 --- a/web/css/wv.link.css +++ b/web/css/link.css @@ -105,6 +105,7 @@ #wv-link-shorten { margin-top: 15px; width: 100%; + color: #fff; } #social-share { diff --git a/web/css/main.css b/web/css/main.css new file mode 100644 index 0000000000..5485fa21dd --- /dev/null +++ b/web/css/main.css @@ -0,0 +1,46 @@ +/* Dependency CSS */ +@import url("../../node_modules/font-awesome/css/font-awesome.css"); +@import url("../../node_modules/jquery-ui/themes/base/jquery-ui.css"); +@import url("../../node_modules/jquery-ui/themes/ui-darkness/jquery-ui.css"); +@import url("../../node_modules/icheck/skins/square/grey.css"); +@import url("../../node_modules/icheck/skins/square/red.css"); +@import url("../../node_modules/icheck/skins/line/red.css"); +@import url("../../node_modules/jscrollpane/style/jquery.jscrollpane.css"); +@import url("../../node_modules/perfect-scrollbar/dist/css/perfect-scrollbar.css"); +@import url("../ext/mobiscroll-2.6.0/mobiscroll.css"); +@import url("../../node_modules/jquery.joyride/jquery.joyride.css"); +@import url("../../node_modules/jquery-jcrop/css/jquery.Jcrop.css"); +@import url("../../node_modules/ol/ol.css"); +@import url("../../node_modules/nouislider/src/jquery.nouislider.css"); + +/* App CSS */ +@import url("fonts.css"); +@import url("reset.css"); +@import url("util.css"); +@import url("alert.css"); +@import url("bank.css"); +@import url("map.css"); +@import url("link.css"); +@import url("palettes.css"); +@import url("image.css"); +@import url("debug.css"); +@import url("projection.css"); +@import url("date.css"); +@import url("menuPicker.css"); +@import url("tour.css"); +@import url("products.css"); +@import url("indicator.css"); +@import url("events.css"); +@import url("dataDownload.css"); +@import url("sidebar.css"); +@import url("layers.modal.css"); +@import url("scrollbar.css"); +@import url("layers.options.css"); +@import url("layers.info.css"); +@import url("timeline.css"); +@import url("anim.widget.css"); +@import url("dateselector.css"); +@import url("tooltip.css"); +@import url("mobile.css"); +@import url("../pages/css/document.css"); +@import url("jquery-ui-override.css"); diff --git a/web/css/wv.map.css b/web/css/map.css similarity index 100% rename from web/css/wv.map.css rename to web/css/map.css diff --git a/web/css/wv.mobile.css b/web/css/mobile.css similarity index 100% rename from web/css/wv.mobile.css rename to web/css/mobile.css diff --git a/web/css/wv.palettes.css b/web/css/palettes.css similarity index 100% rename from web/css/wv.palettes.css rename to web/css/palettes.css diff --git a/web/css/products.css b/web/css/products.css index 2dbf9a6e15..167de1325f 100644 --- a/web/css/products.css +++ b/web/css/products.css @@ -54,6 +54,10 @@ display: block; } +#productsHolder-tabs .ui-state-default a { + color: #fff; +} + #productsHolder-tabs .ui-state-default:hover a { background-color: #ccc; color: #000; diff --git a/web/css/projection.css b/web/css/projection.css index 595e817c4d..3233791535 100644 --- a/web/css/projection.css +++ b/web/css/projection.css @@ -14,14 +14,6 @@ div.sw_current { height: 40px; } -#projection div.sw_current { - background-image: url("../images/geographic.png"); -} - -#projection div.sw_current:hover { - background-image: url("../images/geographicon.png"); -} - #projection ul li { margin: 0 !important; } @@ -31,30 +23,6 @@ div.sw_current { margin-top: 2px; } -#projection ul li div.hidden a.sw_arctic { - background-image: url("../images/arctic.png"); -} - -#projection ul li div.hidden a.sw_antarctic { - background-image: url("../images/antarctic.png"); -} - -#projection ul li div.hidden a.sw_geographic { - background-image: url("../images/geographic.png"); -} - -#projection ul li div.hidden a.sw_arctic:hover { - background-image: url("../images/arcticon.png"); -} - -#projection ul li div.hidden a.sw_antarctic:hover { - background-image: url("../images/antarcticon.png"); -} - -#projection ul li div.hidden a.sw_geographic:hover { - background-image: url("../images/geographicon.png"); -} - #projection ul li:hover div.hidden { z-index: 299; display: block; diff --git a/web/css/wv.main.css b/web/css/reset.css similarity index 99% rename from web/css/wv.main.css rename to web/css/reset.css index 400781a351..345d154fb5 100644 --- a/web/css/wv.main.css +++ b/web/css/reset.css @@ -414,6 +414,7 @@ div.horizontalContainer { .ui-menu { position: absolute; width: 150px; + padding: 0; z-index: 1000; } @@ -566,11 +567,7 @@ label { .wv-panel .ui-dialog-title { font-weight: 400; -} - -.ui-menu .ui-menu-item { - padding-top: 5px; - padding-bottom: 5px; + color: #fff; } /* style for UI dialog buttons that are hovered over */ diff --git a/web/css/wv.scrollbar.css b/web/css/scrollbar.css similarity index 100% rename from web/css/wv.scrollbar.css rename to web/css/scrollbar.css diff --git a/web/css/wv.sidebar.css b/web/css/sidebar.css similarity index 100% rename from web/css/wv.sidebar.css rename to web/css/sidebar.css diff --git a/web/css/wv.timeline.css b/web/css/timeline.css similarity index 100% rename from web/css/wv.timeline.css rename to web/css/timeline.css diff --git a/web/css/wv.tooltip.css b/web/css/tooltip.css similarity index 100% rename from web/css/wv.tooltip.css rename to web/css/tooltip.css diff --git a/web/css/wv.tour.css b/web/css/tour.css similarity index 64% rename from web/css/wv.tour.css rename to web/css/tour.css index 76d419707f..37e14dd595 100644 --- a/web/css/wv.tour.css +++ b/web/css/tour.css @@ -14,6 +14,25 @@ background-color: rgb(175, 181, 196); } +.joyride-tip-guide p, +.joyride-tip-guide ul { + margin: 0 0 14px; +} + +.joyride-tip-guide.bordered, +.joyride-bordered { + border: #808080 solid 1px; +} + +.joyride-tip-guide.wide, +.joyride-wide { + width: 450px; +} + +.joyride-close-tip { + color: rgba(38, 43, 49, 0.4) !important; +} + .tour h3 { color: rgb(38, 43, 49); font: 18px 'Open Sans', sans-serif; @@ -139,7 +158,8 @@ button.skipTour:hover { vertical-align: top; } -.tour p { +.tour p, +.tour ul { color: rgb(38, 43, 49); font: 400 13px/16px 'Open Sans', sans-serif; } @@ -270,12 +290,62 @@ button.done:hover { .joyride-tip-guide { z-index: 293; + background: rgb(175, 181, 196); + padding-bottom: 32px; + width: 350px; } .joyride-tip-guide[data-index="0"] { z-index: 296; } +.joyride-tip-guide a:hover { + color: #000 !important; + border-bottom: 0; +} + +.joyride-tip-guide .joyride-next-tip, +.joyride-tip-guide .joyride-prev-tip { + width: auto; + float: left; + padding: 6px 18px 4px; + font-size: 13px; + border: 1px solid #d7dada; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + text-align: center; + text-shadow: none; + color: #000; + background-color: #f4f5f5; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f5f5), color-stop(100%, #dfdddd)); + background-image: -webkit-linear-gradient(top, #f4f5f5, #dfdddd); + background-image: -moz-linear-gradient(top, #f4f5f5, #dfdddd); + background-image: -ms-linear-gradient(top, #f4f5f5, #dfdddd); + background-image: -o-linear-gradient(top, #f4f5f5, #dfdddd); + background-image: linear-gradient(to bottom, #f4f5f5, #dfdddd); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#f4f5f5, endColorstr=#dfdddd); +} + +.joyride-tip-guide .joyride-next-tip { + float: right; + margin-right: 0; +} + +.joyride-tip-guide .joyride-next-tip:hover, +.joyride-tip-guide .joyride-prev-tip:hover { + border: 1px solid #bfc4c4 !important; + background-color: #d9dddd; + color: #000; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #d9dddd), color-stop(100%, #c6c3c3)); + background-image: -webkit-linear-gradient(top, #d9dddd, #c6c3c3); + background-image: -moz-linear-gradient(top, #d9dddd, #c6c3c3); + background-image: -ms-linear-gradient(top, #d9dddd, #c6c3c3); + background-image: -o-linear-gradient(top, #d9dddd, #c6c3c3); + background-image: linear-gradient(to bottom, #d9dddd, #c6c3c3); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#d9dddd, endColorstr=#c6c3c3); +} + table.splash td.splash-info { vertical-align: top; } @@ -289,9 +359,13 @@ table.splash td.splash-info { } p.wv-tour-page-count { - text-align: right; - margin-top: 7px; font: 400 13px/16px 'Open Sans', sans-serif; + color: #262b31; + text-align: right; + position: absolute; + bottom: 0; + right: 0; + margin: 12px; } .wv-tour-visible-icon { @@ -363,3 +437,80 @@ p.wv-tour-page-count { .joyride-nub-border { pointer-events: none; } + +.joyride-tip-guide.bordered span.joyride-nub::after { + content: " "; + display: block; + position: absolute; + width: 0; + height: 0; + z-index: -1; +} + +.joyride-tip-guide span.joyride-nub.top { + border-color: #afb5c4 !important; + border-top-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; +} + +.joyride-tip-guide.toolbarTip span.joyride-nub.top { + left: 250px; +} + +.joyride-tip-guide.bordered span.joyride-nub.top::after { + top: -16px; + left: -15px; + border: 15px solid #808080; + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; +} + +.joyride-tip-guide span.joyride-nub.right { + border-color: #afb5c4 !important; + border-top-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; +} + +.joyride-tip-guide.bordered span.joyride-nub.right::after { + top: -15px; + left: -14px; + border: 15px solid #808080; + border-top-color: transparent; + border-right-color: transparent; + border-bottom-color: transparent; +} + +.joyride-tip-guide span.joyride-nub.bottom { + border-color: #afb5c4 !important; + border-bottom-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; +} + +.joyride-tip-guide.bordered span.joyride-nub.bottom::after { + top: -14px; + left: -15px; + border: 15px solid #808080; + border-bottom-color: transparent; + border-left-color: transparent; + border-right-color: transparent; +} + +.joyride-tip-guide span.joyride-nub.left { + border-color: #afb5c4 !important; + border-top-color: transparent !important; + border-left-color: transparent !important; + border-bottom-color: transparent !important; +} + +.joyride-tip-guide.bordered span.joyride-nub.left::after { + top: -15px; + left: -16px; + border: 15px solid #808080; + border-top-color: transparent; + border-left-color: transparent; + border-bottom-color: transparent; +} diff --git a/web/css/wv.dateline.css b/web/css/wv.dateline.css deleted file mode 100644 index aa97ec6112..0000000000 --- a/web/css/wv.dateline.css +++ /dev/null @@ -1,10 +0,0 @@ -.dateline { - stroke: rgb(0, 0, 0); - stroke-width: 2; - stroke-dasharray: 10, 5; -} - -.dateline-text { - pointer-events: none; - display: block; -} diff --git a/web/ext/ui/d3/d3.js b/web/ext/d3/d3.js similarity index 99% rename from web/ext/ui/d3/d3.js rename to web/ext/d3/d3.js index 1a36e12460..2948b1237b 100644 --- a/web/ext/ui/d3/d3.js +++ b/web/ext/d3/d3.js @@ -1,3 +1,4 @@ +// This is a fork of d3@3.4.11 with the changes in this commit: https://github.com/d3/d3/pull/2019/files !function() { var d3 = { version: "3.4.11" @@ -1108,7 +1109,7 @@ d3_mouse_bug44083 = !(ctm.f || ctm.e); svg.remove(); } - if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, + if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, point.y = e.clientY; point = point.matrixTransform(container.getScreenCTM().inverse()); return [ point.x, point.y ]; @@ -1477,7 +1478,7 @@ } function mousewheeled() { var dispatch = event.of(this, arguments); - if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)), + if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)), d3_selection_interrupt.call(this), zoomstarted(dispatch); mousewheelTimer = setTimeout(function() { mousewheelTimer = null; @@ -1857,7 +1858,7 @@ d3.xhr = d3_xhrType(d3_identity); function d3_xhrType(response) { return function(url, mimeType, callback) { - if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, + if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, mimeType = null; return d3_xhr(url, mimeType, response, callback); }; @@ -2689,7 +2690,7 @@ return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; } function d3_time_parseZone(date, string, i) { - return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = -string, + return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = -string, i + 5) : -1; } function d3_time_expandYear(d) { @@ -2882,7 +2883,7 @@ var λ00, φ00, λ0, cosφ0, sinφ0; d3_geo_area.point = function(λ, φ) { d3_geo_area.point = nextPoint; - λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), + λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ); }; function nextPoint(λ, φ) { @@ -4711,7 +4712,7 @@ return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]); }; projection.rotate = function(_) { - return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), + return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), [ _[0], _[1], _[2] - 90 ]); }; return rotate([ 0, 0, 90 ]); @@ -5562,7 +5563,7 @@ }; quadtree.extent = function(_) { if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ]; - if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1]; return quadtree; }; @@ -7228,7 +7229,7 @@ return d3_layout_treemapPad(node, x); } var type; - pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], + pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], padConstant) : padConstant; return treemap; }; @@ -7528,7 +7529,7 @@ scale.tickFormat = function(n, format) { if (!arguments.length) return d3_scale_logFormat; if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); - var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, + var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, Math.floor), e; return function(d) { return d / pow(f(log(d) + e)) <= k ? format(d) : ""; @@ -7814,7 +7815,7 @@ d3.svg.arc = function() { var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; function arc() { - var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, + var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1); return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z"; } @@ -7950,7 +7951,7 @@ return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension)); } function d3_svg_lineCardinalClosed(points, tension) { - return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); } function d3_svg_lineCardinal(points, tension) { @@ -8656,7 +8657,7 @@ var g = d3.select(this); var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy(); var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickTransform; - var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), + var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), d3.transition(path)); tickEnter.append("line"); tickEnter.append("text"); @@ -9257,5 +9258,4 @@ return request.responseXML; }); if (typeof define === "function" && define.amd) define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; - this.d3 = d3; -}(); \ No newline at end of file +}(); diff --git a/web/ext/ui/d3/d3.min.js b/web/ext/d3/d3.min.js similarity index 100% rename from web/ext/ui/d3/d3.min.js rename to web/ext/d3/d3.min.js diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css b/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css deleted file mode 100644 index 2d6ebcc0d4..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.css +++ /dev/null @@ -1 +0,0 @@ -.dw{position:absolute;top:5%;left:0;z-index:1001;color:#fff;font-family:arial,verdana,sans-serif;font-size:12px;text-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-ms-touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-backface-visibility:hidden}.dwi{position:static;display:inline-block}.dwwr{min-width:170px;zoom:1;padding:0 10px;text-align:center}.dw-persp,.dwo{width:100%;height:auto;position:absolute;top:0;left:0;z-index:1001}.dwo{background:#000;opacity:.7;filter:Alpha(Opacity=70);display:none}.dw-bubble .dw{margin:20px 0}.dw-bubble .dw-arrw{position:absolute;left:0;width:100%}.dw-bubble-top .dw-arrw{bottom:-36px}.dw-bubble-bottom .dw-arrw{top:-36px}.dw-bubble .dw-arrw-i{margin:0 30px;position:relative;height:36px}.dw-bubble .dw-arr{display:block}.dw-arr{display:none;position:absolute;left:0;width:0;height:0;border-width:18px;border-style:solid;margin-left:-18px}.dw-bubble-bottom .dw-arr{top:0;border-color:transparent transparent #fff}.dw-bubble-top .dw-arr{bottom:0;border-color:#fff transparent transparent}.dwc{padding:30px 2px 5px;display:inline-block}.dwl{text-align:center;line-height:30px;height:30px;white-space:nowrap;position:absolute;top:-30px;width:100%}.dwv{padding:10px 0;border-bottom:1px solid #000}.dwrc{-webkit-border-radius:3px;border-radius:3px}.dwwc{margin:0;padding:0 2px;position:relative;background:#000;zoom:1}.dwwl{margin:4px 2px;padding:0 2px;position:relative;z-index:5}.dwww{position:relative;padding:1px}.dww{overflow:hidden;position:relative;z-index:2}.dw-moz .dww{opacity:.99}.dwsc .dwwl{background:#888;background:linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.35,#333),color-stop(0.5,#888),color-stop(0.65,#333),to(#000));background:-webkit-linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%);background:-moz-linear-gradient(#000 0,#333 35%,#888 50%,#333 65%,#000 100%)}.dwsc .dww{color:#fff;background:#444;background:linear-gradient(#000 0,#444 45%,#444 55%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.45,#444),color-stop(0.55,#444),to(#000));background:-webkit-linear-gradient(#000 0,#444 45%,#444 55%,#000 100%);background:-moz-linear-gradient(#000 0,#444 45%,#444 55%,#000 100%)}.dw-bf{-webkit-perspective:1000;-webkit-backface-visibility:hidden}.dw-ul{position:relative;z-index:2}.dw-li{padding:0 5px;display:block;text-align:center;line-height:40px;font-size:26px;white-space:nowrap;text-shadow:0 1px 1px #000;vertical-align:bottom;opacity:.3;filter:Alpha(Opacity=30)}.dw-li.dw-hl{background:#fff;background:rgba(255,255,255,.3)}.dw-li.dw-v{opacity:1;filter:Alpha(Opacity=100)}.dw-li.dw-h{visibility:hidden}.dw-i{position:relative;height:100%}.dwwb{position:absolute;z-index:4;left:0;cursor:pointer;width:100%;height:40px;text-align:center;opacity:1;transition:opacity .2s linear;-webkit-transition:opacity .2s linear}.dwa .dwwb{opacity:0}.dwwbp{top:0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;font-size:40px}.dwwbm{bottom:0;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;font-size:32px;font-weight:700}.dwpm .dwwc{background:0 0}.dwpm .dwwl{padding:0}.dwpm .dw-li{text-shadow:none}.dwpm .dwwol{display:none}.dwwo{position:absolute;z-index:3;top:0;left:0;width:100%;height:100%;background:linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%);background:-webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.52,rgba(44,44,44,0)),color-stop(0.48,rgba(44,44,44,0)),to(#000));background:-webkit-linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%);background:-moz-linear-gradient(#000 0,rgba(44,44,44,0) 52%,rgba(44,44,44,0) 48%,#000 100%)}.dwwol{position:absolute;z-index:1;top:50%;left:0;width:100%;height:0;margin-top:-1px;border-top:1px solid #333;border-bottom:1px solid #555}.dwbg .dwb{cursor:pointer;overflow:hidden;display:block;height:40px;line-height:40px;padding:0 15px;margin:0 2px;font-size:14px;font-weight:700;text-decoration:none;text-shadow:0 -1px 1px #000;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,.5);color:#fff;background:#000;background:linear-gradient(#6e6e6e 50%,#000 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#000),color-stop(0.5,#6e6e6e));background:-webkit-linear-gradient(#6e6e6e 50%,#000 50%);background:-moz-linear-gradient(#6e6e6e 50%,#000 50%);white-space:nowrap;text-overflow:ellipsis;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.5);-webkit-border-radius:5px;-webkit-backface-visibility:hidden}.dwbc{padding:5px 0;text-align:center}.dwbw{display:inline-block;width:50%;position:relative;z-index:5}.dwbc-p .dwbw{width:33.33%}.dwhl{padding-top:10px}.dwhl .dwl{display:none}.dwms .dwwms .dw-li{padding:0 40px;position:relative}.dwms .dw-msel:after{width:40px;text-align:center;position:absolute;top:0;left:0;content:'✔'}.dwbg{background:rgba(38,43,49,.85);border-radius:3px;-webkit-border-radius:3px}.dwbg .dwpm .dwwl{border:1px solid #aaa}.dwbg .dwpm .dww{color:#000;background:#fff;-webkit-border-radius:3px}.dwbg .dwwb{background:#ccc;color:#888;text-shadow:0 -1px 1px #333;box-shadow:0 0 5px #333;-webkit-box-shadow:0 0 5px #333}.dwbg .dwwbp{background:linear-gradient(#f7f7f7,#bdbdbd);background:-webkit-gradient(linear,left bottom,left top,from(#bdbdbd),to(#f7f7f7));background:-webkit-linear-gradient(#f7f7f7,#bdbdbd);background:-moz-linear-gradient(#f7f7f7,#bdbdbd)}.dwbg .dwwbm{background:linear-gradient(#bdbdbd,#f7f7f7);background:-webkit-gradient(linear,left bottom,left top,from(#f7f7f7),to(#bdbdbd));background:-webkit-linear-gradient(#bdbdbd,#f7f7f7);background:-moz-linear-gradient(#bdbdbd,#f7f7f7)}.dwbg .dwb-a{background:#3c7500;background:linear-gradient(#94c840 50%,#3c7500 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#3c7500),color-stop(0.5,#94c840));background:-webkit-linear-gradient(#94c840 50%,#3c7500 50%);background:-moz-linear-gradient(#94c840 50%,#3c7500 50%)}.dwbg .dwwl .dwb-a{background:#3c7500;background:linear-gradient(#94c840,#3c7500);background:-webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840));background:-webkit-linear-gradient(#94c840,#3c7500);background:-moz-linear-gradient(#94c840,#3c7500)}.jqm .dwo{background:0 0}.jqm .dw{padding:6px;z-index:1003}.jqm .dwv{position:static;width:auto;padding:.7em 15px;border:0}.jqm .dwwr{border:0;padding:0}.jqm .dwpm .dwwo{background:0 0}.jqm .dwc{padding:30px 5px 5px}.jqm .dwhl{padding:5px}.jqm .dwwb{margin:0;border:0}.jqm .dwwb span{padding:0}.jqm .dwwbp .ui-btn-inner{font-size:40px;border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0}.jqm .dwwbm .ui-btn-inner{font-size:32px;border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px}.jqm .dwwbp span{font-weight:400}.jqm .dwbc{padding:0}.jqm .dwbc .ui-btn{margin:.5em 5px}.jqm .dwbc .ui-btn-inner{font-size:12px}.jqm .dwpm .dwl{border:0;background:0 0}.jqm .dw-bubble-bottom .dw-arr{border-color:transparent transparent #444}.jqm .dw-bubble-top .dw-arr{border-color:#222 transparent transparent}.jqm.dw-bottom .dw,.jqm.dw-top .dw{padding:0;border-radius:0;-webkit-border-radius:0;-moz-border-radius:0}.jqm.dw-top .dw{border-right:0;border-top:0;border-left:0}.jqm.dw-bottom .dw{border-bottom:0;border-right:0;border-left:0}.android .dw{padding:0;background:#000;border:2px solid #555;color:#fff}.android .dwv{padding:10px;border-bottom:1px solid #333}.android .dwwr{padding:0}.android .dww{top:0}.android .dwwc{background:#000}.android .dw .dwpm .dww,.android .dw .dwpm .dwwl{border:0;background:#fff}.android .dw .dwpm .dww{margin:0}.android .dwpm .dww .dw-li{color:#000;text-shadow:none}.android .dwbc{padding:5px 1px;background:#9c9c9c}.android .dw .dwb{margin:0 5px;background:#ccc;background:linear-gradient(#eee,#ccc);background:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#eee));background:-moz-linear-gradient(#eee,#ccc);background:-o-linear-gradient(#eee,#ccc);color:#000;font-weight:400;text-shadow:none;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0}.android .dw .dwb-a,.android .dw .dwwl .dwb-a{background:#ffb25a;background:linear-gradient(#ffb25a,#ef6100);background:-webkit-gradient(linear,left bottom,left top,from(#ef6100),to(#ffb25a));background:-moz-linear-gradient(#ffb25a,#ef6100);background:-o-linear-gradient(#ffb25a,#ef6100)}.android .dw-bubble-bottom .dw-arr{border-color:transparent transparent #000}.android .dw-bubble-top .dw-arr{border-color:#9c9c9c transparent transparent}.android.dw-bottom .dw,.android.dw-top .dw{border-right:0;border-left:0}.android.dw-top .dw{border-top:0}.android.dw-bottom .dw{border-bottom:0}.android-ics .dw{padding:0;color:#31b6e7;background:#292829}.android-ics .dw .dwb,.android-ics .dw .dwpm .dww,.android-ics .dw .dww,.android-ics .dw .dwwc,.android-ics .dw .dwwl{background:0 0}.android-ics .dwwr{padding:0}.android-ics .dwc{padding:30px 10px 1px}.android-ics .dwhl{padding:1px 10px}.android-ics .dwv{height:36px;line-height:36px;padding:0;border-bottom:2px solid #31b6e7;font-size:18px}.android-ics .dwwl{margin:0 2px}.android-ics .dw .dwpm .dww,.android-ics .dw .dwpm .dwwl,.android-ics .dww{border:0}.android-ics .dww .dw-li{color:#fff;font-size:18px;text-shadow:none}.android-ics .dww .dw-li.dw-hl{background:#31b6e7;background:rgba(49,182,231,.5)}.android-ics .dwwo{background:linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%);background:-webkit-gradient(linear,left bottom,left top,from(#282828),color-stop(0.52,rgba(40,40,40,0)),color-stop(0.48,rgba(40,40,40,0)),to(#282828));background:-moz-linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%);background:-o-linear-gradient(#282828 0,rgba(40,40,40,0) 52%,rgba(40,40,40,0) 48%,#282828 100%)}.android-ics .dw .dwwb{background:#292829;box-shadow:none;-webkit-box-shadow:none}.android-ics .dwwb span{display:none}.android-ics .dwwb:after{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px;color:#7e7e7e;width:0;height:0;border-width:8px;border-style:solid;content:''}.android-ics .dwwbm{top:0;bottom:auto}.android-ics .dwwbp{bottom:0;top:auto}.android-ics .dwwbm:after{border-color:transparent transparent #7e7e7e}.android-ics .dwwbp:after{border-color:#7e7e7e transparent transparent}.android-ics .dw .dwwl .dwb-a{background:#292829}.android-ics .dwwbm.dwb-a:after{border-color:transparent transparent #319abd}.android-ics .dwwbp.dwb-a:after{border-color:#319abd transparent transparent}.android-ics .dw .dwwol{width:60%;left:20%;height:36px;border-top:2px solid #31b6e7;border-bottom:2px solid #31b6e7;margin-top:-20px;display:block}.android-ics .dwbc{border-top:1px solid #424542;padding:0}.android-ics .dw .dwb{height:36px;line-height:36px;padding:0;margin:0;font-weight:400;text-shadow:none;box-shadow:none;border-radius:0;-webkit-border-radius:0;-webkit-box-shadow:none}.android-ics .dw .dwb-a{background:#29799c}.android-ics .dwb-n .dwb,.android-ics .dwb-s .dwb{border-right:1px solid #424542}.android-ics.dw-bottom .dw,.android-ics.dw-top .dw{border-radius:0;-webkit-border-radius:0}.android-ics .dwwms .dwwol{display:none}.android-ics .dwwms .dw-li{padding-left:5px;padding-right:36px}.android-ics .dwwms .dw-li:after{content:'';position:absolute;top:50%;left:auto;right:10px;width:14px;height:14px;margin-top:-9px;color:#31b6e7;line-height:14px;border:1px solid #424542;text-shadow:0 0 5px #29799c}.android-ics .dwwms .dw-msel:after{content:'✔'}.android-ics.light .dw{background:#f5f5f5}.android-ics.light .dww .dw-li{color:#000}.android-ics.light .dwwo{background:linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%);background:-webkit-gradient(linear,left bottom,left top,from(#f5f5f5),color-stop(0.52,rgba(245,245,245,0)),color-stop(0.48,rgba(245,245,245,0)),to(#f5f5f5));background:-moz-linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%);background:-o-linear-gradient(#f5f5f5 0,rgba(245,245,245,0) 52%,rgba(245,245,245,0) 48%,#f5f5f5 100%)}.android-ics.light .dw .dwwb{background:#f5f5f5;color:#f5f5f5}.android-ics.light .dwbc{border-top:1px solid #dbdbdb}.android-ics.light .dwb{color:#000}.android-ics.light .dwb-a{color:#fff}.android-ics.light .dwb-n .dwb,.android-ics.light .dwb-s .dwb{border-right:1px solid #dbdbdb}.android-ics .dw-bubble-bottom .dw-arr{border-color:transparent transparent #292829}.android-ics .dw-bubble-top .dw-arr{border-color:#292829 transparent transparent}.android-ics.light .dw-bubble-bottom .dw-arr{border-color:transparent transparent #f5f5f5}.android-ics.light .dw-bubble-top .dw-arr{border-color:#f5f5f5 transparent transparent}.android-ics.light .dwwms .dw-li:after{text-shadow:0 0 5px #31b6e7}.ios .dw{min-width:134px;padding:0;border:1px solid #2d3034;background:0 0;color:#fff;border-radius:0;-webkit-border-radius:0}.ios .dwo{background:0 0}.ios .dwwr{position:relative;margin-top:40px;background:#50515d;background:linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39);background:-webkit-gradient(linear,left top,left bottom,from(#9f9fa6),color-stop(0.5,#484a55),color-stop(0.5,#272836),to(#282a39));background:-webkit-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39);background:-moz-linear-gradient(#9f9fa6,#484a55 50%,#272836 50%,#282a39)}.ios .dwi .dwwr{margin-top:0}.ios .dwv{display:none}.ios .dwc{padding:30px 2px;margin:0}.ios .dwhl{padding:10px 2px}.ios .dwwc{background:0 0}.ios .dwwl{margin:4px 0;border-left:1px solid #000;border-right:1px solid #000;background:#cbcce0;background:linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);background:-webkit-gradient(linear,left bottom,left top,from(#2c2c38),color-stop(0.35,#cbcce0),color-stop(0.65,#cbcce0),to(#2c2c38));background:-webkit-linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);background:-moz-linear-gradient(#2c2c38 0,#cbcce0 35%,#cbcce0 65%,#2c2c38 100%);box-shadow:0 1px 1px rgba(255,255,255,.3);-webkit-box-shadow:0 1px 1px rgba(255,255,255,.3)}.ios td:first-child .dwwl{border-top-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px}.ios td:last-child .dwwl{border-top-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px}.ios .dwsc .dwwl{border-radius:0;-webkit-border-radius:0}.ios .dwsc .dww{background:#fff;background:linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1,#999),color-stop(0.3,#fff),color-stop(0.7,#fff),color-stop(0.9,#999),to(#333));background:-webkit-linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);background:-moz-linear-gradient(#333 0,#999 10%,#fff 30%,#fff 70%,#999 90%,#333 100%);border-radius:0;-webkit-border-radius:0}.ios .dw .dwpm .dww{background:linear-gradient(#333,#fff 48%,#fff 52%,#333);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.48,#fff),color-stop(0.52,#fff),to(#333));background:-webkit-linear-gradient(#333 0,#fff 48%,#fff 52%,#333 100%);background:-moz-linear-gradient(#333 0,#fff 48%,#fff 52%,#333 100%)}.ios .dw .dwpm .dwwl{margin:4px 2px;border:1px solid #000}.ios .dw .dwpm .dww{margin:0;border:0}.ios .dww .dw-li{color:#000;font-size:20px;font-weight:700;text-align:right;text-shadow:none}.ios .dww .dw-li.dw-hl{background:linear-gradient(#0288f3,#005de6);background:-webkit-gradient(linear,left bottom,left top,from(#0288f3),to(#005de6));background:-webkit-linear-gradient(#0288f3,#005de6);background:-moz-linear-gradient(#0288f3,#005de6);color:#fff}.ios .dwwo{background:linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%);background:-webkit-gradient(linear,left bottom,left top,from(#333),color-stop(0.1,rgba(153,153,153,0)),color-stop(0.9,rgba(153,153,153,0)),to(#333));background:-webkit-linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%);background:-moz-linear-gradient(#333 0,rgba(153,153,153,0) 10%,rgba(153,153,153,0) 90%,#333 100%)}.ios .dwwol{height:28px;padding:1px;margin-top:-16px;border-color:#7b8699;background:#6f75b0;background:linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,rgba(111,117,176,.5)),color-stop(0.5,rgba(151,157,197,.5)));background:-webkit-linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);background:-moz-linear-gradient(rgba(151,157,197,.5) 50%,rgba(111,117,176,.5) 50%);z-index:10;left:-1px;box-shadow:0 1px 3px rgba(0,0,0,.5);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.5);filter:alpha(opacity=50)}.ios .dww .dwwol{display:none}.ios .dw .dwbc{position:absolute;top:-40px;left:0;width:100%;height:28px;padding:5px 0;background:#454545;background:linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));background:-webkit-gradient(linear,left top,left bottom,from(rgba(69,69,69,.7)),color-stop(0.5,rgba(37,37,37,.7)),color-stop(0.5,rgba(16,16,16,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));background:-moz-linear-gradient(rgba(69,69,69,.7),rgba(37,37,37,.7) 50%,rgba(16,16,16,.7) 50%,rgba(0,0,0,.7));border-bottom:1px solid #888;border-bottom:1px solid rgba(255,255,255,.5);border-top:1px solid #888;border-top:1px solid rgba(255,255,255,.5)}.ios .dw .dwb{margin:0 5px;padding:0 10px;display:inline-block;font-size:12px;height:26px;line-height:26px;border:1px solid #1f1f1f;background:#1a1a1a;background:linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);background:-webkit-gradient(linear,left top,left bottom,from(#7b7b7b),color-stop(0.5,#1a1a1a),color-stop(0.5,#000));background:-webkit-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);background:-moz-linear-gradient(#7b7b7b,#1a1a1a 50%,#000 50%);box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3)}.ios .dwb-s .dwb{border:1px solid #194aab;background:#194aab;background:linear-gradient(#82aaff,#3162c4 50%,#194aab 50%);background:-webkit-gradient(linear,left top,left bottom,from(#82aaff),color-stop(0.5,#3162c4),color-stop(0.5,#194aab));background:-webkit-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%);background:-moz-linear-gradient(#82aaff,#3162c4 50%,#194aab 50%)}.ios .dwb-a{opacity:.8;filter:alpha(opacity=80)}.ios .dw .dwwb{color:#fff;border:0;background:#3f4e68;background:linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%);background:-webkit-gradient(linear,left bottom,left top,from(#3f4e68),color-stop(0.5,#75859f),color-stop(0.5,#808ea6),to(#c7d1e2));background:-webkit-linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%);background:-moz-linear-gradient(#c7d1e2 0,#808ea6 50%,#75859f 50%,#3f4e68 100%)}.ios .dw .dwwl .dwb-a{background:#252c36;background:linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%);background:-webkit-gradient(linear,left bottom,left top,from(#252c36),color-stop(0.5,#171e28),color-stop(0.5,#272e38),to(#6b6e75));background:-webkit-linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%);background:-moz-linear-gradient(#6b6e75 0,#272e38 50%,#171e28 50%,#252c36 100%)}.ios .dwb-n,.ios .dwb-s{width:auto;float:right;text-align:right}.ios .dwb-c{width:auto;float:left;text-align:left}.ios.dw-bubble .dw{padding:6px;background:#afafaf;background:linear-gradient(#afafaf,#1b2530 30%);background:-webkit-gradient(linear,left top,left bottom,from(#afafaf),color-stop(0.3,#1b2530));background:-webkit-linear-gradient(#afafaf,#1b2530 30%);background:-moz-linear-gradient(#afafaf,#1b2530 30%);box-shadow:0 0 25px rgba(0,0,0,.7);border-radius:5px;-webkit-border-radius:5px;-webkit-box-shadow:0 0 25px rgba(0,0,0,.7)}.ios .dw-bubble-bottom .dw-arr{border-color:transparent transparent #2d3034}.ios .dw-bubble-bottom .dw-arr:after{content:'';position:absolute;top:-16px;left:-17px;border:17px solid #afafaf;border-color:transparent transparent #afafaf}.ios .dw-bubble-top .dw-arr{border-color:#1b2530 transparent transparent}.ios .dwwms .dwwol{display:none}.ios .dwwms .dw-li{padding:0 5px 0 30px;text-align:left}.ios .dw-msel:after{width:30px}.ios .dww .dw-msel{color:#215085}.sense-ui .dw{padding:0;background:#333;border:2px solid #fff;color:#fff}.sense-ui .dwwr{padding:0}.sense-ui .dwv{padding:5px 10px;border-bottom:1px solid #666;text-align:left}.sense-ui .dwwc{background:#333}.sense-ui .dw .dwpm .dww,.sense-ui .dw .dwpm .dwwl{background:#fff;border:0;padding:0}.sense-ui .dwbc{padding:5px 1px;background:#000;background:linear-gradient(#666 50%,#000 50%);background:-webkit-gradient(linear,left bottom,left top,color-stop(0.5,#000),color-stop(0.5,#666));background:-moz-linear-gradient(#666 50%,#000 50%);background:-o-linear-gradient(#666 50%,#000 50%)}.sense-ui .dw .dwb{margin:0 5px;border:1px solid #333;background:#222;background:linear-gradient(#444,#000);background:-webkit-gradient(linear,left bottom,left top,from(#000),to(#444));background:-moz-linear-gradient(#444,#000);background:-o-linear-gradient(#444,#000);box-shadow:inset 0 0 5px #000}.sense-ui .dw .dwb-a{background:#3c7500;background:linear-gradient(#94c840,#3c7500);background:-webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840));background:-moz-linear-gradient(#94c840,#3c7500);background:-o-linear-gradient(#94c840,#3c7500)}.sense-ui.dw-top .dw{border:0;border-radius:0;-webkit-border-radius:0}.sense-ui.dw-bottom .dw{border:0;border-top:1px solid #666;border-radius:0;-webkit-border-radius:0}.wp .dw{background:#1f1f1f;border-radius:0;-webkit-border-radius:0}.wp .dwwr{padding:10px}.wp .dwv{display:none}.wp .dwc{padding:30px 0 0;vertical-align:middle}.wp .dwhl{padding:0}.wp .dwwc{padding:3px;background:0 0}.wp .dwwl{margin:0;padding:0 2px;background:0 0}.wp .dwl{color:#fff}.wp .dw .dwwl .dww{background:0 0;border:0;color:#fff}.wp .dw-li{position:relative;padding:0;font-size:26px;letter-spacing:-1px;text-align:left;text-shadow:none;opacity:0;box-sizing:border-box;filter:Alpha(Opacity=0);-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp .dw-i{position:relative;top:4%;height:92%;padding:0 5px;border:1px solid #4c4c4c;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;filter:inherit}.wp .dwa .dw-li,.wp .wpa .dw-li{opacity:.3;filter:Alpha(Opacity=30)}.wp .dwa .dw-v,.wp .wpa .dw-v,.wp .wpam .dw-v{opacity:1;filter:Alpha(Opacity=100)}.wp .dw-day,.wp .dw-mon{display:block;color:#a9a9a9;line-height:18px;font-size:11px;letter-spacing:normal;position:absolute;bottom:0;filter:inherit}.wp .dw-sel{opacity:1;filter:Alpha(Opacity=100)}.wp .dw .dw-sel .dw-i{color:#fff;background:#4c4c4c}.wp .dw-sel .dw-day,.wp .dw-sel .dw-mon{color:#fff}.wp .dw-hl{background:0 0}.wp .dw-hl .dw-i{background:#4c4c4c}.wp .dwa .dww .dw-sel .dw-i{border:1px solid #4c4c4c;background-color:transparent}.wp .dwa .dw-day,.wp .dwa .dw-month{color:#a9a9a9}.wp .dwwo,.wp .dwwol{display:none}.wp .dwbc{padding:0}.wp .dwbw{float:none;width:auto}.wp .dw .dwb{position:relative;top:0;min-width:32px;display:inline-block;height:20px;padding:29px 5px 0;background:0 0;box-shadow:none;line-height:20px;font-size:11px;font-weight:400;text-transform:lowercase;text-shadow:none;transition:top .1s linear;-webkit-box-shadow:none;-webkit-transition:top .1s linear;-moz-transition:top .1s linear}.wp .dwb:after{content:'';position:absolute;top:3px;left:50%;width:26px;height:26px;margin:0 -13px;background:url(wp_icons.png) center center no-repeat}.wp .dwb-s .dwb:after{background-position:0 0}.wp .dwb-c .dwb:after{background-position:-26px 0}.wp .dwb-n .dwb:after{background-position:-52px 0}.wp .dwb-s .dwb-a:after{background-position:0 -26px}.wp .dwb-c .dwb-a:after{background-position:-26px -26px}.wp .dwb-n .dwb-a:after{background-position:-52px -26px}.wp .dwb.dwb-a{top:-3px}.wp .dw .dwwl .dwb-a{background:#1f1f1f}.wp .dw .dwpm .dwwl{border:0}.wp .dw .dwwb{background:#1f1f1f;border-radius:0;box-shadow:none;box-sizing:border-box;color:#a9a9a9;-webkit-box-shadow:none;-webkit-border-radius:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp .dwwb span{position:absolute;top:50%;left:50%;width:26px;height:0;padding-top:26px;overflow:hidden;margin:-13px;display:block;background:url(wp_icons.png) center center no-repeat}.wp .dwwbp span{background-position:-78px 0}.wp .dwwbp.dwb-a span{background-position:-78px -26px}.wp .dwwbm span{background-position:-104px 0}.wp .dwwbm.dwb-a span{background-position:-104px -26px}.wp .dw-bubble-bottom .dw-arr{border-color:transparent transparent #1f1f1f}.wp .dw-bubble-top .dw-arr{border-color:#1f1f1f transparent transparent}.wp .dwwms .dw-li{opacity:.3;filter:Alpha(Opacity=30);padding:0 0 0 30px}.wp .dwwms .dw-v{opacity:1;filter:Alpha(Opacity=100)}.wp .dwc .dwwms .dw-hl .dw-i,.wp .dwc .dwwms .dw-i,.wp .dwc .dwwms .dw-sel .dw-i,.wp .dwc .dwwms.dwa .dw-sel .dw-i{border:0;background:0 0}.wp .dwwms .dw-li:after{content:'';position:absolute;top:50%;left:5px;width:20px;height:20px;margin-top:-10px;font-size:18px;line-height:20px;background:#4c4c4c;color:#fff}.wp .dwwms .dw-msel:after{content:'✔'}.wp.light .dw{background:#dedede}.wp.light .dwb,.wp.light .dwl,.wp.light .dwv{color:#000}.wp.light .dw-li{color:#6b6b6b}.wp.light .dw-i{border-color:#b5b5b5}.wp.light .dw-sel .dw-i{background:#b5b5b5}.wp.light .dw-hl .dw-i{color:#fff;background:#b5b5b5}.wp.light .dw-day,.wp.light .dw-mon{color:#6b6b6b}.wp.light .dw-sel .dw-day,.wp.light .dw-sel .dw-mon{color:#fff}.wp.light .dw .dwa .dw-sel .dw-i{color:#6b6b6b;border:1px solid #b5b5b5;background-color:transparent}.wp.light .dw .dwc .dwa .dw-day,.wp.light .dw .dwc .dwa .dw-mon{color:#6b6b6b}.wp.light .dwb:after{background-image:url(wp_icons_light.png)}.wp.light .dw .dwwb{background:#dedede}.wp.light .dwwb span{background-image:url(wp_icons_light.png)}.wp.light .dw-bubble-bottom .dw-arr{border-color:transparent transparent #dedede}.wp.light .dw-bubble-top .dw-arr{border-color:#dedede transparent transparent}.wp.light .dwc .dwwms .dw-i,.wp.light .dwwms.dwa .dw-sel .dw-i{border:0;background:0 0;color:#000}.wp.light .dwwms .dw-li:after{background:#b5b5b5}.wp.light .wp-none .dw-hl .dw-i,.wp.light .wp-none .dw-sel .dw-i,.wp.light .wp-none .dwwms .dw-li:after{color:#000}.wp.light .wp-none .dw-day,.wp.light .wp-none .dw-mon{color:#6b6b6b}.wp .wp-lime .dw-hl .dw-i,.wp .wp-lime .dw-sel .dw-i,.wp .wp-lime .dwwms .dw-li:after{background:#a4c400;border-color:#a4c400}.wp .wp-green .dw-hl .dw-i,.wp .wp-green .dw-sel .dw-i,.wp .wp-green .dwwms .dw-li:after{background:#60a917;border-color:#60a917}.wp .wp-emerald .dw-hl .dw-i,.wp .wp-emerald .dw-sel .dw-i,.wp .wp-emerald .dwwms .dw-li:after{background:#008a00;border-color:#008a00}.wp .wp-teal .dw-hl .dw-i,.wp .wp-teal .dw-sel .dw-i,.wp .wp-teal .dwwms .dw-li:after{background:#00aba9;border-color:#00aba9}.wp .wp-cyan .dw-hl .dw-i,.wp .wp-cyan .dw-sel .dw-i,.wp .wp-cyan .dwwms .dw-li:after{background:#1ba1e2;border-color:#1ba1e2}.wp .wp-cobalt .dw-hl .dw-i,.wp .wp-cobalt .dw-sel .dw-i,.wp .wp-cobalt .dwwms .dw-li:after{background:#0050ef;border-color:#0050ef}.wp .wp-indigo .dw-hl .dw-i,.wp .wp-indigo .dw-sel .dw-i,.wp .wp-indigo .dwwms .dw-li:after{background:#6a00ff;border-color:#6a00ff}.wp .wp-violet .dw-hl .dw-i,.wp .wp-violet .dw-sel .dw-i,.wp .wp-violet .dwwms .dw-li:after{background:#a0f;border-color:#a0f}.wp .wp-pink .dw-hl .dw-i,.wp .wp-pink .dw-sel .dw-i,.wp .wp-pink .dwwms .dw-li:after{background:#f472d0;border-color:#f472d0}.wp .wp-magenta .dw-hl .dw-i,.wp .wp-magenta .dw-sel .dw-i,.wp .wp-magenta .dwwms .dw-li:after{background:#d80073;border-color:#d80073}.wp .wp-crimson .dw-hl .dw-i,.wp .wp-crimson .dw-sel .dw-i,.wp .wp-crimson .dwwms .dw-li:after{background:#a20025;border-color:#a20025}.wp .wp-red .dw-hl .dw-i,.wp .wp-red .dw-sel .dw-i,.wp .wp-red .dwwms .dw-li:after{background:#e51400;border-color:#e51400}.wp .wp-orange .dw-hl .dw-i,.wp .wp-orange .dw-sel .dw-i,.wp .wp-orange .dwwms .dw-li:after{background:#fa6800;border-color:#fa6800}.wp .wp-amber .dw-hl .dw-i,.wp .wp-amber .dw-sel .dw-i,.wp .wp-amber .dwwms .dw-li:after{background:#f0a30a;border-color:#f0a30a}.wp .wp-yellow .dw-hl .dw-i,.wp .wp-yellow .dw-sel .dw-i,.wp .wp-yellow .dwwms .dw-li:after{background:#d8c100;border-color:#d8c100}.wp .wp-brown .dw-hl .dw-i,.wp .wp-brown .dw-sel .dw-i,.wp .wp-brown .dwwms .dw-li:after{background:#825a2c;border-color:#825a2c}.wp .wp-olive .dw-hl .dw-i,.wp .wp-olive .dw-sel .dw-i,.wp .wp-olive .dwwms .dw-li:after{background:#6d8764;border-color:#6d8764}.wp .wp-steel .dw-hl .dw-i,.wp .wp-steel .dw-sel .dw-i,.wp .wp-steel .dwwms .dw-li:after{background:#647687;border-color:#647687}.wp .wp-mauve .dw-hl .dw-i,.wp .wp-mauve .dw-sel .dw-i,.wp .wp-mauve .dwwms .dw-li:after{background:#76608a;border-color:#76608a}.wp .wp-sienna .dw-hl .dw-i,.wp .wp-sienna .dw-sel .dw-i,.wp .wp-sienna .dwwms .dw-li:after{background:#7a3b3f;border-color:#7a3b3f}.dw-trans .dw-persp{overflow:hidden;perspective:1000px;-webkit-perspective:1000px;-moz-perspective:1000px}.dw-trans .dwwb,.dw-trans .dwwo{-webkit-backface-visibility:hidden}.dw-in,.dw-out{animation-duration:350ms;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.dw-in{animation-timing-function:ease-out;-webkit-animation-timing-function:ease-out;-moz-animation-timing-function:ease-out}.dw-out{animation-timing-function:ease-in;-webkit-animation-timing-function:ease-in;-moz-animation-timing-function:ease-in}.dw-fade,.dw-flip,.dw-slidedown,.dw-slidehorizontal,.dw-slideup,.dw-slidevertical,.dw-swing{backface-visibility:hidden;transform:translateX(0);-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0)}.dw-fade,.dw-slidedown,.dw-slidehorizontal,.dw-slideup,.dw-slidevertical,.dw-swing{transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0}.dw-flip,.dw-pop{transform-origin:50% 50%;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.dw-pop.dw-in{opacity:1;transform:scale(1);animation-name:dw-p-in;-webkit-animation-name:dw-p-in;-webkit-transform:scale(1);-moz-animation-name:dw-p-in;-moz-transform:scale(1)}.dw-pop.dw-out{opacity:0;animation-name:dw-p-out;-webkit-animation-name:dw-p-out;-moz-animation-name:dw-p-out}.dw-flip.dw-in{opacity:1;transform:scale(1);animation-name:dw-fl-in;-webkit-animation-name:dw-fl-in;-webkit-transform:scale(1);-moz-animation-name:dw-fl-in;-moz-transform:scale(1)}.dw-flip.dw-out{opacity:0;animation-name:dw-fl-out;-webkit-animation-name:dw-fl-out;-moz-animation-name:dw-fl-out}.dw-swing.dw-in{opacity:1;transform:scale(1);animation-name:dw-sw-in;-webkit-animation-name:dw-sw-in;-webkit-transform:scale(1);-moz-animation-name:dw-sw-in;-moz-transform:scale(1)}.dw-swing.dw-out{opacity:0;animation-name:dw-sw-out;-webkit-animation-name:dw-sw-out;-moz-animation-name:dw-sw-out}.dw-slidehorizontal.dw-in{opacity:1;transform:scale(1);animation-name:dw-sh-in;-webkit-animation-name:dw-sh-in;-webkit-transform:scale(1);-moz-animation-name:dw-sh-in;-moz-transform:scale(1)}.dw-slidehorizontal.dw-out{opacity:0;animation-name:dw-sh-out;-webkit-animation-name:dw-sh-out;-moz-animation-name:dw-sh-out}.dw-slidevertical.dw-in{opacity:1;animation-name:dw-dw-sv-in;transform:scale(1);-webkit-animation-name:dw-dw-sv-in;-webkit-transform:scale(1);-moz-animation-name:dw-dw-sv-in;-moz-transform:scale(1)}.dw-slidevertical.dw-out{opacity:0;animation-name:dw-sv-out;-webkit-animation-name:dw-sv-out;-moz-animation-name:dw-sv-out}.dw-slidedown.dw-in{animation-name:dw-sd-in;transform:scale(1);-webkit-animation-name:dw-sd-in;-webkit-transform:scale(1);-moz-animation-name:dw-sd-in;-moz-transform:scale(1)}.dw-slidedown.dw-out{animation-name:dw-sd-out;-webkit-animation-name:dw-sd-out;-moz-animation-name:dw-sd-out}.dw-slideup.dw-in{transform:scale(1);animation-name:dw-su-in;-webkit-animation-name:dw-su-in;-webkit-transform:scale(1);-moz-animation-name:dw-su-in;-moz-transform:scale(1)}.dw-slideup.dw-out{animation-name:dw-su-out;-webkit-animation-name:dw-su-out;-moz-animation-name:dw-su-out}.dw-fade.dw-in{opacity:1;animation-name:dw-f-in;-webkit-animation-name:dw-f-in;-moz-animation-name:dw-f-in}.dw-fade.dw-out{opacity:0;animation-name:dw-f-out;-webkit-animation-name:dw-f-out;-moz-animation-name:dw-f-out}@keyframes dw-f-in{from{opacity:0}to{opacity:1}}@-webkit-keyframes dw-f-in{from{opacity:0}to{opacity:1}}@-moz-keyframes dw-f-in{from{opacity:0}to{opacity:1}}@keyframes dw-f-out{from{opacity:1}to{opacity:0}}@-webkit-keyframes dw-f-out{from{opacity:1}to{opacity:0}}@-moz-keyframes dw-f-out{from{opacity:1}to{opacity:0}}@keyframes dw-p-in{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:scale(1)}}@-webkit-keyframes dw-p-in{from{opacity:0;-webkit-transform:scale(0.8)}to{opacity:1;-webkit-transform:scale(1)}}@-moz-keyframes dw-p-in{from{opacity:0;-moz-transform:scale(0.8)}to{opacity:1;-moz-transform:scale(1)}}@keyframes dw-p-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0.8)}}@-webkit-keyframes dw-p-out{from{opacity:1;-webkit-transform:scale(1)}to{opacity:0;-webkit-transform:scale(0.8)}}@-moz-keyframes dw-p-out{from{opacity:1;-moz-transform:scale(1)}to{opacity:0;-moz-transform:scale(0.8)}}@keyframes dw-fl-in{from{opacity:0;transform:rotateY(90deg)}to{opacity:1;transform:rotateY(0)}}@-webkit-keyframes dw-fl-in{from{opacity:0;-webkit-transform:rotateY(90deg)}to{opacity:1;-webkit-transform:rotateY(0)}}@-moz-keyframes dw-fl-in{from{opacity:0;-moz-transform:rotateY(90deg)}to{opacity:1;-moz-transform:rotateY(0)}}@keyframes dw-fl-out{from{opacity:1;transform:rotateY(0deg)}to{opacity:0;transform:rotateY(-90deg)}}@-webkit-keyframes dw-fl-out{from{opacity:1;-webkit-transform:rotateY(0deg)}to{opacity:0;-webkit-transform:rotateY(-90deg)}}@-moz-keyframes dw-fl-out{from{opacity:1;-moz-transform:rotateY(0deg)}to{opacity:0;-moz-transform:rotateY(-90deg)}}@keyframes dw-sw-in{from{opacity:0;transform:rotateY(-90deg)}to{opacity:1;transform:rotateY(0deg)}}@-webkit-keyframes dw-sw-in{from{opacity:0;-webkit-transform:rotateY(-90deg)}to{opacity:1;-webkit-transform:rotateY(0deg)}}@-moz-keyframes dw-sw-in{from{opacity:0;-moz-transform:rotateY(-90deg)}to{opacity:1;-moz-transform:rotateY(0deg)}}@keyframes dw-sw-out{from{opacity:1;transform:rotateY(0deg)}to{opacity:0;transform:rotateY(-90deg)}}@-webkit-keyframes dw-sw-out{from{opacity:1;-webkit-transform:rotateY(0deg)}to{opacity:0;-webkit-transform:rotateY(-90deg)}}@-moz-keyframes dw-sw-out{from{opacity:1;-moz-transform:rotateY(0deg)}to{opacity:0;-moz-transform:rotateY(-90deg)}}@keyframes dw-sh-in{from{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes dw-sh-in{from{opacity:0;-webkit-transform:translateX(-100%)}to{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes dw-sh-in{from{opacity:0;-moz-transform:translateX(-100%)}to{opacity:1;-moz-transform:translateX(0)}}@keyframes dw-sh-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@-webkit-keyframes dw-sh-out{from{opacity:1;-webkit-transform:translateX(0)}to{opacity:0;-webkit-transform:translateX(100%)}}@-moz-keyframes dw-sh-out{from{opacity:1;-moz-transform:translateX(0)}to{opacity:0;-moz-transform:translateX(100%)}}@keyframes dw-dw-sv-in{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes dw-dw-sv-in{from{opacity:0;-webkit-transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-dw-sv-in{from{opacity:0;-moz-transform:translateY(-100%)}to{opacity:1;-moz-transform:translateY(0)}}@keyframes dw-sv-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@-webkit-keyframes dw-sv-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:0;-webkit-transform:translateY(100%)}}@-moz-keyframes dw-sv-out{from{opacity:1;-moz-transform:translateY(0)}to{opacity:0;-moz-transform:translateY(100%)}}@keyframes dw-sd-in{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes dw-sd-in{from{opacity:1;-webkit-transform:translateY(-100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-sd-in{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes dw-sd-out{from{transform:translateY(0)}to{transform:translateY(-100%)}}@-webkit-keyframes dw-sd-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:1;-webkit-transform:translateY(-100%)}}@-moz-keyframes dw-sd-out{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes dw-su-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes dw-su-in{from{opacity:1;-webkit-transform:translateY(100%)}to{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes dw-su-in{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes dw-su-out{from{transform:translateY(0)}to{transform:translateY(100%)}}@-webkit-keyframes dw-su-out{from{opacity:1;-webkit-transform:translateY(0)}to{opacity:1;-webkit-transform:translateY(100%)}}@-moz-keyframes dw-su-out{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}} \ No newline at end of file diff --git a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js b/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js deleted file mode 100644 index 697fde48be..0000000000 --- a/web/ext/date/mobiscroll-2.6.0/mobiscroll.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){function b(b,c){function d(b){if(a.isArray(jb.readonly)){var c=a(".dwwl",K).index(b);return jb.readonly[c]}return jb.readonly}function i(b){var c='
',d=ob[b],e=d.values?d:h(d),f=1,g=e.values,i=e.keys||g;return a.each(g,function(a,b){f%20==0&&(c+='
'),c+='
'+b+"
",f++}),c+="
"}function l(b){_=a(".dw-li",b).index(a(".dw-v",b).eq(0)),ab=a(".dw-li",b).index(a(".dw-v",b).eq(-1)),cb=a(".dw-ul",K).index(b)}function m(a){var b=jb.headerText;return b?"function"==typeof b?b.call(hb,a):b.replace(/\{value\}/i,a):""}function n(){fb.temp=pb&&null!==fb.val&&fb.val!=ib.val()||null===fb.values?jb.parseValue(ib.val()||"",fb):fb.values.slice(0),G()}function q(b){var c,d,e=window.getComputedStyle?getComputedStyle(b[0]):b[0].style;return r?(a.each(["t","webkitT","MozT","OT","msT"],function(a,b){return void 0!==e[b+"ransform"]?(c=e[b+"ransform"],!1):void 0}),c=c.split(")")[0].split(", "),d=c[13]||c[5]):d=e.top.replace("px",""),Math.round(H-d/I)}function z(a,b){clearTimeout(lb[b]),delete lb[b],a.closest(".dwwl").removeClass("dwa")}function A(a,b,c,d,e){var f=(H-c)*I,g=a[0].style;f==nb[b]&&lb[b]||(d&&f!=nb[b]&&C("onAnimStart",[K,b,d]),nb[b]=f,g[t+"Transition"]="all "+(d?d.toFixed(3):0)+"s ease-out",r?g[t+"Transform"]="translate3d(0,"+f+"px,0)":g.top=f+"px",lb[b]&&z(a,b),d&&void 0!==e&&(a.closest(".dwwl").addClass("dwa"),lb[b]=setTimeout(function(){z(a,b)},1e3*d)),mb[b]=c)}function B(b,c,d,e,f){C("validate",[K,c,b])!==!1&&(a(".dw-ul",K).each(function(d){var g=a(this),h=a('.dw-li[data-val="'+fb.temp[d]+'"]',g),i=a(".dw-li",g),j=i.index(h),k=i.length,l=d==c||void 0===c;if(!h.hasClass("dw-v")){for(var m=h,n=h,o=0,p=0;j-o>=0&&!m.hasClass("dw-v");)o++,m=i.eq(j-o);for(;k>j+p&&!n.hasClass("dw-v");)p++,n=i.eq(j+p);(o>p&&p&&2!==e||!o||0>j-o||1==e)&&n.hasClass("dw-v")?(h=n,j+=p):(h=m,j-=o)}(!h.hasClass("dw-sel")||l)&&(fb.temp[d]=h.attr("data-val"),a(".dw-sel",g).removeClass("dw-sel"),h.addClass("dw-sel"),A(g,d,j,l?b:.1,l?f:!1))}),J=jb.formatResult(fb.temp),"inline"==jb.display?G(d,0,!0):a(".dwv",K).html(m(J)),d&&C("onChange",[J]))}function C(b,d){var e;return d.push(fb),a.each([S.defaults,kb,c],function(a,c){c[b]&&(e=c[b].apply(hb,d))}),e}function D(b,c,d,e,f){c=g(c,_,ab);var h=a(".dw-li",b).eq(c),i=void 0===f?c:f,j=cb,k=e?c==i?.1:Math.abs((c-i)*jb.timeUnit):0;fb.temp[j]=h.attr("data-val"),A(b,j,c,k,f),setTimeout(function(){B(k,j,!0,d,f)},10)}function E(a){var b=mb[cb]+1;D(a,b>ab?_:b,1,!0)}function F(a){var b=mb[cb]-1;D(a,_>b?ab:b,2,!0)}function G(a,b,c,d){qb&&!c&&B(b),J=jb.formatResult(fb.temp),d||(fb.values=fb.temp.slice(0),fb.val=J),a&&pb&&ib.val(J).trigger("change")}var H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,fb=this,gb=a.mobiscroll,hb=b,ib=a(hb),jb=u({},y),kb={},lb={},mb={},nb={},ob=[],pb=ib.is("input"),qb=!1,rb=function(b){!e(b)||j||d(this)||U||(b.preventDefault(),j=!0,V="clickpick"!=jb.mode,bb=a(".dw-ul",this),l(bb),W=void 0!==lb[cb],$=W?q(bb):mb[cb],X=f(b,"Y"),Y=new Date,Z=X,A(bb,cb,$,.001),V&&bb.closest(".dwwl").addClass("dwa"),a(document).bind(w,sb).bind(x,tb))},sb=function(a){V&&(a.preventDefault(),a.stopPropagation(),Z=f(a,"Y"),A(bb,cb,g($+(X-Z)/I,_-1,ab+1))),W=!0},tb=function(){var b,c,d,e=new Date-Y,f=g($+(X-Z)/I,_-1,ab+1),h=bb.offset().top;if(300>e?(b=(Z-X)/e,c=b*b/jb.speedUnit,0>Z-X&&(c=-c)):c=Z-X,d=Math.round($-c/I),!c&&!W){var i=Math.floor((Z-h)/I),k=a(".dw-li",bb).eq(i),l=V;C("onValueTap",[k])!==!1?d=i:l=!0,l&&(k.addClass("dw-hl"),setTimeout(function(){k.removeClass("dw-hl")},200))}V&&D(bb,d,0,!0,Math.round(f)),j=!1,bb=null,a(document).unbind(w,sb).unbind(x,tb)},ub=function(b){if(a(document).bind(x,vb),a(this).hasClass("dwb-d")||a(this).addClass("dwb-a"),a(this).hasClass("dwwb")){var c=a(this).closest(".dwwl");if(e(b)&&!d(c)&&!c.hasClass("dwa")){b.stopPropagation(),b.preventDefault(),U=!0;var f=c.find(".dw-ul"),g=a(this).hasClass("dwwbp")?E:F;l(f),clearInterval(db),db=setInterval(function(){g(f)},jb.delay),g(f)}}},vb=function(){U&&(clearInterval(db),U=!1),a(document).unbind(x,vb),a(".dwb-a",K).removeClass("dwb-a")},wb=function(b){if(!d(this)){b.preventDefault(),b=b.originalEvent;var c=b.wheelDelta?b.wheelDelta/120:b.detail?-b.detail/3:0,e=a(".dw-ul",this);l(e),D(e,Math.round(mb[cb]-c),0>c?1:2)}};fb.position=function(b){if(!("inline"==jb.display||L===a(window).width()&&N===a(window).height()&&b||C("onPosition",[K])===!1)){var c,d,e,f,h,i,j,k,l,m,n,o,p=0,q=0,r=a(window).scrollTop(),s=a(".dwwr",K),t=a(".dw",K),u={},v=void 0===jb.anchor?ib:jb.anchor;L=a(window).width(),N=a(window).height(),M=window.innerHeight,M=M||N,/modal|bubble/.test(jb.display)&&(a(".dwc",K).each(function(){c=a(this).outerWidth(!0),p+=c,q=c>q?c:q}),c=p>L?q:p,s.width(c).css("white-space",p>L?"":"nowrap")),O=t.outerWidth(),P=t.outerHeight(!0),"modal"==jb.display?(d=(L-O)/2,e=r+(M-P)/2):"bubble"==jb.display?(o=!0,l=a(".dw-arrw-i",K),i=v.offset(),j=i.top,k=i.left,f=v.outerWidth(),h=v.outerHeight(),d=k-(t.outerWidth(!0)-f)/2,d=d>L-O?L-(O+20):d,d=d>=0?d:20,e=j-P,r>e||j>r+M?(t.removeClass("dw-bubble-top").addClass("dw-bubble-bottom"),e=j+h):t.removeClass("dw-bubble-bottom").addClass("dw-bubble-top"),m=l.outerWidth(),n=k+f/2-(d+(O-m)/2),a(".dw-arr",K).css({left:g(n,0,m)})):(u.width="100%","top"==jb.display?e=r:"bottom"==jb.display&&(e=r+M-P)),u.top=0>e?0:e,u.left=d,t.css(u),a(".dw-persp",K).height(0).height(e+P>a(document).height()?e+P:a(document).height()),o&&(e+P>r+M||j>r+M)&&a(window).scrollTop(e+P-M)}},fb.enable=function(){jb.disabled=!1,pb&&ib.prop("disabled",!1)},fb.disable=function(){jb.disabled=!0,pb&&ib.prop("disabled",!0)},fb.setValue=function(b,c,d,e){fb.temp=a.isArray(b)?b.slice(0):jb.parseValue.call(hb,b+"",fb),G(c,d,!1,e)},fb.getValue=function(){return fb.values},fb.getValues=function(){var a,b=[];for(a in fb._selectedValues)b.push(fb._selectedValues[a]);return b},fb.changeWheel=function(b,c){if(K){var d=0,e=b.length;a.each(jb.wheels,function(f,g){return a.each(g,function(f,g){return a.inArray(d,b)>-1&&(ob[d]=g,a(".dw-ul",K).eq(d).html(i(d)),e--,!e)?(fb.position(),B(c,void 0,!0),!1):(d++,void 0)}),e?void 0:!1})}},fb.isVisible=function(){return qb},fb.tap=function(a,b){var c,d;jb.tap&&a.bind("touchstart",function(a){a.preventDefault(),c=f(a,"X"),d=f(a,"Y")}).bind("touchend",function(a){Math.abs(f(a,"X")-c)<20&&Math.abs(f(a,"Y")-d)<20&&b.call(this,a),k=!0,setTimeout(function(){k=!1},300)}),a.bind("click",function(a){k||b.call(this,a)})},fb.show=function(b){if(jb.disabled||qb)return!1;"top"==jb.display&&(Q="slidedown"),"bottom"==jb.display&&(Q="slideup"),n(),C("onBeforeShow",[]);var c=0,d="";Q&&!b&&(d="dw-"+Q+" dw-in");var e='
'+("inline"==jb.display?'
':'
'+(jb.headerText?'
':""))+'
';a.each(jb.wheels,function(b,d){e+='
',a.each(d,function(a,b){ob[c]=b,e+='',c++}),e+="
'+("scroller"!=jb.mode?'
+
':"")+'
'+(b.label||a)+'
',e+=i(c),e+='
"}),e+="
"+("inline"!=jb.display?'
'+jb.setText+""+(jb.button3?''+jb.button3Text+"":"")+''+jb.cancelText+"
":"")+"
",K=a(e),B(),C("onMarkupReady",[K]),"inline"!=jb.display?(K.appendTo("body"),Q&&!b&&(K.addClass("dw-trans"),setTimeout(function(){K.removeClass("dw-trans").find(".dw").removeClass(d)},350))):ib.is("div")?ib.html(K):K.insertAfter(ib),C("onMarkupInserted",[K]),qb=!0,S.init(K,fb),"inline"!=jb.display&&(fb.tap(a(".dwb-s span",K),function(){fb.hide(!1,"set")!==!1&&(G(!0,0,!0),C("onSelect",[fb.val]))}),fb.tap(a(".dwb-c span",K),function(){fb.cancel()}),jb.button3&&fb.tap(a(".dwb-n span",K),jb.button3),jb.scrollLock&&K.bind("touchmove",function(a){M>=P&&L>=O&&a.preventDefault()}),fb.position(),a(window).bind("orientationchange.dw resize.dw",function(){clearTimeout(R),R=setTimeout(function(){fb.position(!0)},100)})),K.delegate(".dwwl","DOMMouseScroll mousewheel",wb).delegate(".dwb-e",v,ub).delegate(".dwwl",v,rb),C("onShow",[K,J])},fb.hide=function(b,c){return qb&&C("onClose",[J,c])!==!1?(a(".dwtd").each(function(){a(this).prop("disabled",!1).removeClass("dwtd"),a(this).data("autocomplete")?a(this).attr("autocomplete",a(this).data("autocomplete")):a(this).removeAttr("autocomplete")}),ib.blur(),K&&("inline"!=jb.display&&Q&&!b?(K.addClass("dw-trans").find(".dw").addClass("dw-"+Q+" dw-out"),setTimeout(function(){K.remove(),K=null},350)):(K.remove(),K=null),qb=!1,nb={},a(window).unbind(".dw")),void 0):!1},fb.cancel=function(){fb.hide(!1,"cancel")!==!1&&C("onCancel",[fb.val])},fb.init=function(a){S=u({defaults:{},init:p},gb.themes[a.theme||jb.theme]),T=gb.i18n[a.lang||jb.lang],u(c,a),u(jb,S.defaults,T,c),fb.settings=jb,ib.unbind(".dw");var b=gb.presets[jb.preset];b&&(kb=b.call(hb,fb),u(jb,kb,c)),H=Math.floor(jb.rows/2),I=jb.height,Q=jb.animate,qb&&fb.hide(),"inline"==jb.display?fb.show():(n(),pb&&jb.showOnFocus&&(void 0===eb&&(eb=hb.readOnly),hb.readOnly=!0,ib.bind("focus.dw",function(){fb.show()})))},fb.trigger=function(a,b){return C(a,b)},fb.option=function(a,b){var c={};"object"==typeof a?c=a:c[a]=b,fb.init(c)},fb.destroy=function(){fb.hide(),ib.unbind(".dw"),delete o[hb.id],pb&&(hb.readOnly=eb)},fb.getInst=function(){return fb},fb.values=null,fb.val=null,fb.temp=null,fb._selectedValues={},fb.init(c)}function c(a){var b;for(b in a)if(void 0!==q[a[b]])return!0;return!1}function d(){var a,b=["Webkit","Moz","O","ms"];for(a in b)if(c([b[a]+"Transform"]))return"-"+b[a].toLowerCase();return""}function e(a){if("touchstart"===a.type)l=!0;else if(l)return l=!1,!1;return!0}function f(a,b){var c=a.originalEvent,d=a.changedTouches;return d||c&&c.changedTouches?c?c.changedTouches[0]["page"+b]:d[0]["page"+b]:a["page"+b]}function g(a,b,c){return Math.max(b,Math.min(a,c))}function h(b){var c={values:[],keys:[]};return a.each(b,function(a,b){c.keys.push(a),c.values.push(b)}),c}function i(a,c,d){var e=a;return"object"==typeof c?a.each(function(){this.id||(n+=1,this.id="mobiscroll"+n),o[this.id]=new b(this,c)}):("string"==typeof c&&a.each(function(){var a,b=o[this.id];return b&&b[c]&&(a=b[c].apply(this,Array.prototype.slice.call(d,1)),void 0!==a)?(e=a,!1):void 0}),e)}var j,k,l,m=new Date,n=m.getTime(),o={},p=function(){},q=document.createElement("modernizr").style,r=c(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]),s=d(),t=s.replace(/^\-/,"").replace("moz","Moz"),u=a.extend,v="touchstart mousedown",w="touchmove mousemove",x="touchend mouseup",y={width:70,height:40,rows:3,delay:300,disabled:!1,readonly:!1,showOnFocus:!0,showLabel:!0,wheels:[],theme:"",headerText:"{value}",display:"modal",mode:"scroller",preset:"",lang:"en-US",setText:"Set",cancelText:"Cancel",scrollLock:!0,tap:!0,speedUnit:.0012,timeUnit:.1,formatResult:function(a){return a.join(" ")},parseValue:function(b,c){var d,e=b.split(" "),f=[],g=0;return a.each(c.settings.wheels,function(b,c){a.each(c,function(b,c){c=c.values?c:h(c),d=c.keys||c.values,-1!==a.inArray(e[g],d)?f.push(e[g]):f.push(d[0]),g++})}),f}};a(document).bind("mouseover mouseup mousedown click",function(a){return k?(a.stopPropagation(),a.preventDefault(),!1):void 0}),a.fn.mobiscroll=function(b){return u(this,a.mobiscroll.shorts),i(this,b,arguments)},a.mobiscroll=a.mobiscroll||{setDefaults:function(a){u(y,a)},presetShort:function(a){this.shorts[a]=function(b){return i(this,u(b,{preset:a}),arguments)}},shorts:{},presets:{},themes:{},i18n:{}},a.scroller=a.scroller||a.mobiscroll,a.fn.scroller=a.fn.scroller||a.fn.mobiscroll}(jQuery),function(a){var b=a.mobiscroll,c=new Date,d={dateFormat:"mm/dd/yy",dateOrder:"mmddy",timeWheels:"hhiiA",timeFormat:"hh:ii A",startYear:c.getFullYear()-100,endYear:c.getFullYear()+1,monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortYearCutoff:"+10",monthText:"Month",dayText:"Day",yearText:"Year",hourText:"Hours",minuteText:"Minutes",secText:"Seconds",ampmText:" ",nowText:"Now",showNow:!1,stepHour:1,stepMinute:1,stepSecond:1,separator:" "},e=function(c){function e(a,b,c){return void 0!==D[b]?+a[D[b]]:void 0!==c?c:M[E[b]]?M[E[b]]():E[b](M)}function f(a,b,c,d){a.push({values:c,keys:b,label:d})}function g(a,b){return Math.floor(a/b)*b}function h(a){var b=a.getHours();return b=K&&b>=12?b-12:b,g(b,N)}function i(a){return g(a.getMinutes(),O)}function j(a){return g(a.getSeconds(),P)}function k(a){return J&&a.getHours()>11?1:0}function l(a){var b=e(a,"h",0);return new Date(e(a,"y"),e(a,"m"),e(a,"d",1),e(a,"a")?b+12:b,e(a,"i",0),e(a,"s",0))}var m,n=a(this),o={};if(n.is("input")){switch(n.attr("type")){case"date":m="yy-mm-dd";break;case"datetime":m="yy-mm-ddTHH:ii:ssZ";break;case"datetime-local":m="yy-mm-ddTHH:ii:ss";break;case"month":m="yy-mm",o.dateOrder="mmyy";break;case"time":m="HH:ii:ss"}var p=n.attr("min"),q=n.attr("max");p&&(o.minDate=b.parseDate(m,p)),q&&(o.maxDate=b.parseDate(m,q))}var r,s,t,u,v,w,x,y=a.extend({},c.settings),z=a.extend(c.settings,d,o,y),A=0,B=[],C=[],D={},E={y:"getFullYear",m:"getMonth",d:"getDate",h:h,i:i,s:j,a:k},F=z.preset,G=z.dateOrder,H=z.timeWheels,I=G.match(/D/),J=H.match(/a/i),K=H.match(/h/),L="datetime"==F?z.dateFormat+z.separator+z.timeFormat:"time"==F?z.timeFormat:z.dateFormat,M=new Date,N=z.stepHour,O=z.stepMinute,P=z.stepSecond,Q=z.minDate||new Date(z.startYear,0,1),R=z.maxDate||new Date(z.endYear,11,31,23,59,59);if(m=m||L,F.match(/date/i)){for(a.each(["y","m","d"],function(a,b){r=G.search(new RegExp(b,"i")),r>-1&&C.push({o:r,v:b})}),C.sort(function(a,b){return a.o>b.o?1:-1}),a.each(C,function(a,b){D[b.v]=a}),v=[],s=0;3>s;s++)if(s==D.y){for(A++,u=[],t=[],w=Q.getFullYear(),x=R.getFullYear(),r=w;x>=r;r++)t.push(r),u.push(G.match(/yy/i)?r:(r+"").substr(2,2));f(v,t,u,z.yearText)}else if(s==D.m){for(A++,u=[],t=[],r=0;12>r;r++){var S=G.replace(/[dy]/gi,"").replace(/mm/,9>r?"0"+(r+1):r+1).replace(/m/,r+1);t.push(r),u.push(S.match(/MM/)?S.replace(/MM/,''+z.monthNames[r]+""):S.replace(/M/,''+z.monthNamesShort[r]+""))}f(v,t,u,z.monthText)}else if(s==D.d){for(A++,u=[],t=[],r=1;32>r;r++)t.push(r),u.push(G.match(/dd/i)&&10>r?"0"+r:r);f(v,t,u,z.dayText)}B.push(v)}if(F.match(/time/i)){for(C=[],a.each(["h","i","s","a"],function(a,b){a=H.search(new RegExp(b,"i")),a>-1&&C.push({o:a,v:b})}),C.sort(function(a,b){return a.o>b.o?1:-1}),a.each(C,function(a,b){D[b.v]=A+a}),v=[],s=A;A+4>s;s++)if(s==D.h){for(A++,u=[],t=[],r=0;(K?12:24)>r;r+=N)t.push(r),u.push(K&&0==r?12:H.match(/hh/i)&&10>r?"0"+r:r);f(v,t,u,z.hourText)}else if(s==D.i){for(A++,u=[],t=[],r=0;60>r;r+=O)t.push(r),u.push(H.match(/ii/)&&10>r?"0"+r:r);f(v,t,u,z.minuteText)}else if(s==D.s){for(A++,u=[],t=[],r=0;60>r;r+=P)t.push(r),u.push(H.match(/ss/)&&10>r?"0"+r:r);f(v,t,u,z.secText)}else if(s==D.a){A++;var T=H.match(/A/);f(v,[0,1],T?["AM","PM"]:["am","pm"],z.ampmText)}B.push(v)}return c.setDate=function(a,b,d,e){var f;for(f in D)c.temp[D[f]]=a[E[f]]?a[E[f]]():E[f](a);c.setValue(c.temp,b,d,e)},c.getDate=function(a){return l(a?c.temp:c.values)},{button3Text:z.showNow?z.nowText:void 0,button3:z.showNow?function(){c.setDate(new Date,!1,.3,!0)}:void 0,wheels:B,headerText:function(){return b.formatDate(L,l(c.temp),z)},formatResult:function(a){return b.formatDate(m,l(a),z)},parseValue:function(a){var c,d=new Date,e=[];try{d=b.parseDate(m,a,z)}catch(f){}for(c in D)e[D[c]]=d[E[c]]?d[E[c]]():E[c](d);return e},validate:function(b){var d=c.temp,f={y:Q.getFullYear(),m:0,d:1,h:0,i:0,s:0,a:0},h={y:R.getFullYear(),m:11,d:31,h:g(K?11:23,N),i:g(59,O),s:g(59,P),a:1},i=!0,j=!0;a.each(["y","m","d","a","h","i","s"],function(c,g){if(void 0!==D[g]){var k,l,m=f[g],n=h[g],o=31,p=e(d,g),q=a(".dw-ul",b).eq(D[g]);if("d"==g&&(k=e(d,"y"),l=e(d,"m"),o=32-new Date(k,l,32).getDate(),n=o,I&&a(".dw-li",q).each(function(){var b=a(this),c=b.data("val"),d=new Date(k,l,c).getDay(),e=G.replace(/[my]/gi,"").replace(/dd/,10>c?"0"+c:c).replace(/d/,c);a(".dw-i",b).html(e.match(/DD/)?e.replace(/DD/,''+z.dayNames[d]+""):e.replace(/D/,''+z.dayNamesShort[d]+""))})),i&&Q&&(m=Q[E[g]]?Q[E[g]]():E[g](Q)),j&&R&&(n=R[E[g]]?R[E[g]]():E[g](R)),"y"!=g){var r=a(".dw-li",q).index(a('.dw-li[data-val="'+m+'"]',q)),s=a(".dw-li",q).index(a('.dw-li[data-val="'+n+'"]',q));a(".dw-li",q).removeClass("dw-v").slice(r,s+1).addClass("dw-v"),"d"==g&&a(".dw-li",q).removeClass("dw-h").slice(o).addClass("dw-h")}if(m>p&&(p=m),p>n&&(p=n),i&&(i=p==m),j&&(j=p==n),z.invalid&&"d"==g){var t=[];if(z.invalid.dates&&a.each(z.invalid.dates,function(a,b){b.getFullYear()==k&&b.getMonth()==l&&t.push(b.getDate()-1)}),z.invalid.daysOfWeek){var u,v=new Date(k,l,1).getDay();a.each(z.invalid.daysOfWeek,function(a,b){for(u=b-v;o>u;u+=7)u>=0&&t.push(u)})}z.invalid.daysOfMonth&&a.each(z.invalid.daysOfMonth,function(a,b){b=(b+"").split("/"),b[1]?b[0]-1==l&&t.push(b[1]-1):t.push(b[0]-1)}),a.each(t,function(b,c){a(".dw-li",q).eq(c).removeClass("dw-v")})}d[D[g]]=p}})}}};a.each(["date","time","datetime"],function(a,c){b.presets[c]=e,b.presetShort(c)}),b.formatDate=function(b,c,e){if(!c)return null;var f,g=a.extend({},d,e),h=function(a){for(var c=0;f+112?m-12:0==m?12:m,2);break;case"H":k+=i("H",c.getHours(),2);break;case"i":k+=i("i",c.getMinutes(),2);break;case"s":k+=i("s",c.getSeconds(),2);break;case"a":k+=c.getHours()>11?"pm":"am";break;case"A":k+=c.getHours()>11?"PM":"AM";break;case"'":h("'")?k+="'":l=!0;break;default:k+=b.charAt(f)}return k},b.parseDate=function(b,c,e){var f=new Date;if(!b||!c)return f;c="object"==typeof c?c.toString():c+"";var g,h=a.extend({},d,e),i=h.shortYearCutoff,j=f.getFullYear(),k=f.getMonth()+1,l=f.getDate(),m=-1,n=f.getHours(),o=f.getMinutes(),p=0,q=-1,r=!1,s=function(a){var c=g+1j&&(j+=(new Date).getFullYear()-(new Date).getFullYear()%100+(j<=("string"!=typeof i?i:(new Date).getFullYear()%100+parseInt(i,10))?0:-100)),m>-1)for(k=1,l=m;;){var x=32-new Date(j,k-1,32).getDate();if(x>=l)break;k++,l-=x}n=-1==q?n:q&&12>n?n+12:q||12!=n?n:0;var y=new Date(j,k-1,l,n,o,p);if(y.getFullYear()!=j||y.getMonth()+1!=k||y.getDate()!=l)throw"Invalid date";return y}}(jQuery),function(a){var b={inputClass:"",invalid:[],rtl:!1,group:!1,groupLabel:"Groups"};a.mobiscroll.presetShort("select"),a.mobiscroll.presets.select=function(c){function d(){var b,c=0,d=[],e=[],f=[[]];return m.group?(m.rtl&&(c=1),a("optgroup",n).each(function(b){d.push(a(this).attr("label")),e.push(b)}),f[c]=[{values:d,keys:e,label:v}],b=r,c+=m.rtl?-1:1):b=n,d=[],e=[],a("option",b).each(function(){var b=a(this).attr("value");d.push(a(this).text()),e.push(b),a(this).prop("disabled")&&w.push(b)}),f[c]=[{values:d,keys:e,label:v}],f}function e(a,b){var d=[];if(o){var e=[],g=0;for(g in c._selectedValues)e.push(y[g]),d.push(g);j.val(e.join(", "))}else j.val(a),d=b?c.values[h]:null;b&&(f=!0,n.val(d).trigger("change"))}var f,g,h,i,j,k,l=a.extend({},c.settings),m=a.extend(c.settings,b,l),n=a(this),o=n.prop("multiple"),p=this.id+"_dummy",q=o?n.val()?n.val()[0]:a("option",n).attr("value"):n.val(),r=n.find('option[value="'+q+'"]').parent(),s=r.index()+"",t=s,u=(a('label[for="'+this.id+'"]').attr("for",p),a('label[for="'+p+'"]')),v=void 0!==m.label?m.label:u.length?u.text():n.attr("name"),w=[],x=[],y={},z=m.readonly;m.group&&!a("optgroup",n).length&&(m.group=!1),m.invalid.length||(m.invalid=w),m.group?m.rtl?(g=1,h=0):(g=0,h=1):(g=-1,h=0),a("#"+p).remove(),j=a('').insertBefore(n),a("option",n).each(function(){y[a(this).attr("value")]=a(this).text()}),m.showOnFocus&&j.focus(function(){c.show()});var A=n.val()||[],B=0;for(B;B - * http://github.com/tapmodo/Jcrop - * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{ - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * }}} - */ - -(function ($) { - - $.Jcrop = function (obj, opt) { - var options = $.extend({}, $.Jcrop.defaults), - docOffset, - _ua = navigator.userAgent.toLowerCase(), - is_msie = /msie/.test(_ua), - ie6mode = /msie [1-6]\./.test(_ua); - - // Internal Methods {{{ - function px(n) { - return Math.round(n) + 'px'; - } - function cssClass(cl) { - return options.baseClass + '-' + cl; - } - function supportsColorFade() { - return $.fx.step.hasOwnProperty('backgroundColor'); - } - function getPos(obj) //{{{ - { - var pos = $(obj).offset(); - return [pos.left, pos.top]; - } - //}}} - function mouseAbs(e) //{{{ - { - return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; - } - //}}} - function setOptions(opt) //{{{ - { - if (typeof(opt) !== 'object') opt = {}; - options = $.extend(options, opt); - - $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { - if (typeof(options[e]) !== 'function') options[e] = function () {}; - }); - } - //}}} - function startDragMode(mode, pos, touch) //{{{ - { - docOffset = getPos($img); - Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); - - if (mode === 'move') { - return Tracker.activateHandlers(createMover(pos), doneSelect, touch); - } - - var fc = Coords.getFixed(); - var opp = oppLockCorner(mode); - var opc = Coords.getCorner(oppLockCorner(opp)); - - Coords.setPressed(Coords.getCorner(opp)); - Coords.setCurrent(opc); - - Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch); - } - //}}} - function dragmodeHandler(mode, f) //{{{ - { - return function (pos) { - if (!options.aspectRatio) { - switch (mode) { - case 'e': - pos[1] = f.y2; - break; - case 'w': - pos[1] = f.y2; - break; - case 'n': - pos[0] = f.x2; - break; - case 's': - pos[0] = f.x2; - break; - } - } else { - switch (mode) { - case 'e': - pos[1] = f.y + 1; - break; - case 'w': - pos[1] = f.y + 1; - break; - case 'n': - pos[0] = f.x + 1; - break; - case 's': - pos[0] = f.x + 1; - break; - } - } - Coords.setCurrent(pos); - Selection.update(); - }; - } - //}}} - function createMover(pos) //{{{ - { - var lloc = pos; - KeyManager.watchKeys(); - - return function (pos) { - Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); - lloc = pos; - - Selection.update(); - }; - } - //}}} - function oppLockCorner(ord) //{{{ - { - switch (ord) { - case 'n': - return 'sw'; - case 's': - return 'nw'; - case 'e': - return 'nw'; - case 'w': - return 'ne'; - case 'ne': - return 'sw'; - case 'nw': - return 'se'; - case 'se': - return 'nw'; - case 'sw': - return 'ne'; - } - } - //}}} - function createDragger(ord) //{{{ - { - return function (e) { - if (options.disabled) { - return false; - } - if ((ord === 'move') && !options.allowMove) { - return false; - } - - // Fix position of crop area when dragged the very first time. - // Necessary when crop image is in a hidden element when page is loaded. - docOffset = getPos($img); - - btndown = true; - startDragMode(ord, mouseAbs(e)); - e.stopPropagation(); - e.preventDefault(); - return false; - }; - } - //}}} - function presize($obj, w, h) //{{{ - { - var nw = $obj.width(), - nh = $obj.height(); - if ((nw > w) && w > 0) { - nw = w; - nh = (w / $obj.width()) * $obj.height(); - } - if ((nh > h) && h > 0) { - nh = h; - nw = (h / $obj.height()) * $obj.width(); - } - xscale = $obj.width() / nw; - yscale = $obj.height() / nh; - $obj.width(nw).height(nh); - } - //}}} - function unscale(c) //{{{ - { - return { - x: c.x * xscale, - y: c.y * yscale, - x2: c.x2 * xscale, - y2: c.y2 * yscale, - w: c.w * xscale, - h: c.h * yscale - }; - } - //}}} - function doneSelect(pos) //{{{ - { - var c = Coords.getFixed(); - if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { - Selection.enableHandles(); - Selection.done(); - } else { - Selection.release(); - } - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - } - //}}} - function newSelection(e) //{{{ - { - if (options.disabled) { - return; - } - if (!options.allowSelect) { - return; - } - btndown = true; - docOffset = getPos($img); - Selection.disableHandles(); - Tracker.setCursor('crosshair'); - var pos = mouseAbs(e); - Coords.setPressed(pos); - Selection.update(); - Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch'); - KeyManager.watchKeys(); - - e.stopPropagation(); - e.preventDefault(); - return false; - } - //}}} - function selectDrag(pos) //{{{ - { - Coords.setCurrent(pos); - Selection.update(); - } - //}}} - function newTracker() //{{{ - { - var trk = $('
').addClass(cssClass('tracker')); - if (is_msie) { - trk.css({ - opacity: 0, - backgroundColor: 'white' - }); - } - return trk; - } - //}}} - - // }}} - // Initialization {{{ - // Sanitize some options {{{ - if (typeof(obj) !== 'object') { - obj = $(obj)[0]; - } - if (typeof(opt) !== 'object') { - opt = {}; - } - // }}} - setOptions(opt); - // Initialize some jQuery objects {{{ - // The values are SET on the image(s) for the interface - // If the original image has any of these set, they will be reset - // However, if you destroy() the Jcrop instance the original image's - // character in the DOM will be as you left it. - var img_css = { - border: 'none', - visibility: 'visible', - margin: 0, - padding: 0, - position: 'absolute', - top: 0, - left: 0 - }; - - var $origimg = $(obj), - img_mode = true; - - if (obj.tagName == 'IMG') { - // Fix size of crop image. - // Necessary when crop image is within a hidden element when page is loaded. - if ($origimg[0].width != 0 && $origimg[0].height != 0) { - // Obtain dimensions from contained img element. - $origimg.width($origimg[0].width); - $origimg.height($origimg[0].height); - } else { - // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). - var tempImage = new Image(); - tempImage.src = $origimg[0].src; - $origimg.width(tempImage.width); - $origimg.height(tempImage.height); - } - - var $img = $origimg.clone().removeAttr('id').css(img_css).show(); - - $img.width($origimg.width()); - $img.height($origimg.height()); - $origimg.after($img).hide(); - - } else { - $img = $origimg.css(img_css).show(); - img_mode = false; - if (options.shade === null) { options.shade = true; } - } - - presize($img, options.boxWidth, options.boxHeight); - - var boundx = $img.width(), - boundy = $img.height(), - - - $div = $('
').width(boundx).height(boundy).addClass(cssClass('holder')).css({ - position: 'relative', - backgroundColor: options.bgColor - }).insertAfter($origimg).append($img); - - if (options.addClass) { - $div.addClass(options.addClass); - } - - var $img2 = $('
'), - - $img_holder = $('
') - .width('100%').height('100%').css({ - zIndex: 310, - position: 'absolute', - overflow: 'hidden' - }), - - $hdl_holder = $('
') - .width('100%').height('100%').css('zIndex', 320), - - $sel = $('
') - .css({ - position: 'absolute', - zIndex: 600 - }).dblclick(function(){ - var c = Coords.getFixed(); - options.onDblClick.call(api,c); - }).insertBefore($img).append($img_holder, $hdl_holder); - - if (img_mode) { - - $img2 = $('') - .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), - - $img_holder.append($img2); - - } - - if (ie6mode) { - $sel.css({ - overflowY: 'hidden' - }); - } - - var bound = options.boundary; - var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ - position: 'absolute', - top: px(-bound), - left: px(-bound), - zIndex: 290 - }).mousedown(newSelection); - - /* }}} */ - // Set more variables {{{ - var bgcolor = options.bgColor, - bgopacity = options.bgOpacity, - xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, - btndown, animating, shift_down; - - docOffset = getPos($img); - // }}} - // }}} - // Internal Modules {{{ - // Touch Module {{{ - var Touch = (function () { - // Touch support detection function adapted (under MIT License) - // from code by Jeffrey Sambells - http://github.com/iamamused/ - function hasTouchSupport() { - var support = {}, events = ['touchstart', 'touchmove', 'touchend'], - el = document.createElement('div'), i; - - try { - for(i=0; i x1 + ox) { - ox -= ox + x1; - } - if (0 > y1 + oy) { - oy -= oy + y1; - } - - if (boundy < y2 + oy) { - oy += boundy - (y2 + oy); - } - if (boundx < x2 + ox) { - ox += boundx - (x2 + ox); - } - - x1 += ox; - x2 += ox; - y1 += oy; - y2 += oy; - } - //}}} - function getCorner(ord) //{{{ - { - var c = getFixed(); - switch (ord) { - case 'ne': - return [c.x2, c.y]; - case 'nw': - return [c.x, c.y]; - case 'se': - return [c.x2, c.y2]; - case 'sw': - return [c.x, c.y2]; - } - } - //}}} - function getFixed() //{{{ - { - if (!options.aspectRatio) { - return getRect(); - } - // This function could use some optimization I think... - var aspect = options.aspectRatio, - min_x = options.minSize[0] / xscale, - - - //min_y = options.minSize[1]/yscale, - max_x = options.maxSize[0] / xscale, - max_y = options.maxSize[1] / yscale, - rw = x2 - x1, - rh = y2 - y1, - rwa = Math.abs(rw), - rha = Math.abs(rh), - real_ratio = rwa / rha, - xx, yy, w, h; - - if (max_x === 0) { - max_x = boundx * 10; - } - if (max_y === 0) { - max_y = boundy * 10; - } - if (real_ratio < aspect) { - yy = y2; - w = rha * aspect; - xx = rw < 0 ? x1 - w : w + x1; - - if (xx < 0) { - xx = 0; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } else if (xx > boundx) { - xx = boundx; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } - } else { - xx = x2; - h = rwa / aspect; - yy = rh < 0 ? y1 - h : y1 + h; - if (yy < 0) { - yy = 0; - w = Math.abs((yy - y1) * aspect); - xx = rw < 0 ? x1 - w : w + x1; - } else if (yy > boundy) { - yy = boundy; - w = Math.abs(yy - y1) * aspect; - xx = rw < 0 ? x1 - w : w + x1; - } - } - - // Magic %-) - if (xx > x1) { // right side - if (xx - x1 < min_x) { - xx = x1 + min_x; - } else if (xx - x1 > max_x) { - xx = x1 + max_x; - } - if (yy > y1) { - yy = y1 + (xx - x1) / aspect; - } else { - yy = y1 - (xx - x1) / aspect; - } - } else if (xx < x1) { // left side - if (x1 - xx < min_x) { - xx = x1 - min_x; - } else if (x1 - xx > max_x) { - xx = x1 - max_x; - } - if (yy > y1) { - yy = y1 + (x1 - xx) / aspect; - } else { - yy = y1 - (x1 - xx) / aspect; - } - } - - if (xx < 0) { - x1 -= xx; - xx = 0; - } else if (xx > boundx) { - x1 -= xx - boundx; - xx = boundx; - } - - if (yy < 0) { - y1 -= yy; - yy = 0; - } else if (yy > boundy) { - y1 -= yy - boundy; - yy = boundy; - } - - return makeObj(flipCoords(x1, y1, xx, yy)); - } - //}}} - function rebound(p) //{{{ - { - if (p[0] < 0) p[0] = 0; - if (p[1] < 0) p[1] = 0; - - if (p[0] > boundx) p[0] = boundx; - if (p[1] > boundy) p[1] = boundy; - - return [Math.round(p[0]), Math.round(p[1])]; - } - //}}} - function flipCoords(x1, y1, x2, y2) //{{{ - { - var xa = x1, - xb = x2, - ya = y1, - yb = y2; - if (x2 < x1) { - xa = x2; - xb = x1; - } - if (y2 < y1) { - ya = y2; - yb = y1; - } - return [xa, ya, xb, yb]; - } - //}}} - function getRect() //{{{ - { - var xsize = x2 - x1, - ysize = y2 - y1, - delta; - - if (xlimit && (Math.abs(xsize) > xlimit)) { - x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); - } - if (ylimit && (Math.abs(ysize) > ylimit)) { - y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); - } - - if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { - y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); - } - if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { - x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); - } - - if (x1 < 0) { - x2 -= x1; - x1 -= x1; - } - if (y1 < 0) { - y2 -= y1; - y1 -= y1; - } - if (x2 < 0) { - x1 -= x2; - x2 -= x2; - } - if (y2 < 0) { - y1 -= y2; - y2 -= y2; - } - if (x2 > boundx) { - delta = x2 - boundx; - x1 -= delta; - x2 -= delta; - } - if (y2 > boundy) { - delta = y2 - boundy; - y1 -= delta; - y2 -= delta; - } - if (x1 > boundx) { - delta = x1 - boundy; - y2 -= delta; - y1 -= delta; - } - if (y1 > boundy) { - delta = y1 - boundy; - y2 -= delta; - y1 -= delta; - } - - return makeObj(flipCoords(x1, y1, x2, y2)); - } - //}}} - function makeObj(a) //{{{ - { - return { - x: a[0], - y: a[1], - x2: a[2], - y2: a[3], - w: a[2] - a[0], - h: a[3] - a[1] - }; - } - //}}} - - return { - flipCoords: flipCoords, - setPressed: setPressed, - setCurrent: setCurrent, - getOffset: getOffset, - moveOffset: moveOffset, - getCorner: getCorner, - getFixed: getFixed - }; - }()); - - //}}} - // Shade Module {{{ - var Shade = (function() { - var enabled = false, - holder = $('
').css({ - position: 'absolute', - zIndex: 240, - opacity: 0 - }), - shades = { - top: createShade(), - left: createShade().height(boundy), - right: createShade().height(boundy), - bottom: createShade() - }; - - function resizeShades(w,h) { - shades.left.css({ height: px(h) }); - shades.right.css({ height: px(h) }); - } - function updateAuto() - { - return updateShade(Coords.getFixed()); - } - function updateShade(c) - { - shades.top.css({ - left: px(c.x), - width: px(c.w), - height: px(c.y) - }); - shades.bottom.css({ - top: px(c.y2), - left: px(c.x), - width: px(c.w), - height: px(boundy-c.y2) - }); - shades.right.css({ - left: px(c.x2), - width: px(boundx-c.x2) - }); - shades.left.css({ - width: px(c.x) - }); - } - function createShade() { - return $('
').css({ - position: 'absolute', - backgroundColor: options.shadeColor||options.bgColor - }).appendTo(holder); - } - function enableShade() { - if (!enabled) { - enabled = true; - holder.insertBefore($img); - updateAuto(); - Selection.setBgOpacity(1,0,1); - $img2.hide(); - - setBgColor(options.shadeColor||options.bgColor,1); - if (Selection.isAwake()) - { - setOpacity(options.bgOpacity,1); - } - else setOpacity(1,1); - } - } - function setBgColor(color,now) { - colorChangeMacro(getShades(),color,now); - } - function disableShade() { - if (enabled) { - holder.remove(); - $img2.show(); - enabled = false; - if (Selection.isAwake()) { - Selection.setBgOpacity(options.bgOpacity,1,1); - } else { - Selection.setBgOpacity(1,1,1); - Selection.disableHandles(); - } - colorChangeMacro($div,0,1); - } - } - function setOpacity(opacity,now) { - if (enabled) { - if (options.bgFade && !now) { - holder.animate({ - opacity: 1-opacity - },{ - queue: false, - duration: options.fadeTime - }); - } - else holder.css({opacity:1-opacity}); - } - } - function refreshAll() { - options.shade ? enableShade() : disableShade(); - if (Selection.isAwake()) setOpacity(options.bgOpacity); - } - function getShades() { - return holder.children(); - } - - return { - update: updateAuto, - updateRaw: updateShade, - getShades: getShades, - setBgColor: setBgColor, - enable: enableShade, - disable: disableShade, - resize: resizeShades, - refresh: refreshAll, - opacity: setOpacity - }; - }()); - // }}} - // Selection Module {{{ - var Selection = (function () { - var awake, - hdep = 370, - borders = {}, - handle = {}, - dragbar = {}, - seehandles = false; - - // Private Methods - function insertBorder(type) //{{{ - { - var jq = $('
').css({ - position: 'absolute', - opacity: options.borderOpacity - }).addClass(cssClass(type)); - $img_holder.append(jq); - return jq; - } - //}}} - function dragDiv(ord, zi) //{{{ - { - var jq = $('
').mousedown(createDragger(ord)).css({ - cursor: ord + '-resize', - position: 'absolute', - zIndex: zi - }).addClass('ord-'+ord); - - if (Touch.support) { - jq.bind('touchstart.jcrop', Touch.createDragger(ord)); - } - - $hdl_holder.append(jq); - return jq; - } - //}}} - function insertHandle(ord) //{{{ - { - var hs = options.handleSize, - - div = dragDiv(ord, hdep++).css({ - opacity: options.handleOpacity - }).addClass(cssClass('handle')); - - if (hs) { div.width(hs).height(hs); } - - return div; - } - //}}} - function insertDragbar(ord) //{{{ - { - return dragDiv(ord, hdep++).addClass('jcrop-dragbar'); - } - //}}} - function createDragbars(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - dragbar[li[i]] = insertDragbar(li[i]); - } - } - //}}} - function createBorders(li) //{{{ - { - var cl,i; - for (i = 0; i < li.length; i++) { - switch(li[i]){ - case'n': cl='hline'; break; - case's': cl='hline bottom'; break; - case'e': cl='vline right'; break; - case'w': cl='vline'; break; - } - borders[li[i]] = insertBorder(cl); - } - } - //}}} - function createHandles(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - handle[li[i]] = insertHandle(li[i]); - } - } - //}}} - function moveto(x, y) //{{{ - { - if (!options.shade) { - $img2.css({ - top: px(-y), - left: px(-x) - }); - } - $sel.css({ - top: px(y), - left: px(x) - }); - } - //}}} - function resize(w, h) //{{{ - { - $sel.width(Math.round(w)).height(Math.round(h)); - } - //}}} - function refresh() //{{{ - { - var c = Coords.getFixed(); - - Coords.setPressed([c.x, c.y]); - Coords.setCurrent([c.x2, c.y2]); - - updateVisible(); - } - //}}} - - // Internal Methods - function updateVisible(select) //{{{ - { - if (awake) { - return update(select); - } - } - //}}} - function update(select) //{{{ - { - var c = Coords.getFixed(); - - resize(c.w, c.h); - moveto(c.x, c.y); - if (options.shade) Shade.updateRaw(c); - - awake || show(); - - if (select) { - options.onSelect.call(api, unscale(c)); - } else { - options.onChange.call(api, unscale(c)); - } - } - //}}} - function setBgOpacity(opacity,force,now) //{{{ - { - if (!awake && !force) return; - if (options.bgFade && !now) { - $img.animate({ - opacity: opacity - },{ - queue: false, - duration: options.fadeTime - }); - } else { - $img.css('opacity', opacity); - } - } - //}}} - function show() //{{{ - { - $sel.show(); - - if (options.shade) Shade.opacity(bgopacity); - else setBgOpacity(bgopacity,true); - - awake = true; - } - //}}} - function release() //{{{ - { - disableHandles(); - $sel.hide(); - - if (options.shade) Shade.opacity(1); - else setBgOpacity(1); - - awake = false; - options.onRelease.call(api); - } - //}}} - function showHandles() //{{{ - { - if (seehandles) { - $hdl_holder.show(); - } - } - //}}} - function enableHandles() //{{{ - { - seehandles = true; - if (options.allowResize) { - $hdl_holder.show(); - return true; - } - } - //}}} - function disableHandles() //{{{ - { - seehandles = false; - $hdl_holder.hide(); - } - //}}} - function animMode(v) //{{{ - { - if (v) { - animating = true; - disableHandles(); - } else { - animating = false; - enableHandles(); - } - } - //}}} - function done() //{{{ - { - animMode(false); - refresh(); - } - //}}} - // Insert draggable elements {{{ - // Insert border divs for outline - - if (options.dragEdges && $.isArray(options.createDragbars)) - createDragbars(options.createDragbars); - - if ($.isArray(options.createHandles)) - createHandles(options.createHandles); - - if (options.drawBorders && $.isArray(options.createBorders)) - createBorders(options.createBorders); - - //}}} - - // This is a hack for iOS5 to support drag/move touch functionality - $(document).bind('touchstart.jcrop-ios',function(e) { - if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); - }); - - var $track = newTracker().mousedown(createDragger('move')).css({ - cursor: 'move', - position: 'absolute', - zIndex: 360 - }); - - if (Touch.support) { - $track.bind('touchstart.jcrop', Touch.createDragger('move')); - } - - $img_holder.append($track); - disableHandles(); - - return { - updateVisible: updateVisible, - update: update, - release: release, - refresh: refresh, - isAwake: function () { - return awake; - }, - setCursor: function (cursor) { - $track.css('cursor', cursor); - }, - enableHandles: enableHandles, - enableOnly: function () { - seehandles = true; - }, - showHandles: showHandles, - disableHandles: disableHandles, - animMode: animMode, - setBgOpacity: setBgOpacity, - done: done - }; - }()); - - //}}} - // Tracker Module {{{ - var Tracker = (function () { - var onMove = function () {}, - onDone = function () {}, - trackDoc = options.trackDocument; - - function toFront(touch) //{{{ - { - $trk.css({ - zIndex: 450 - }); - - if (touch) - $(document) - .bind('touchmove.jcrop', trackTouchMove) - .bind('touchend.jcrop', trackTouchEnd); - - else if (trackDoc) - $(document) - .bind('mousemove.jcrop',trackMove) - .bind('mouseup.jcrop',trackUp); - } - //}}} - function toBack() //{{{ - { - $trk.css({ - zIndex: 290 - }); - $(document).unbind('.jcrop'); - } - //}}} - function trackMove(e) //{{{ - { - onMove(mouseAbs(e)); - return false; - } - //}}} - function trackUp(e) //{{{ - { - e.preventDefault(); - e.stopPropagation(); - - if (btndown) { - btndown = false; - - onDone(mouseAbs(e)); - - if (Selection.isAwake()) { - options.onSelect.call(api, unscale(Coords.getFixed())); - } - - toBack(); - onMove = function () {}; - onDone = function () {}; - } - - return false; - } - //}}} - function activateHandlers(move, done, touch) //{{{ - { - btndown = true; - onMove = move; - onDone = done; - toFront(touch); - return false; - } - //}}} - function trackTouchMove(e) //{{{ - { - onMove(mouseAbs(Touch.cfilter(e))); - return false; - } - //}}} - function trackTouchEnd(e) //{{{ - { - return trackUp(Touch.cfilter(e)); - } - //}}} - function setCursor(t) //{{{ - { - $trk.css('cursor', t); - } - //}}} - - if (!trackDoc) { - $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); - } - - $img.before($trk); - return { - activateHandlers: activateHandlers, - setCursor: setCursor - }; - }()); - //}}} - // KeyManager Module {{{ - var KeyManager = (function () { - var $keymgr = $('').css({ - position: 'fixed', - left: '-120px', - width: '12px' - }).addClass('jcrop-keymgr'), - - $keywrap = $('
').css({ - position: 'absolute', - overflow: 'hidden' - }).append($keymgr); - - function watchKeys() //{{{ - { - if (options.keySupport) { - $keymgr.show(); - $keymgr.focus(); - } - } - //}}} - function onBlur(e) //{{{ - { - $keymgr.hide(); - } - //}}} - function doNudge(e, x, y) //{{{ - { - if (options.allowMove) { - Coords.moveOffset([x, y]); - Selection.updateVisible(true); - } - e.preventDefault(); - e.stopPropagation(); - } - //}}} - function parseKey(e) //{{{ - { - if (e.ctrlKey || e.metaKey) { - return true; - } - shift_down = e.shiftKey ? true : false; - var nudge = shift_down ? 10 : 1; - - switch (e.keyCode) { - case 37: - doNudge(e, -nudge, 0); - break; - case 39: - doNudge(e, nudge, 0); - break; - case 38: - doNudge(e, 0, -nudge); - break; - case 40: - doNudge(e, 0, nudge); - break; - case 27: - if (options.allowSelect) Selection.release(); - break; - case 9: - return true; - } - - return false; - } - //}}} - - if (options.keySupport) { - $keymgr.keydown(parseKey).blur(onBlur); - if (ie6mode || !options.fixedSupport) { - $keymgr.css({ - position: 'absolute', - left: '-20px' - }); - $keywrap.append($keymgr).insertBefore($img); - } else { - $keymgr.insertBefore($img); - } - } - - - return { - watchKeys: watchKeys - }; - }()); - //}}} - // }}} - // API methods {{{ - function setClass(cname) //{{{ - { - $div.removeClass().addClass(cssClass('holder')).addClass(cname); - } - //}}} - function animateTo(a, callback) //{{{ - { - var x1 = a[0] / xscale, - y1 = a[1] / yscale, - x2 = a[2] / xscale, - y2 = a[3] / yscale; - - if (animating) { - return; - } - - var animto = Coords.flipCoords(x1, y1, x2, y2), - c = Coords.getFixed(), - initcr = [c.x, c.y, c.x2, c.y2], - animat = initcr, - interv = options.animationDelay, - ix1 = animto[0] - initcr[0], - iy1 = animto[1] - initcr[1], - ix2 = animto[2] - initcr[2], - iy2 = animto[3] - initcr[3], - pcent = 0, - velocity = options.swingSpeed; - - x1 = animat[0]; - y1 = animat[1]; - x2 = animat[2]; - y2 = animat[3]; - - Selection.animMode(true); - var anim_timer; - - function queueAnimator() { - window.setTimeout(animator, interv); - } - var animator = (function () { - return function () { - pcent += (100 - pcent) / velocity; - - animat[0] = Math.round(x1 + ((pcent / 100) * ix1)); - animat[1] = Math.round(y1 + ((pcent / 100) * iy1)); - animat[2] = Math.round(x2 + ((pcent / 100) * ix2)); - animat[3] = Math.round(y2 + ((pcent / 100) * iy2)); - - if (pcent >= 99.8) { - pcent = 100; - } - if (pcent < 100) { - setSelectRaw(animat); - queueAnimator(); - } else { - Selection.done(); - Selection.animMode(false); - if (typeof(callback) === 'function') { - callback.call(api); - } - } - }; - }()); - queueAnimator(); - } - //}}} - function setSelect(rect) //{{{ - { - setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]); - options.onSelect.call(api, unscale(Coords.getFixed())); - Selection.enableHandles(); - } - //}}} - function setSelectRaw(l) //{{{ - { - Coords.setPressed([l[0], l[1]]); - Coords.setCurrent([l[2], l[3]]); - Selection.update(); - } - //}}} - function tellSelect() //{{{ - { - return unscale(Coords.getFixed()); - } - //}}} - function tellScaled() //{{{ - { - return Coords.getFixed(); - } - //}}} - function setOptionsNew(opt) //{{{ - { - setOptions(opt); - interfaceUpdate(); - } - //}}} - function disableCrop() //{{{ - { - options.disabled = true; - Selection.disableHandles(); - Selection.setCursor('default'); - Tracker.setCursor('default'); - } - //}}} - function enableCrop() //{{{ - { - options.disabled = false; - interfaceUpdate(); - } - //}}} - function cancelCrop() //{{{ - { - Selection.done(); - Tracker.activateHandlers(null, null); - } - //}}} - function destroy() //{{{ - { - $div.remove(); - $origimg.show(); - $origimg.css('visibility','visible'); - $(obj).removeData('Jcrop'); - } - //}}} - function setImage(src, callback) //{{{ - { - Selection.release(); - disableCrop(); - var img = new Image(); - img.onload = function () { - var iw = img.width; - var ih = img.height; - var bw = options.boxWidth; - var bh = options.boxHeight; - $img.width(iw).height(ih); - $img.attr('src', src); - $img2.attr('src', src); - presize($img, bw, bh); - boundx = $img.width(); - boundy = $img.height(); - $img2.width(boundx).height(boundy); - $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); - $div.width(boundx).height(boundy); - Shade.resize(boundx,boundy); - enableCrop(); - - if (typeof(callback) === 'function') { - callback.call(api); - } - }; - img.src = src; - } - //}}} - function colorChangeMacro($obj,color,now) { - var mycolor = color || options.bgColor; - if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { - $obj.animate({ - backgroundColor: mycolor - }, { - queue: false, - duration: options.fadeTime - }); - } else { - $obj.css('backgroundColor', mycolor); - } - } - function interfaceUpdate(alt) //{{{ - // This method tweaks the interface based on options object. - // Called when options are changed and at end of initialization. - { - if (options.allowResize) { - if (alt) { - Selection.enableOnly(); - } else { - Selection.enableHandles(); - } - } else { - Selection.disableHandles(); - } - - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - Selection.setCursor(options.allowMove ? 'move' : 'default'); - - if (options.hasOwnProperty('trueSize')) { - xscale = options.trueSize[0] / boundx; - yscale = options.trueSize[1] / boundy; - } - - if (options.hasOwnProperty('setSelect')) { - setSelect(options.setSelect); - Selection.done(); - delete(options.setSelect); - } - - Shade.refresh(); - - if (options.bgColor != bgcolor) { - colorChangeMacro( - options.shade? Shade.getShades(): $div, - options.shade? - (options.shadeColor || options.bgColor): - options.bgColor - ); - bgcolor = options.bgColor; - } - - if (bgopacity != options.bgOpacity) { - bgopacity = options.bgOpacity; - if (options.shade) Shade.refresh(); - else Selection.setBgOpacity(bgopacity); - } - - xlimit = options.maxSize[0] || 0; - ylimit = options.maxSize[1] || 0; - xmin = options.minSize[0] || 0; - ymin = options.minSize[1] || 0; - - if (options.hasOwnProperty('outerImage')) { - $img.attr('src', options.outerImage); - delete(options.outerImage); - } - - Selection.refresh(); - } - //}}} - //}}} - - if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); - - $hdl_holder.hide(); - interfaceUpdate(true); - - var api = { - setImage: setImage, - animateTo: animateTo, - setSelect: setSelect, - setOptions: setOptionsNew, - tellSelect: tellSelect, - tellScaled: tellScaled, - setClass: setClass, - - disable: disableCrop, - enable: enableCrop, - cancel: cancelCrop, - release: Selection.release, - destroy: destroy, - - focus: KeyManager.watchKeys, - - getBounds: function () { - return [boundx * xscale, boundy * yscale]; - }, - getWidgetSize: function () { - return [boundx, boundy]; - }, - getScaleFactor: function () { - return [xscale, yscale]; - }, - getOptions: function() { - // careful: internal values are returned - return options; - }, - - ui: { - holder: $div, - selection: $sel - } - }; - - if (is_msie) $div.bind('selectstart', function () { return false; }); - - $origimg.data('Jcrop', api); - return api; - }; - $.fn.Jcrop = function (options, callback) //{{{ - { - var api; - // Iterate over each object, attach Jcrop - this.each(function () { - // If we've already attached to this object - if ($(this).data('Jcrop')) { - // The API can be requested this way (undocumented) - if (options === 'api') return $(this).data('Jcrop'); - // Otherwise, we just reset the options... - else $(this).data('Jcrop').setOptions(options); - } - // If we haven't been attached, preload and attach - else { - if (this.tagName == 'IMG') - $.Jcrop.Loader(this,function(){ - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - }); - else { - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - } - } - }); - - // Return "this" so the object is chainable (jQuery-style) - return this; - }; - //}}} - // $.Jcrop.Loader - basic image loader {{{ - - $.Jcrop.Loader = function(imgobj,success,error){ - var $img = $(imgobj), img = $img[0]; - - function completeCheck(){ - if (img.complete) { - $img.unbind('.jcloader'); - if ($.isFunction(success)) success.call(img); - } - else window.setTimeout(completeCheck,50); - } - - $img - .bind('load.jcloader',completeCheck) - .bind('error.jcloader',function(e){ - $img.unbind('.jcloader'); - if ($.isFunction(error)) error.call(img); - }); - - if (img.complete && $.isFunction(success)){ - $img.unbind('.jcloader'); - success.call(img); - } - }; - - //}}} - // Global Defaults {{{ - $.Jcrop.defaults = { - - // Basic Settings - allowSelect: true, - allowMove: true, - allowResize: true, - - trackDocument: true, - - // Styling Options - baseClass: 'jcrop', - addClass: null, - bgColor: 'black', - bgOpacity: 0.6, - bgFade: false, - borderOpacity: 0.4, - handleOpacity: 0.5, - handleSize: null, - - aspectRatio: 0, - keySupport: true, - createHandles: ['n','s','e','w','nw','ne','se','sw'], - createDragbars: ['n','s','e','w'], - createBorders: ['n','s','e','w'], - drawBorders: true, - dragEdges: true, - fixedSupport: true, - touchSupport: null, - - shade: null, - - boxWidth: 0, - boxHeight: 0, - boundary: 2, - fadeTime: 400, - animationDelay: 20, - swingSpeed: 3, - - minSelect: [0, 0], - maxSize: [0, 0], - minSize: [0, 0], - - // Callbacks / Event Handlers - onChange: function () {}, - onSelect: function () {}, - onDblClick: function () {}, - onRelease: function () {} - }; - - // }}} -}(jQuery)); diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css deleted file mode 100644 index 51ee2c8fdc..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* jquery.Jcrop.min.css v0.9.12 (build:20140524) */ -.jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none} \ No newline at end of file diff --git a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js b/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js deleted file mode 100644 index d9ae1adfc8..0000000000 --- a/web/ext/image/jcrop-0.9.12/jquery.Jcrop.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * jquery.Jcrop.min.js v0.9.12 (build:20140524) - * jQuery Image Cropping Plugin - released under MIT License - * Copyright (c) 2008-2013 Tapmodo Interactive LLC - * https://github.com/tapmodo/Jcrop - */ -!function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("
").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("
").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("
"),$img_holder=$("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("
").width("100%").height("100%").css("zIndex",320),$sel=$("
").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;ix1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("
").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("
").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("
").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("
").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("
").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery); \ No newline at end of file diff --git a/web/ext/layers/jcarousel/jcarousel.js b/web/ext/layers/jcarousel/jcarousel.js deleted file mode 100755 index 9f9a21b969..0000000000 --- a/web/ext/layers/jcarousel/jcarousel.js +++ /dev/null @@ -1,1026 +0,0 @@ -/*! jCarousel - v0.3.3 - 2015-04-07 -* http://sorgalla.com/jcarousel/ -* Copyright (c) 2006-2015 Jan Sorgalla; Licensed MIT */ -(function($) { - 'use strict'; - - var jCarousel = $.jCarousel = {}; - - jCarousel.version = '0.3.3'; - - var rRelativeTarget = /^([+\-]=)?(.+)$/; - - jCarousel.parseTarget = function(target) { - var relative = false, - parts = typeof target !== 'object' ? - rRelativeTarget.exec(target) : - null; - - if (parts) { - target = parseInt(parts[2], 10) || 0; - - if (parts[1]) { - relative = true; - if (parts[1] === '-=') { - target *= -1; - } - } - } else if (typeof target !== 'object') { - target = parseInt(target, 10) || 0; - } - - return { - target: target, - relative: relative - }; - }; - - jCarousel.detectCarousel = function(element) { - var carousel; - - while (element.length > 0) { - carousel = element.filter('[data-jcarousel]'); - - if (carousel.length > 0) { - return carousel; - } - - carousel = element.find('[data-jcarousel]'); - - if (carousel.length > 0) { - return carousel; - } - - element = element.parent(); - } - - return null; - }; - - jCarousel.base = function(pluginName) { - return { - version: jCarousel.version, - _options: {}, - _element: null, - _carousel: null, - _init: $.noop, - _create: $.noop, - _destroy: $.noop, - _reload: $.noop, - create: function() { - this._element - .attr('data-' + pluginName.toLowerCase(), true) - .data(pluginName, this); - - if (false === this._trigger('create')) { - return this; - } - - this._create(); - - this._trigger('createend'); - - return this; - }, - destroy: function() { - if (false === this._trigger('destroy')) { - return this; - } - - this._destroy(); - - this._trigger('destroyend'); - - this._element - .removeData(pluginName) - .removeAttr('data-' + pluginName.toLowerCase()); - - return this; - }, - reload: function(options) { - if (false === this._trigger('reload')) { - return this; - } - - if (options) { - this.options(options); - } - - this._reload(); - - this._trigger('reloadend'); - - return this; - }, - element: function() { - return this._element; - }, - options: function(key, value) { - if (arguments.length === 0) { - return $.extend({}, this._options); - } - - if (typeof key === 'string') { - if (typeof value === 'undefined') { - return typeof this._options[key] === 'undefined' ? - null : - this._options[key]; - } - - this._options[key] = value; - } else { - this._options = $.extend({}, this._options, key); - } - - return this; - }, - carousel: function() { - if (!this._carousel) { - this._carousel = jCarousel.detectCarousel(this.options('carousel') || this._element); - - if (!this._carousel) { - $.error('Could not detect carousel for plugin "' + pluginName + '"'); - } - } - - return this._carousel; - }, - _trigger: function(type, element, data) { - var event, - defaultPrevented = false; - - data = [this].concat(data || []); - - (element || this._element).each(function() { - event = $.Event((pluginName + ':' + type).toLowerCase()); - - $(this).trigger(event, data); - - if (event.isDefaultPrevented()) { - defaultPrevented = true; - } - }); - - return !defaultPrevented; - } - }; - }; - - jCarousel.plugin = function(pluginName, pluginPrototype) { - var Plugin = $[pluginName] = function(element, options) { - this._element = $(element); - this.options(options); - - this._init(); - this.create(); - }; - - Plugin.fn = Plugin.prototype = $.extend( - {}, - jCarousel.base(pluginName), - pluginPrototype - ); - - $.fn[pluginName] = function(options) { - var args = Array.prototype.slice.call(arguments, 1), - returnValue = this; - - if (typeof options === 'string') { - this.each(function() { - var instance = $(this).data(pluginName); - - if (!instance) { - return $.error( - 'Cannot call methods on ' + pluginName + ' prior to initialization; ' + - 'attempted to call method "' + options + '"' - ); - } - - if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { - return $.error( - 'No such method "' + options + '" for ' + pluginName + ' instance' - ); - } - - var methodValue = instance[options].apply(instance, args); - - if (methodValue !== instance && typeof methodValue !== 'undefined') { - returnValue = methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $(this).data(pluginName); - - if (instance instanceof Plugin) { - instance.reload(options); - } else { - new Plugin(this, options); - } - }); - } - - return returnValue; - }; - - return Plugin; - }; -}(jQuery)); - -(function($, window) { - 'use strict'; - - var toFloat = function(val) { - return parseFloat(val) || 0; - }; - - $.jCarousel.plugin('jcarousel', { - animating: false, - tail: 0, - inTail: false, - resizeTimer: null, - lt: null, - vertical: false, - rtl: false, - circular: false, - underflow: false, - relative: false, - - _options: { - list: function() { - return this.element().children().eq(0); - }, - items: function() { - return this.list().children(); - }, - animation: 400, - transitions: false, - wrap: null, - vertical: null, - rtl: null, - center: false - }, - - // Protected, don't access directly - _list: null, - _items: null, - _target: $(), - _first: $(), - _last: $(), - _visible: $(), - _fullyvisible: $(), - _init: function() { - var self = this; - - this.onWindowResize = function() { - if (self.resizeTimer) { - clearTimeout(self.resizeTimer); - } - - self.resizeTimer = setTimeout(function() { - self.reload(); - }, 100); - }; - - return this; - }, - _create: function() { - this._reload(); - - $(window).on('resize.jcarousel', this.onWindowResize); - }, - _destroy: function() { - $(window).off('resize.jcarousel', this.onWindowResize); - }, - _reload: function() { - this.vertical = this.options('vertical'); - - if (this.vertical == null) { - this.vertical = this.list().height() > this.list().width(); - } - - this.rtl = this.options('rtl'); - - if (this.rtl == null) { - this.rtl = (function(element) { - if (('' + element.attr('dir')).toLowerCase() === 'rtl') { - return true; - } - - var found = false; - - element.parents('[dir]').each(function() { - if ((/rtl/i).test($(this).attr('dir'))) { - found = true; - return false; - } - }); - - return found; - }(this._element)); - } - - this.lt = this.vertical ? 'top' : 'left'; - - // Ensure before closest() call - this.relative = this.list().css('position') === 'relative'; - - // Force list and items reload - this._list = null; - this._items = null; - - var item = this.index(this._target) >= 0 ? - this._target : - this.closest(); - - // _prepare() needs this here - this.circular = this.options('wrap') === 'circular'; - this.underflow = false; - - var props = {'left': 0, 'top': 0}; - - if (item.length > 0) { - this._prepare(item); - this.list().find('[data-jcarousel-clone]').remove(); - - // Force items reload - this._items = null; - - this.underflow = this._fullyvisible.length >= this.items().length; - this.circular = this.circular && !this.underflow; - - props[this.lt] = this._position(item) + 'px'; - } - - this.move(props); - - return this; - }, - list: function() { - if (this._list === null) { - var option = this.options('list'); - this._list = $.isFunction(option) ? option.call(this) : this._element.find(option); - } - - return this._list; - }, - items: function() { - if (this._items === null) { - var option = this.options('items'); - this._items = ($.isFunction(option) ? option.call(this) : this.list().find(option)).not('[data-jcarousel-clone]'); - } - - return this._items; - }, - index: function(item) { - return this.items().index(item); - }, - closest: function() { - var self = this, - pos = this.list().position()[this.lt], - closest = $(), // Ensure we're returning a jQuery instance - stop = false, - lrb = this.vertical ? 'bottom' : (this.rtl && !this.relative ? 'left' : 'right'), - width; - - if (this.rtl && this.relative && !this.vertical) { - pos += this.list().width() - this.clipping(); - } - - this.items().each(function() { - closest = $(this); - - if (stop) { - return false; - } - - var dim = self.dimension(closest); - - pos += dim; - - if (pos >= 0) { - width = dim - toFloat(closest.css('margin-' + lrb)); - - if ((Math.abs(pos) - dim + (width / 2)) <= 0) { - stop = true; - } else { - return false; - } - } - }); - - - return closest; - }, - target: function() { - return this._target; - }, - first: function() { - return this._first; - }, - last: function() { - return this._last; - }, - visible: function() { - return this._visible; - }, - fullyvisible: function() { - return this._fullyvisible; - }, - hasNext: function() { - if (false === this._trigger('hasnext')) { - return true; - } - - var wrap = this.options('wrap'), - end = this.items().length - 1, - check = this.options('center') ? this._target : this._last; - - return end >= 0 && !this.underflow && - ((wrap && wrap !== 'first') || - (this.index(check) < end) || - (this.tail && !this.inTail)) ? true : false; - }, - hasPrev: function() { - if (false === this._trigger('hasprev')) { - return true; - } - - var wrap = this.options('wrap'); - - return this.items().length > 0 && !this.underflow && - ((wrap && wrap !== 'last') || - (this.index(this._first) > 0) || - (this.tail && this.inTail)) ? true : false; - }, - clipping: function() { - return this._element['inner' + (this.vertical ? 'Height' : 'Width')](); - }, - dimension: function(element) { - return element['outer' + (this.vertical ? 'Height' : 'Width')](true); - }, - scroll: function(target, animate, callback) { - if (this.animating) { - return this; - } - - if (false === this._trigger('scroll', null, [target, animate])) { - return this; - } - - if ($.isFunction(animate)) { - callback = animate; - animate = true; - } - - var parsed = $.jCarousel.parseTarget(target); - - if (parsed.relative) { - var end = this.items().length - 1, - scroll = Math.abs(parsed.target), - wrap = this.options('wrap'), - current, - first, - index, - start, - curr, - isVisible, - props, - i; - - if (parsed.target > 0) { - var last = this.index(this._last); - - if (last >= end && this.tail) { - if (!this.inTail) { - this._scrollTail(animate, callback); - } else { - if (wrap === 'both' || wrap === 'last') { - this._scroll(0, animate, callback); - } else { - if ($.isFunction(callback)) { - callback.call(this, false); - } - } - } - } else { - current = this.index(this._target); - - if ((this.underflow && current === end && (wrap === 'circular' || wrap === 'both' || wrap === 'last')) || - (!this.underflow && last === end && (wrap === 'both' || wrap === 'last'))) { - this._scroll(0, animate, callback); - } else { - index = current + scroll; - - if (this.circular && index > end) { - i = end; - curr = this.items().get(-1); - - while (i++ < index) { - curr = this.items().eq(0); - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().append(curr); - - if (!isVisible) { - props = {}; - props[this.lt] = this.dimension(curr); - this.moveBy(props); - } - - // Force items reload - this._items = null; - } - - this._scroll(curr, animate, callback); - } else { - this._scroll(Math.min(index, end), animate, callback); - } - } - } - } else { - if (this.inTail) { - this._scroll(Math.max((this.index(this._first) - scroll) + 1, 0), animate, callback); - } else { - first = this.index(this._first); - current = this.index(this._target); - start = this.underflow ? current : first; - index = start - scroll; - - if (start <= 0 && ((this.underflow && wrap === 'circular') || wrap === 'both' || wrap === 'first')) { - this._scroll(end, animate, callback); - } else { - if (this.circular && index < 0) { - i = index; - curr = this.items().get(0); - - while (i++ < 0) { - curr = this.items().eq(-1); - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().prepend(curr); - - // Force items reload - this._items = null; - - var dim = this.dimension(curr); - - props = {}; - props[this.lt] = -dim; - this.moveBy(props); - - } - - this._scroll(curr, animate, callback); - } else { - this._scroll(Math.max(index, 0), animate, callback); - } - } - } - } - } else { - this._scroll(parsed.target, animate, callback); - } - - this._trigger('scrollend'); - - return this; - }, - moveBy: function(properties, opts) { - var position = this.list().position(), - multiplier = 1, - correction = 0; - - if (this.rtl && !this.vertical) { - multiplier = -1; - - if (this.relative) { - correction = this.list().width() - this.clipping(); - } - } - - if (properties.left) { - properties.left = (position.left + correction + toFloat(properties.left) * multiplier) + 'px'; - } - - if (properties.top) { - properties.top = (position.top + correction + toFloat(properties.top) * multiplier) + 'px'; - } - - return this.move(properties, opts); - }, - move: function(properties, opts) { - opts = opts || {}; - - var option = this.options('transitions'), - transitions = !!option, - transforms = !!option.transforms, - transforms3d = !!option.transforms3d, - duration = opts.duration || 0, - list = this.list(); - - if (!transitions && duration > 0) { - list.animate(properties, opts); - return; - } - - var complete = opts.complete || $.noop, - css = {}; - - if (transitions) { - var backup = { - transitionDuration: list.css('transitionDuration'), - transitionTimingFunction: list.css('transitionTimingFunction'), - transitionProperty: list.css('transitionProperty') - }, - oldComplete = complete; - - complete = function() { - $(this).css(backup); - oldComplete.call(this); - }; - css = { - transitionDuration: (duration > 0 ? duration / 1000 : 0) + 's', - transitionTimingFunction: option.easing || opts.easing, - transitionProperty: duration > 0 ? (function() { - if (transforms || transforms3d) { - // We have to use 'all' because jQuery doesn't prefix - // css values, like transition-property: transform; - return 'all'; - } - - return properties.left ? 'left' : 'top'; - })() : 'none', - transform: 'none' - }; - } - - if (transforms3d) { - css.transform = 'translate3d(' + (properties.left || 0) + ',' + (properties.top || 0) + ',0)'; - } else if (transforms) { - css.transform = 'translate(' + (properties.left || 0) + ',' + (properties.top || 0) + ')'; - } else { - $.extend(css, properties); - } - - if (transitions && duration > 0) { - list.one('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', complete); - } - - list.css(css); - - if (duration <= 0) { - list.each(function() { - complete.call(this); - }); - } - }, - _scroll: function(item, animate, callback) { - if (this.animating) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - if (typeof item !== 'object') { - item = this.items().eq(item); - } else if (typeof item.jquery === 'undefined') { - item = $(item); - } - - if (item.length === 0) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - this.inTail = false; - - this._prepare(item); - - var pos = this._position(item), - currPos = this.list().position()[this.lt]; - - if (pos === currPos) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - var properties = {}; - properties[this.lt] = pos + 'px'; - - this._animate(properties, animate, callback); - - return this; - }, - _scrollTail: function(animate, callback) { - if (this.animating || !this.tail) { - if ($.isFunction(callback)) { - callback.call(this, false); - } - - return this; - } - - var pos = this.list().position()[this.lt]; - - if (this.rtl && this.relative && !this.vertical) { - pos += this.list().width() - this.clipping(); - } - - if (this.rtl && !this.vertical) { - pos += this.tail; - } else { - pos -= this.tail; - } - - this.inTail = true; - - var properties = {}; - properties[this.lt] = pos + 'px'; - - this._update({ - target: this._target.next(), - fullyvisible: this._fullyvisible.slice(1).add(this._visible.last()) - }); - - this._animate(properties, animate, callback); - - return this; - }, - _animate: function(properties, animate, callback) { - callback = callback || $.noop; - - if (false === this._trigger('animate')) { - callback.call(this, false); - return this; - } - - this.animating = true; - - var animation = this.options('animation'), - complete = $.proxy(function() { - this.animating = false; - - var c = this.list().find('[data-jcarousel-clone]'); - - if (c.length > 0) { - c.remove(); - this._reload(); - } - - this._trigger('animateend'); - - callback.call(this, true); - }, this); - - var opts = typeof animation === 'object' ? - $.extend({}, animation) : - {duration: animation}, - oldComplete = opts.complete || $.noop; - - if (animate === false) { - opts.duration = 0; - } else if (typeof $.fx.speeds[opts.duration] !== 'undefined') { - opts.duration = $.fx.speeds[opts.duration]; - } - - opts.complete = function() { - complete(); - oldComplete.call(this); - }; - - this.move(properties, opts); - - return this; - }, - _prepare: function(item) { - var index = this.index(item), - idx = index, - wh = this.dimension(item), - clip = this.clipping(), - lrb = this.vertical ? 'bottom' : (this.rtl ? 'left' : 'right'), - center = this.options('center'), - update = { - target: item, - first: item, - last: item, - visible: item, - fullyvisible: wh <= clip ? item : $() - }, - curr, - isVisible, - margin, - dim; - - if (center) { - wh /= 2; - clip /= 2; - } - - if (wh < clip) { - while (true) { - curr = this.items().eq(++idx); - - if (curr.length === 0) { - if (!this.circular) { - break; - } - - curr = this.items().eq(0); - - if (item.get(0) === curr.get(0)) { - break; - } - - isVisible = this._visible.index(curr) >= 0; - - if (isVisible) { - curr.after(curr.clone(true).attr('data-jcarousel-clone', true)); - } - - this.list().append(curr); - - if (!isVisible) { - var props = {}; - props[this.lt] = this.dimension(curr); - this.moveBy(props); - } - - // Force items reload - this._items = null; - } - - dim = this.dimension(curr); - - if (dim === 0) { - break; - } - - wh += dim; - - update.last = curr; - update.visible = update.visible.add(curr); - - // Remove right/bottom margin from total width - margin = toFloat(curr.css('margin-' + lrb)); - - if ((wh - margin) <= clip) { - update.fullyvisible = update.fullyvisible.add(curr); - } - - if (wh >= clip) { - break; - } - } - } - - if (!this.circular && !center && wh < clip) { - idx = index; - - while (true) { - if (--idx < 0) { - break; - } - - curr = this.items().eq(idx); - - if (curr.length === 0) { - break; - } - - dim = this.dimension(curr); - - if (dim === 0) { - break; - } - - wh += dim; - - update.first = curr; - update.visible = update.visible.add(curr); - - // Remove right/bottom margin from total width - margin = toFloat(curr.css('margin-' + lrb)); - - if ((wh - margin) <= clip) { - update.fullyvisible = update.fullyvisible.add(curr); - } - - if (wh >= clip) { - break; - } - } - } - - this._update(update); - - this.tail = 0; - - if (!center && - this.options('wrap') !== 'circular' && - this.options('wrap') !== 'custom' && - this.index(update.last) === (this.items().length - 1)) { - - // Remove right/bottom margin from total width - wh -= toFloat(update.last.css('margin-' + lrb)); - - if (wh > clip) { - this.tail = wh - clip; - } - } - - return this; - }, - _position: function(item) { - var first = this._first, - pos = first.position()[this.lt], - center = this.options('center'), - centerOffset = center ? (this.clipping() / 2) - (this.dimension(first) / 2) : 0; - - if (this.rtl && !this.vertical) { - if (this.relative) { - pos -= this.list().width() - this.dimension(first); - } else { - pos -= this.clipping() - this.dimension(first); - } - - pos += centerOffset; - } else { - pos -= centerOffset; - } - - if (!center && - (this.index(item) > this.index(first) || this.inTail) && - this.tail) { - pos = this.rtl && !this.vertical ? pos - this.tail : pos + this.tail; - this.inTail = true; - } else { - this.inTail = false; - } - - return -pos; - }, - _update: function(update) { - var self = this, - current = { - target: this._target, - first: this._first, - last: this._last, - visible: this._visible, - fullyvisible: this._fullyvisible - }, - back = this.index(update.first || current.first) < this.index(current.first), - key, - doUpdate = function(key) { - var elIn = [], - elOut = []; - - update[key].each(function() { - if (current[key].index(this) < 0) { - elIn.push(this); - } - }); - - current[key].each(function() { - if (update[key].index(this) < 0) { - elOut.push(this); - } - }); - - if (back) { - elIn = elIn.reverse(); - } else { - elOut = elOut.reverse(); - } - - self._trigger(key + 'in', $(elIn)); - self._trigger(key + 'out', $(elOut)); - - self['_' + key] = update[key]; - }; - - for (key in update) { - doUpdate(key); - } - - return this; - } - }); -}(jQuery, window)); diff --git a/web/ext/layers/jcarousel/jcarousel.min.js b/web/ext/layers/jcarousel/jcarousel.min.js deleted file mode 100755 index 96e91a3d57..0000000000 --- a/web/ext/layers/jcarousel/jcarousel.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jCarousel - v0.3.3 - 2015-04-07 -* http://sorgalla.com/jcarousel/ -* Copyright (c) 2006-2015 Jan Sorgalla; Licensed MIT */ -!function(a){"use strict";var b=a.jCarousel={};b.version="0.3.3";var c=/^([+\-]=)?(.+)$/;b.parseTarget=function(a){var b=!1,d="object"!=typeof a?c.exec(a):null;return d?(a=parseInt(d[2],10)||0,d[1]&&(b=!0,"-="===d[1]&&(a*=-1))):"object"!=typeof a&&(a=parseInt(a,10)||0),{target:a,relative:b}},b.detectCarousel=function(a){for(var b;a.length>0;){if(b=a.filter("[data-jcarousel]"),b.length>0)return b;if(b=a.find("[data-jcarousel]"),b.length>0)return b;a=a.parent()}return null},b.base=function(c){return{version:b.version,_options:{},_element:null,_carousel:null,_init:a.noop,_create:a.noop,_destroy:a.noop,_reload:a.noop,create:function(){return this._element.attr("data-"+c.toLowerCase(),!0).data(c,this),!1===this._trigger("create")?this:(this._create(),this._trigger("createend"),this)},destroy:function(){return!1===this._trigger("destroy")?this:(this._destroy(),this._trigger("destroyend"),this._element.removeData(c).removeAttr("data-"+c.toLowerCase()),this)},reload:function(a){return!1===this._trigger("reload")?this:(a&&this.options(a),this._reload(),this._trigger("reloadend"),this)},element:function(){return this._element},options:function(b,c){if(0===arguments.length)return a.extend({},this._options);if("string"==typeof b){if("undefined"==typeof c)return"undefined"==typeof this._options[b]?null:this._options[b];this._options[b]=c}else this._options=a.extend({},this._options,b);return this},carousel:function(){return this._carousel||(this._carousel=b.detectCarousel(this.options("carousel")||this._element),this._carousel||a.error('Could not detect carousel for plugin "'+c+'"')),this._carousel},_trigger:function(b,d,e){var f,g=!1;return e=[this].concat(e||[]),(d||this._element).each(function(){f=a.Event((c+":"+b).toLowerCase()),a(this).trigger(f,e),f.isDefaultPrevented()&&(g=!0)}),!g}}},b.plugin=function(c,d){var e=a[c]=function(b,c){this._element=a(b),this.options(c),this._init(),this.create()};return e.fn=e.prototype=a.extend({},b.base(c),d),a.fn[c]=function(b){var d=Array.prototype.slice.call(arguments,1),f=this;return this.each("string"==typeof b?function(){var e=a(this).data(c);if(!e)return a.error("Cannot call methods on "+c+' prior to initialization; attempted to call method "'+b+'"');if(!a.isFunction(e[b])||"_"===b.charAt(0))return a.error('No such method "'+b+'" for '+c+" instance");var g=e[b].apply(e,d);return g!==e&&"undefined"!=typeof g?(f=g,!1):void 0}:function(){var d=a(this).data(c);d instanceof e?d.reload(b):new e(this,b)}),f},e}}(jQuery),function(a,b){"use strict";var c=function(a){return parseFloat(a)||0};a.jCarousel.plugin("jcarousel",{animating:!1,tail:0,inTail:!1,resizeTimer:null,lt:null,vertical:!1,rtl:!1,circular:!1,underflow:!1,relative:!1,_options:{list:function(){return this.element().children().eq(0)},items:function(){return this.list().children()},animation:400,transitions:!1,wrap:null,vertical:null,rtl:null,center:!1},_list:null,_items:null,_target:a(),_first:a(),_last:a(),_visible:a(),_fullyvisible:a(),_init:function(){var a=this;return this.onWindowResize=function(){a.resizeTimer&&clearTimeout(a.resizeTimer),a.resizeTimer=setTimeout(function(){a.reload()},100)},this},_create:function(){this._reload(),a(b).on("resize.jcarousel",this.onWindowResize)},_destroy:function(){a(b).off("resize.jcarousel",this.onWindowResize)},_reload:function(){this.vertical=this.options("vertical"),null==this.vertical&&(this.vertical=this.list().height()>this.list().width()),this.rtl=this.options("rtl"),null==this.rtl&&(this.rtl=function(b){if("rtl"===(""+b.attr("dir")).toLowerCase())return!0;var c=!1;return b.parents("[dir]").each(function(){return/rtl/i.test(a(this).attr("dir"))?(c=!0,!1):void 0}),c}(this._element)),this.lt=this.vertical?"top":"left",this.relative="relative"===this.list().css("position"),this._list=null,this._items=null;var b=this.index(this._target)>=0?this._target:this.closest();this.circular="circular"===this.options("wrap"),this.underflow=!1;var c={left:0,top:0};return b.length>0&&(this._prepare(b),this.list().find("[data-jcarousel-clone]").remove(),this._items=null,this.underflow=this._fullyvisible.length>=this.items().length,this.circular=this.circular&&!this.underflow,c[this.lt]=this._position(b)+"px"),this.move(c),this},list:function(){if(null===this._list){var b=this.options("list");this._list=a.isFunction(b)?b.call(this):this._element.find(b)}return this._list},items:function(){if(null===this._items){var b=this.options("items");this._items=(a.isFunction(b)?b.call(this):this.list().find(b)).not("[data-jcarousel-clone]")}return this._items},index:function(a){return this.items().index(a)},closest:function(){var b,d=this,e=this.list().position()[this.lt],f=a(),g=!1,h=this.vertical?"bottom":this.rtl&&!this.relative?"left":"right";return this.rtl&&this.relative&&!this.vertical&&(e+=this.list().width()-this.clipping()),this.items().each(function(){if(f=a(this),g)return!1;var i=d.dimension(f);if(e+=i,e>=0){if(b=i-c(f.css("margin-"+h)),!(Math.abs(e)-i+b/2<=0))return!1;g=!0}}),f},target:function(){return this._target},first:function(){return this._first},last:function(){return this._last},visible:function(){return this._visible},fullyvisible:function(){return this._fullyvisible},hasNext:function(){if(!1===this._trigger("hasnext"))return!0;var a=this.options("wrap"),b=this.items().length-1,c=this.options("center")?this._target:this._last;return b>=0&&!this.underflow&&(a&&"first"!==a||this.index(c)0&&!this.underflow&&(a&&"last"!==a||this.index(this._first)>0||this.tail&&this.inTail)?!0:!1},clipping:function(){return this._element["inner"+(this.vertical?"Height":"Width")]()},dimension:function(a){return a["outer"+(this.vertical?"Height":"Width")](!0)},scroll:function(b,c,d){if(this.animating)return this;if(!1===this._trigger("scroll",null,[b,c]))return this;a.isFunction(c)&&(d=c,c=!0);var e=a.jCarousel.parseTarget(b);if(e.relative){var f,g,h,i,j,k,l,m,n=this.items().length-1,o=Math.abs(e.target),p=this.options("wrap");if(e.target>0){var q=this.index(this._last);if(q>=n&&this.tail)this.inTail?"both"===p||"last"===p?this._scroll(0,c,d):a.isFunction(d)&&d.call(this,!1):this._scrollTail(c,d);else if(f=this.index(this._target),this.underflow&&f===n&&("circular"===p||"both"===p||"last"===p)||!this.underflow&&q===n&&("both"===p||"last"===p))this._scroll(0,c,d);else if(h=f+o,this.circular&&h>n){for(m=n,j=this.items().get(-1);m++=0,k&&j.after(j.clone(!0).attr("data-jcarousel-clone",!0)),this.list().append(j),k||(l={},l[this.lt]=this.dimension(j),this.moveBy(l)),this._items=null;this._scroll(j,c,d)}else this._scroll(Math.min(h,n),c,d)}else if(this.inTail)this._scroll(Math.max(this.index(this._first)-o+1,0),c,d);else if(g=this.index(this._first),f=this.index(this._target),i=this.underflow?f:g,h=i-o,0>=i&&(this.underflow&&"circular"===p||"both"===p||"first"===p))this._scroll(n,c,d);else if(this.circular&&0>h){for(m=h,j=this.items().get(0);m++<0;){j=this.items().eq(-1),k=this._visible.index(j)>=0,k&&j.after(j.clone(!0).attr("data-jcarousel-clone",!0)),this.list().prepend(j),this._items=null;var r=this.dimension(j);l={},l[this.lt]=-r,this.moveBy(l)}this._scroll(j,c,d)}else this._scroll(Math.max(h,0),c,d)}else this._scroll(e.target,c,d);return this._trigger("scrollend"),this},moveBy:function(a,b){var d=this.list().position(),e=1,f=0;return this.rtl&&!this.vertical&&(e=-1,this.relative&&(f=this.list().width()-this.clipping())),a.left&&(a.left=d.left+f+c(a.left)*e+"px"),a.top&&(a.top=d.top+f+c(a.top)*e+"px"),this.move(a,b)},move:function(b,c){c=c||{};var d=this.options("transitions"),e=!!d,f=!!d.transforms,g=!!d.transforms3d,h=c.duration||0,i=this.list();if(!e&&h>0)return void i.animate(b,c);var j=c.complete||a.noop,k={};if(e){var l={transitionDuration:i.css("transitionDuration"),transitionTimingFunction:i.css("transitionTimingFunction"),transitionProperty:i.css("transitionProperty")},m=j;j=function(){a(this).css(l),m.call(this)},k={transitionDuration:(h>0?h/1e3:0)+"s",transitionTimingFunction:d.easing||c.easing,transitionProperty:h>0?function(){return f||g?"all":b.left?"left":"top"}():"none",transform:"none"}}g?k.transform="translate3d("+(b.left||0)+","+(b.top||0)+",0)":f?k.transform="translate("+(b.left||0)+","+(b.top||0)+")":a.extend(k,b),e&&h>0&&i.one("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",j),i.css(k),0>=h&&i.each(function(){j.call(this)})},_scroll:function(b,c,d){if(this.animating)return a.isFunction(d)&&d.call(this,!1),this;if("object"!=typeof b?b=this.items().eq(b):"undefined"==typeof b.jquery&&(b=a(b)),0===b.length)return a.isFunction(d)&&d.call(this,!1),this;this.inTail=!1,this._prepare(b);var e=this._position(b),f=this.list().position()[this.lt];if(e===f)return a.isFunction(d)&&d.call(this,!1),this;var g={};return g[this.lt]=e+"px",this._animate(g,c,d),this},_scrollTail:function(b,c){if(this.animating||!this.tail)return a.isFunction(c)&&c.call(this,!1),this;var d=this.list().position()[this.lt];this.rtl&&this.relative&&!this.vertical&&(d+=this.list().width()-this.clipping()),this.rtl&&!this.vertical?d+=this.tail:d-=this.tail,this.inTail=!0;var e={};return e[this.lt]=d+"px",this._update({target:this._target.next(),fullyvisible:this._fullyvisible.slice(1).add(this._visible.last())}),this._animate(e,b,c),this},_animate:function(b,c,d){if(d=d||a.noop,!1===this._trigger("animate"))return d.call(this,!1),this;this.animating=!0;var e=this.options("animation"),f=a.proxy(function(){this.animating=!1;var a=this.list().find("[data-jcarousel-clone]");a.length>0&&(a.remove(),this._reload()),this._trigger("animateend"),d.call(this,!0)},this),g="object"==typeof e?a.extend({},e):{duration:e},h=g.complete||a.noop;return c===!1?g.duration=0:"undefined"!=typeof a.fx.speeds[g.duration]&&(g.duration=a.fx.speeds[g.duration]),g.complete=function(){f(),h.call(this)},this.move(b,g),this},_prepare:function(b){var d,e,f,g,h=this.index(b),i=h,j=this.dimension(b),k=this.clipping(),l=this.vertical?"bottom":this.rtl?"left":"right",m=this.options("center"),n={target:b,first:b,last:b,visible:b,fullyvisible:k>=j?b:a()};if(m&&(j/=2,k/=2),k>j)for(;;){if(d=this.items().eq(++i),0===d.length){if(!this.circular)break;if(d=this.items().eq(0),b.get(0)===d.get(0))break;if(e=this._visible.index(d)>=0,e&&d.after(d.clone(!0).attr("data-jcarousel-clone",!0)),this.list().append(d),!e){var o={};o[this.lt]=this.dimension(d),this.moveBy(o)}this._items=null}if(g=this.dimension(d),0===g)break;if(j+=g,n.last=d,n.visible=n.visible.add(d),f=c(d.css("margin-"+l)),k>=j-f&&(n.fullyvisible=n.fullyvisible.add(d)),j>=k)break}if(!this.circular&&!m&&k>j)for(i=h;;){if(--i<0)break;if(d=this.items().eq(i),0===d.length)break;if(g=this.dimension(d),0===g)break;if(j+=g,n.first=d,n.visible=n.visible.add(d),f=c(d.css("margin-"+l)),k>=j-f&&(n.fullyvisible=n.fullyvisible.add(d)),j>=k)break}return this._update(n),this.tail=0,m||"circular"===this.options("wrap")||"custom"===this.options("wrap")||this.index(n.last)!==this.items().length-1||(j-=c(n.last.css("margin-"+l)),j>k&&(this.tail=j-k)),this},_position:function(a){var b=this._first,c=b.position()[this.lt],d=this.options("center"),e=d?this.clipping()/2-this.dimension(b)/2:0;return this.rtl&&!this.vertical?(c-=this.relative?this.list().width()-this.dimension(b):this.clipping()-this.dimension(b),c+=e):c-=e,!d&&(this.index(a)>this.index(b)||this.inTail)&&this.tail?(c=this.rtl&&!this.vertical?c-this.tail:c+this.tail,this.inTail=!0):this.inTail=!1,-c},_update:function(b){var c,d=this,e={target:this._target,first:this._first,last:this._last,visible:this._visible,fullyvisible:this._fullyvisible},f=this.index(b.first||e.first)= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "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" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "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/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - 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 ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - 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( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - 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 + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "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); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "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 name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "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 ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "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() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // We once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android<4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return 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 ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Support: Firefox, Chrome, Safari -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE9 - option: [ 1, "" ], - - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return 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 && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optimization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "